<$transclude mode="block" tiddler=booklogsinfo/>

<<<
人无癖不可与交,以其无深情也;人无疵不可与交,以其无真气也。
<<<
上句是张岱在[[陶庵梦忆]]“祁止祥癖”篇所述祁止祥之语。张岱的这位老友,其癖其好也多,“余友祁止祥有书画癖,有蹴鞠癖,有鼓钹癖,有鬼戏癖,有梨园癖。.....止祥去妻子如脱屣耳,独以娈童崽子为性命,其癖如此。" 后人对祁止祥本人没有多少提及,而张岱对他的评语却被反复引用,甚至成了一块文人赞誉他人的遮丑布。

最近在[[酝酿戒烟|戒烟录]]。昨晚看[[雅记清词写流韵]],温一如忆顾曼殊一文《曼殊逸事》载顾也是个烟鬼:

<<<
曼殊言动,不假矫揉,自然诙诡;每令人捧腹解颐,有东方淳于之风。性嗜雪茄,初抵东京时,一日囊空,至敲落金齿,付质以买吸之。每于批欧美小说中,有雪茄者,辄批云:“雪茄!又是雪茄!”
<<<

顾曼殊可真是个瘾君子,敲断牙齿为销魂。同为烟民,感同身受。而顾曼殊另一癖好则更奇:

<<<
曼殊虽亦善属诗文,要以作画为生平绝艺,着黑不多,清逸淡远,有倪云林之致。从不轻易落笔,虽极贫乏,只有鬻小说而未鬻画。据知友之推测,欲求之者,须资助其遨游名山大川,并伴以美人,始可着手。其代价固非世之鬻画者可比。
<<<

与顾曼殊嗜烟比,而民国时期另外一位老兄徐訏在[[民风野趣幽然醉]]上有《论烟》篇,不仅对抽烟大为赞美,更把抽烟上升到了理论、艺术和人类进步的高度:


<<<
假如把文明史与吸烟发明之日期相较,立刻可以看出人类文明的进步,在吸烟史前是何等迟缓?而在史后是何等的迅速呢?

用功一点人可以去算计,科学家哲学家文学家政治家外交家等,凡是有才干有能力的人,不吸烟者要是有一千分之一,那才是咄咄怪事!女子在文化上少贡献,我不相信会不是少吸烟之故,女诗人李清照如果肯多多吸烟,那她的诗词必能更光耀万丈,不会只取材于香炉之烟雾上面的!

这还不够,''烟在一方面是助人以进取的精神,他方面则是给人以疲倦的安慰。''她在一方面是起科学的作用,他方面是收艺术的功效的。凡名利情场上的失意者,可以此为安慰,而得意者也可以助其得意。

吸烟是艺术的事情,但能享受这项艺术,必需讲究吸烟的艺术。
<<<

我实在佩服这位老兄升华抽烟行为,为人类的欲望找出诸多借口。这是真爱。不过搁在现代社会,这老兄的日子也恐怕不好过吧。不管怎么样,抽烟是一件私人事情,个人之嗜好无伤大雅,随兴而为。

走笔到此,似乎现在我有点理解浪人张岱为什么写下”''人无癖不可与交,以其无深情也;人无疵不可与交,以其无真气也''“这句话了。''物与类聚,人与群分''。“同明相照,同类相求。云从龙,风从虎,圣人作而万物睹。”<<footnote "[1]" “同明相照,同类相求。”“云从龙,风从虎,圣人作而万物睹。”伯夷、叔齐虽贤,得夫子而名益彰。颜渊虽笃学,附骥尾而行益显。--司马迁《史记·伯夷列传》">> 张岱本身也是个性情中人,怎么会不给同好说几句好话那,试看张岱自为墓志铭便知:

{{2017年11月14日 下午 08:52:39}}

还有那位晚明才子李渔,嬉笑怒骂,活得精致而又潇洒不羁,爱美婢,喜精馔,着美服,耽戏剧。如若二人生在同一时期,相信彼此也能”鬼混“在一起吧。

突然忆起顾曼殊也是个华服爱好者,尤其喜欢西服(在民国时期,是很时髦的做派):

<<<
(顾曼殊)盖以华贵为乐也。件好着西服,并甚讲究。尝在天蟾舞台看戏,隔座为前清财阀某眷属,艳装盛服,备极豪奢。吸水烟,吹灰屑落于曼殊外衣上,乃夷然置之,任其延烧,盖以为不宜拂美人之意也。
<<<

顾曼殊真奇人也,甘愿忍痛自焚而不愿拂美人之意。美人重于华服,涵养和优雅等同生命。真爱也!

2018年04月11日周三下午03:15:06

[[“爱美人喜华服耽美食好文艺”之二]]

<$transclude mode="block" tiddler=bookkeywords/>
!!! 吕克尔:《诠释的冲突》

<<<
“所有诠释学的目的,都是要征服存在于经典所属的过去文化时代与诠释者本身之间的疏远和距离。借由克服这距离,使自己与经典的时代合一,注释者才能够使其意义为自己所有:他使陌生成为熟悉,也就是说,他使它属于自己。这正是他透过理解他者而得到他所追求之自我理解的成长。因此,每一诠释学,无论外显地或隐含地,都是经由理解他者而有的自我理解”(14—15页)。
<<<
软科学中大部分都是诠释学。最典型的代表如红学,最近又热起了对《金瓶梅》的解读,各路妖魔鬼怪见仁见智一通解释。


!!! 陈冠中:《盛世》
<<<
“在过去二十多年的官方论述中,甚少提到一九八九年,好像只要不提,它就不存在,为免惹事,民间的论述往往也避而不谈整个八九年,连追忆八十年代的话题,也是到八八年就戛然而止。所以有人说笑,说在中国,一九八八年过后,就到一九九○年了”,下面接着说“一年不见了,失踪了”,这一年的失踪,和二十八天的失踪,其实是一回事儿(208页)。
<<<

难得一见的论述。

追寻失踪的时间,是为了“打捞”记忆。

葛兆光的评论更是大胆,居然“堂而皇之”的出现在国内正规出版物上,罕见。


<<<
当历史被遗忘,连续性便不再存在,于是合理性不需要“前尘往事”的证明,人们如何理解这个国家当下的政治?当记忆被删减,罪恶总是不被惩罚,合法性也不再被“连带责任”所牵累,政权如何会有反省和内疚的可能?中国始终政治权力高于一切,政治权力永远有“治外”的“豁免权”,一切进退左右、合纵连横,都由政治决定,尽管在某种国际背景下它可以超越全球波澜,可以免于金融海啸、逃脱国际舆论,但一旦有国家政治的优先需要,什么宪政、制度、法律、民意,就全无分量,如此,民众如何能够有民主、自由和尊严?
<<<

2019年03月13日周三下午11:52:35
!!! 雷蒙·阿隆:《知识分子的鸦片》
通常的赞扬革命的观念中,有两个基点:一是只有吻合左派意识形态中的人性、解放、自由与人人平等,才可以冠以“革命”这一个庄严的名词;二是革命只有在推翻既存的、为权势者所控制的体制,建立新体制,才能算是革命(46页)

“革命”常常成为知识分子的鸦片,就是因为它有时也表达一种“怀旧情绪,只要社会依旧不完美,而且人们满怀热情尝试去改变它,这种怀旧仍然会长存。……革命的神话为满怀乌托邦思想的知识分子提供逃避的避难所,它变成介之于真实与理想之间的一位神秘且难于逆料的调解者”(79页)。

由于对这种绝对的信仰,马克思主义使很多知识分子进入一种类似基督徒的宗教经验:“古老的信仰以一种拟似的科学形式复活,这对弃绝了信仰的心灵自然有其吸引力。宗教传说可以视为真理的预显,正如现代观念可以视为古老迷信之遗物”(81页);“无产阶级与政党的勇猛斗士,犹如早期的基督徒,期待一种新世界的来临。由于无产阶级没有剥削其同胞,所以依旧纯洁且心怀怜悯,孕育着人性新机的阶级正起而反抗腐朽的过去”(104页)。

!!! 许烺光:《驱逐捣蛋者——魔法、科学与文化》

宗教与科学是人类需要的双胞胎,宗教与魔法之间也并不存在截然的分界。 许烺光说:''“美国拓荒者们的箴言是,‘向上帝祷告,保持你的火药干燥’。''纵观人类历史及其著述,这样的箴言的确多少表达了过去一切民族的思想精神,它或许还要贯穿未来的所有文化。”(161页)

!!! 彼得·柏克:《知识社会史——从古腾堡到狄德罗》

彼得·柏克在《论犹太人在近现代欧洲知识界的优胜地位》中指出,犹太人何以在近现代尤其是十九世纪欧洲知识界的创造力是登峰造极的:

<<<
“这些犹太知识分子因与周遭文化中认为理所当然的想法保持距离,遂能有知识上的创新能力”(中译本,30页)。

“犹太知识分子位处于两个文化世界的边界上,这个位置鼓励怀疑和独立,使他们容易成为另一位社会学家意大利人巴烈图(Pareto)所谓的知识‘思索者’”(76页)。
<<<

2019年03月08日周五下午03:13:39
本周假疫苗事件成为社会关注焦点,以迅雷不及掩耳之势盖过了P2P公司跑路和中美贸易的热度。类似的事情还会继续发生,这不是第一起事件,也不是最后一起。因为这个社会没有底线。一个社会的底线在哪里?不在新闻联播里,也不在两会提案中,它在`人生的两头 --- 生和死,对生的呵护,对死的尊重`。一个社会有人类屠杀般的计划生育政策,有农村老人对生的绝望和对死的渴望,有对父母、师长和老人的举报和批斗(文革),可想而知这个社会基本上是无底的,没有下限。但是一定有上限,这个上限(或上线)就是那条看不见但始终悬在每个人头上的那条“红线”,就是每日里你说话、网上发表言论等发声时不自觉进行自我审查的自我政治意识线,没有人告诉你该怎么做,和不应该做什么,但等你做了什么的时候一定有人出来搜捕你,告诉你做错了什么。至于说什么时候告诉你,或者说什么时候请你喝茶,没有标准,一是看“老大哥”的心情,愿意不愿意搭理您,二是看这事对“老大哥”是不是有利。举例来说,同样是聚会游行,当名义是“抵制日货”(或者抗议美国单边制裁)的时候是有可能可行的,但当名义是抗议暴力拆迁或者关怀弱势群体的时候,哪怕只有三五十个人,一定是不可行的。

可笑的是,`我们现在自觉和不自觉的已经把令人敬畏的“老大哥”装在了口袋里。`不管你在哪里,做什么,和什么人在一起,你都事无巨细的告诉了“老大哥”。早在上世纪早期(20年代),人们已经开始担心信息革命计算机和通信技术会导致乔治·奥威尔的反乌托邦小说《1984》所描述的那种集控现象的产生。100年后,我们反而把“老大哥”请到家里来了。人类是多么的不长进啊(至少是在中国)。

在《文明及其缺陷》(Civilization and Its Discontents)中,弗洛伊德指出人类每向前迈出一大步,都要付出某种代价——`牺牲旧有的安全感,同时制造并加剧某种新的紧张。`100年前人们的紧张,延漫到了今天,紧张依然在膨胀和加剧。经济学里有一个“看不见的手”指挥着货币的流动达到平衡。而政治和科技一旦联姻,有没有一只“看不见的手”存在?使政治和科技达到一种平衡?使人们从新技术带来的紧张重回安全感。我想这种手是存在的,至少我个人认为在一些西方国家是存在的。这也是科技哲学的主要命题之一。前乔治亚理工大学研究技术史教授Melvin Kranzberg(已故)曾经在30年前提出过6条技术定理(见此   <$appear show="open {{$:/core/images/chevron-right}}" hide="{{$:/core/images/chevron-left}} close" $state="image-buttons">


# 技术不好也不坏;也不是中性的。
# 发明是需求之母。
# 技术都是成套出现,或大或小。
# 虽然技术可能是引发诸多公共问题的主因,但非技术因素在技术政策决定中占据主导。
# 历史相关性普遍存在,但技术的历史相关性最强。
# 技术是深受人为因素影响的一种活动。
</$appear>),其中有两条是:虽然技术可能是引发诸多公共问题的主因,但非技术因素在技术政策决定中占据主导;技术是深受人为因素影响的一种活动。这个人为因素和非技术因素就是政治。而在中国,政治(政治制度和法律)是严重滞后于技术的,即便是灵活的法律或法规也是被技术牵着鼻子走,所以弗洛伊德老先生所说的技术进步所制造并加剧某种新的紧张,只有这种紧张膨胀到爆裂,才会重拾旧有的安全感。这非常符合中国人哲学,不破不立,枪打出头鸟,允许一部分先富起来,稳定压倒一切等等充满了东方哲学的行为准则。

德国哲学家尼采说,`我们只需一个生存的目的,就可以找到一千个求生的方法`。是的,这就是人类的苟且和不长进。

2018年07月24日周二上午01:07:07
后宫戏风云又起,《延禧攻略》大热,网上鄙视链又泛涟漪。搁前些年,我也会对热衷这类宫斗戏的看客嗤之以鼻,这是一种狭隘的价值观意识流作祟。前些年我追《越狱》也不亦乐乎,每周二凌晨爬起来与美国同步观看。大众娱乐或者大众消费最大的特点是普世性,作为一种娱乐无可厚非。读书也一样,有读无类,读《资本论》的不一定比读《故事会》的人高尚多少。

之所以提起《延禧攻略》,是因为今天翻看《齐如山回忆录:清宫史话》,其中一章详细介绍了清代皇宫内务府的职能、人事、个中机枢和轶事掌故。书中提到《延禧攻略》的”延禧宫“(电视剧我没有看,我不知道名字中的延禧是不是就是指的是紫禁城中的延禧宫),从中可以看出一些历史纪事。

''延禧宫为什么会频繁发生火宅?''

书中其中一部分这样写道:


<<<
清朝紫禁城内,所有办公的机构,都归阉人太监所管,不归阉人所管者只有三个机关:一是内务府,二是太医院,三是如意馆.......在外西路以西,尚没什么大的建筑,有些树木及小房子,为太监的家眷所居。这是使内务府最头疼的地方,因为此处住的人很多,都是乡下来的,多的时候,到过四五千人,虽然都可以出入神武门,但总不十分方便,且路也颇远,所以里边有小茶馆、小饭铺、宝局(赌场)、烟馆等等的组织。家家自己做饭,每到饭前,炊烟缕缕袅袅于树林之中,倒是够一幅图画,但是虽在宫墙之外,也有时可发生火警。不但这些种组织是私设的,就连这些人,也有十之七八是不通天的,皇上是不知道的,可是内务府不敢严行禁止,因为他们都与太监有关系,内务府怕得罪太监,便不肯过问,然倘闹出事来,则仍是内务府的责任。据内务府的档案说,道成年间,一次由此处驱逐出去了三千多人,由此足见紫禁城以内,也相当的乱了.....总之是宫墙之外,紫禁城之内,所有工作人员,小工差役人等,都归内务府所管,这种人员,既非内监,又非兵丁,统名之曰苏拉,满洲话闲散的意思。我们同文馆的听差等等,也都叫做苏拉。
<<<


从齐如山的描述可以看出,容易着火的是紫禁城的“城中村”,或者叫做“紫禁城的贫民区”。看起来历史从来也没有怎么改变过,现今的“城中村”或“贫民区”照样遭到驱赶,也是以消防的名义,被驱赶者依然是做牛做马的社会底层。底层有权利可言吗?

紫禁城中的百年烂尾楼

延禧宫在明代既建,后着火重建,直到清代皇帝走出紫禁城这个皇城中的唯一西洋建筑也没有建成。《齐如山回忆录:清宫史话》中关于“内务府的发财”一节中有这样关于皇城中的西洋建筑的“悲催”记录:


<<<
西后虽然这些年皇宫内院,但没摸着住过洋楼,听说外国的洋楼,都好得不得了,所以也想盖一所洋楼,但此已在光绪庚子以后,各省的财政,固然都已很拮据,但西后之命令,也没有从前皇帝那样大的力量,这种事情,她固然不好意思冠冕堂皇的对大臣说,她也有点不敢,她怕吃了碰,于面子大不好看,只好同内务府嘀咕。这也是内务府出的主意,南苑俗称南海子,在明朝为皇帝游猎之所,在清朝初年,亦为皇帝惟一的避暑之处,所以康熙皇帝,每年在此歇夏。雍正以后,有了圆明园,各皇帝才不到此,仍然是专为养麋鹿野兽的处所,不许耕种。这个南苑,便归内务府所管。他便联络太监跟西后说,南苑本为养野兽预备狩猎之处,自光绪十几年,定河决口,围墙坍倒,所有野兽,尽行跑走,南苑早已无用,何不把这一大片地,卖给民间耕种,得款用以修盖洋楼,不但宫中方便,化无用为有用,民间亦感德不浅。

内务府便联合了森昌木厂,共同筹划.......结果周围一百一十多里的一片沃土,卖出之后,所得的款,只盖了几间狗洞式的洋楼,而且款项还是不够(大部分都被层层贪污掉了)。
<<<


这种“卖地求荣”真是末世气象,“眼看它起高楼,眼看它延宾朋,眼看它楼塌了”。卖地求荣也是当朝地方政府“一大政绩”,有些地方政府似乎已经出现严重负债,无以为继的地步了。

顺便看一下前清末世政府采购的惊人案例:


<<<
光绪大婚的时候,这当然是内务府最发财的机会。吾乡有一位郭先生,正在给一位内务府大臣家教家馆。有几位绣工,找了郭先生说,你的东家赶上这种发大财的差使,你不可以跟他说一说,谋点小事情赚几个钱吗?郭君也很以为然,见不着东家,就跟门房里管家说了说,管家替他回上去,并且把先生认识刺绣工人这句话,也说明了。该大臣很好,倒很想提拔提拔老夫子,便命管家说,去对老夫子说,他既认识绣工人员,当然是以做点刺绣活为就近,但一切刺绣的工作,都归苏州、杭州等处之织造官承办,如今幸尔有零碎小件不能齐备,就使老夫子揽一洞房门帘去绣可也。不过洞房门帘,是多数人看得见的,必须绣得好,方能交差作脸。务必用最好的绣线,最好的绣工,要能比江南绣得好才好,至于门帘的缎子,则可由库中领去。郭君一一如命,先画样子,交上来看妥后,才交人去绣。不怕花钱,自然工料都很好,共用了本钱五十余两银子,这个数字,在彼时就算相当的大。绣好之后,交上去一看很满意,说让他们开帐吧,并嘱郭君,可以多开一点。郭君同几个绣工,斟酌着开了五百两银子,把帐单送到门房,管家一看,说太少,可以多开点儿,拿回来改开,大家说是得多开,因为门房里也得要一份,遂开了一千两,门房把帐单呈上去,该大臣说,再让他多开点,于是大胆就开了五千两。大家以为这个数字未免太大,既至交上去,该大臣乐了一乐,说不开展,提起笔来,改成了两万五千两。到库上如数领下,以五千两交给郭君,其余就归他自己了。郭君以一千两谢门房,门房诸人还是看不起这一笔,以为多少没有什么大关系,郭君自己得了三千两,几个工人分了一千两,都是心满意足,以为发了财。本来从前念书人,进了秀才补了廪生,一辈子果能剩下一千两银子,那就真得算是发财,何况三千两呢?

<<<

从最初的50两申请,到最后的25000两拨付,整整翻了500倍。太黑了!这就是所谓的政府采购。

再来说一下齐如山这本书吧。这是看齐如山的第二本书了(第一本是《[[中国馔馐谭]]》),作为清朝遗老,他写这样的题材一定是后无来者的,因为作者不仅亲临其境,感同身受,一些还是作者的自身经历写就。看这样的书好过于那些故弄玄虚什么大清秘史之类,那些都是资料堆砌、子虚乌有、胡说八道。

2018年08月26日周日下午07:54:46
随着家里养的植物和看的植物学方面的书越来越多,对植物及其植物学方面的兴趣就越来越浓厚,虽有志于此的观察和记录,乃成“Natural history”之聚合。

万物皆有其理,与植物的对话,观其貌,究其道,恒以时间,乃生命之一世。观察植物,察其微,一花一世界;记录植物,以静载动,一木一浮生。人与草木存于天地间,生命无异,相克相生,殊途同归,植物志,乃生命之志也。

[img width=60% [https://cl.ly/19479b222df8/38626.jpg]]

//芬兰艺术家Christoffer Nicodemus Relander作品//

就植之理,可参唐柳宗元之《种树郭橐驼传》:


<<<
郭橐驼,不知始自何名。病偻,癃然伏行,有类橐驼者,故乡人号之“驼”。驼闻之曰:“甚善,名我固当。”因舍其名,亦自谓橐驼云。其乡曰丰乐乡,在长安西。驼业种树,凡长安豪富人为观游及卖果者,皆争迎取养。视驼所种树,或移徙,无不活,且硕茂蚤实以蕃。他植者虽窥伺效慕,莫能如也。
有问之,对曰:“橐驼非能使木之寿且孳也,以能顺木之天,以致其性焉耳。凡植木之性,其本欲舒,其培欲平,其土欲故,其筑欲密。既然已,勿动勿虑,去不复顾。其莳也若子,其置也若弃,则其天者全而其性得矣。故吾不害其长而已,非有能硕而茂之也;不抑耗其实而已,非有能蚤而蕃之也。他植者则不然,根拳而土易,其培之也,若不过焉则不及。苟有能反是者,则又爱之太恩,忧之太勤,旦视而暮抚,已去而复顾。甚者爪其肤以验其生枯,摇其本以观其疏密,而木之性日以离矣。虽曰爱之,其实害之;虽曰忧之,其实仇之,故不我若也。吾又何能为矣哉?”
<<<

就植之道,可参郭橐驼之悟也:


<<<
问者曰:“以子之道移之官理可乎?”驼曰:“我知种树而已,理,非吾业也。然吾居乡,见长人者好烦其令,若甚怜焉,而卒以祸。旦暮吏来而呼曰: ‘官命促尔耕,勖尔植,督尔获。蚤缲而绪,蚤织而缕,字而幼孩,遂而鸡豚。’鸣鼓而聚之,击木而召之。吾小人具飧餐以劳吏,且不得暇,又何以蕃吾生安吾性耶?故病且怠。若是,则与吾业者其亦有类乎?”
问者曰:“嘻,不亦善夫!吾问养树,得养人术。”传其事,以为官戒也。
<<<

!This is an encrypted Tiddler
!This is an encrypted Tiddler
.tc-tiddler-body {
clear: both;
}

.float-right {
float:right;
}

/* LINKS */

a{
	-webkit-transition: 200ms;
    -moz-transition: 200ms;
    -o-transition: 200ms;
    transition: 200ms;
}

a.tc-tiddlylink-shadow {
color:#567;
font-weight:normal;
}

a.tc-tiddlylink-resolves.tc-tiddlylink-shadow {
font-weight:bold;
}

.redirected {
color:#dd1144;
}

.tb-links dd span:not(:last-child):after{
content:", ";
}

.tb-links > span:not(:last-child):after{
content:", ";
}

.tb-links > a:not(:last-child):after{
content:", ";
}

/* TITLE */




/* TAGLIST */




/* TIMELINE */



/* TABLES */

tr, td, th {
vertical-align:top;
}

.no-border,
.no-border th,
.no-border tr,
.no-border td {
border:0;
}


/* DEFINITIONS */

dl:not(.tb5-markup){
margin:0;
}

dd{
margin-left:14px;
}

dd:before{
content: "» ";
}

.no-before:before{
content:none;
}


/* SLIDERS */




/* LISTS */

ol ol {
list-style-type: lower-alpha;
}

ol ol ol{
list-style-type: decimal;
}

.tc-tiddler-body .tc-tag-list-item,
.tc-tiddler-body .tc-tag-label{
margin:0;
}

.tc-search-results {
padding-top: 0;
}



/* INFO BOXES */

.note {
padding: 10px;
background: #fcfcfc;
border-radius: 15px;
border: 1px solid #ccc;
}

.warn,
.warn a {
color: #dd1144;
}

.summary {
font-style:italic;
color:grey;
}

.tb-thumbs{
width: 160px;
margin: 0 10px 10px 0;
}

.grey-svg svg{
fill:lightgrey;
height:12px !important;
}

.grey-svg:hover svg{
fill:grey;
}
\define a:target()
<$list filter="[regexp:alink<regexp>limit[1]]"><$link><<target>></$link></$list>
\end

\define a:(target)
<$set name="regexp" value="\|$target$\|(?i)"><$set name="target" value="$target$"><<a:target>></$set></$set>
\end

\define alink(target) 
<<a: "$target$">> 
\end
Built from branch 'tiddlywiki-com' at commit f49c55fe3c6c250fb46372b43d6b8f73fa532790 of https://github.com/Jermolene/TiddlyWiki5.git at 2019-08-09 14:49:54 UTC
no
 ?
[!is[system]![㋡]![Reading Logs]![TagCloud]]
rizi-me
https://rizi.me/#
TableOfContents
no
hide
hide
hide
hide
hide
no
below
bottom
no
Journal
<$transclude mode="block" tiddler=booklogsinfo/>


<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss
hide
hide
show
show
show
show
hide
hide
hide
no
yes
yes
yes
2
shift-cmd-L
yes
no
tc-btn-invisible
no
hide
{
    "tiddlers": {
        "$:/Acknowledgements": {
            "title": "$:/Acknowledgements",
            "text": "TiddlyWiki incorporates code from these fine OpenSource projects:\n\n* [[The Stanford Javascript Crypto Library|http://bitwiseshiftleft.github.io/sjcl/]]\n* [[The Jasmine JavaScript Test Framework|http://pivotal.github.io/jasmine/]]\n* [[Normalize.css by Nicolas Gallagher|http://necolas.github.io/normalize.css/]]\n\nAnd media from these projects:\n\n* World flag icons from [[Wikipedia|http://commons.wikimedia.org/wiki/Category:SVG_flags_by_country]]\n"
        },
        "$:/core/copyright.txt": {
            "title": "$:/core/copyright.txt",
            "type": "text/plain",
            "text": "TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)\n\nCopyright (c) 2004-2007, Jeremy Ruston\nCopyright (c) 2007-2020, UnaMesa Association\nAll rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are met:\n\n* Redistributions of source code must retain the above copyright notice, this\n  list of conditions and the following disclaimer.\n\n* Redistributions in binary form must reproduce the above copyright notice,\n  this list of conditions and the following disclaimer in the documentation\n  and/or other materials provided with the distribution.\n\n* Neither the name of the copyright holder nor the names of its\n  contributors may be used to endorse or promote products derived from\n  this software without specific prior written permission.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 'AS IS'\nAND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\nIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\nDISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\nFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\nDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\nSERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\nCAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\nOR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\nOF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
        },
        "$:/core/icon": {
            "title": "$:/core/icon",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path d=\"M64 0l54.56 32v64L64 128 9.44 96V32L64 0zm21.127 95.408c-3.578-.103-5.15-.094-6.974-3.152l-1.42.042c-1.653-.075-.964-.04-2.067-.097-1.844-.07-1.548-1.86-1.873-2.8-.52-3.202.687-6.43.65-9.632-.014-1.14-1.593-5.17-2.157-6.61-1.768.34-3.546.406-5.34.497-4.134-.01-8.24-.527-12.317-1.183-.8 3.35-3.16 8.036-1.21 11.44 2.37 3.52 4.03 4.495 6.61 4.707 2.572.212 3.16 3.18 2.53 4.242-.55.73-1.52.864-2.346 1.04l-1.65.08c-1.296-.046-2.455-.404-3.61-.955-1.93-1.097-3.925-3.383-5.406-5.024.345.658.55 1.938.24 2.53-.878 1.27-4.665 1.26-6.4.47-1.97-.89-6.73-7.162-7.468-11.86 1.96-3.78 4.812-7.07 6.255-11.186-3.146-2.05-4.83-5.384-4.61-9.16l.08-.44c-3.097.59-1.49.37-4.82.628-10.608-.032-19.935-7.37-14.68-18.774.34-.673.664-1.287 1.243-.994.466.237.4 1.18.166 2.227-3.005 13.627 11.67 13.732 20.69 11.21.89-.25 2.67-1.936 3.905-2.495 2.016-.91 4.205-1.282 6.376-1.55 5.4-.63 11.893 2.276 15.19 2.37 3.3.096 7.99-.805 10.87-.615 2.09.098 4.143.483 6.16 1.03 1.306-6.49 1.4-11.27 4.492-12.38 1.814.293 3.213 2.818 4.25 4.167 2.112-.086 4.12.46 6.115 1.066 3.61-.522 6.642-2.593 9.833-4.203-3.234 2.69-3.673 7.075-3.303 11.127.138 2.103-.444 4.386-1.164 6.54-1.348 3.507-3.95 7.204-6.97 7.014-1.14-.036-1.805-.695-2.653-1.4-.164 1.427-.81 2.7-1.434 3.96-1.44 2.797-5.203 4.03-8.687 7.016-3.484 2.985 1.114 13.65 2.23 15.594 1.114 1.94 4.226 2.652 3.02 4.406-.37.58-.936.785-1.54 1.01l-.82.11zm-40.097-8.85l.553.14c.694-.27 2.09.15 2.83.353-1.363-1.31-3.417-3.24-4.897-4.46-.485-1.47-.278-2.96-.174-4.46l.02-.123c-.582 1.205-1.322 2.376-1.72 3.645-.465 1.71 2.07 3.557 3.052 4.615l.336.3z\" fill-rule=\"evenodd\"/></svg>"
        },
        "$:/core/images/add-comment": {
            "title": "$:/core/images/add-comment",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-add-comment tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 56H36a8 8 0 100 16h20v20a8 8 0 1016 0V72h20a8 8 0 100-16H72V36a8 8 0 10-16 0v20zm-12.595 58.362c-6.683 7.659-20.297 12.903-36.006 12.903-2.196 0-4.35-.102-6.451-.3 9.652-3.836 17.356-12.24 21.01-22.874C8.516 94.28 0 79.734 0 63.5 0 33.953 28.206 10 63 10s63 23.953 63 53.5S97.794 117 63 117c-6.841 0-13.428-.926-19.595-2.638z\"/></svg>"
        },
        "$:/core/images/advanced-search-button": {
            "title": "$:/core/images/advanced-search-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-advanced-search-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M74.565 87.985A47.776 47.776 0 0148 96C21.49 96 0 74.51 0 48S21.49 0 48 0s48 21.49 48 48c0 9.854-2.97 19.015-8.062 26.636l34.347 34.347a9.443 9.443 0 010 13.36 9.446 9.446 0 01-13.36 0l-34.36-34.358zM48 80c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/><circle cx=\"48\" cy=\"48\" r=\"8\"/><circle cx=\"28\" cy=\"48\" r=\"8\"/><circle cx=\"68\" cy=\"48\" r=\"8\"/></g></svg>"
        },
        "$:/core/images/auto-height": {
            "title": "$:/core/images/auto-height",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-auto-height tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M67.987 114.356l-.029-14.477a4 4 0 00-2.067-3.494l-15.966-8.813-1.933 7.502H79.9c4.222 0 5.564-5.693 1.786-7.58L49.797 71.572 48.01 79.15h31.982c4.217 0 5.564-5.682 1.795-7.575L49.805 55.517l-1.795 7.575h31.982c4.212 0 5.563-5.67 1.805-7.57l-16.034-8.105 2.195 3.57V35.614l9.214 9.213a4 4 0 105.656-5.656l-16-16a4 4 0 00-5.656 0l-16 16a4 4 0 105.656 5.656l9.13-9.13v15.288a4 4 0 002.195 3.57l16.035 8.106 1.804-7.57H48.01c-4.217 0-5.564 5.682-1.795 7.574l31.982 16.059 1.795-7.575H48.01c-4.222 0-5.564 5.693-1.787 7.579l31.89 15.923 1.787-7.578H47.992c-4.133 0-5.552 5.504-1.933 7.501l15.966 8.813-2.067-3.494.029 14.436-9.159-9.158a4 4 0 00-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656l-9.185 9.184zM16 20h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
        },
        "$:/core/images/blank": {
            "title": "$:/core/images/blank",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-blank tc-image-button\" viewBox=\"0 0 128 128\"/>"
        },
        "$:/core/images/bold": {
            "title": "$:/core/images/bold",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-bold tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.146 51.81V21.87h26.353c2.51 0 4.93.21 7.26.628 2.33.418 4.392 1.165 6.185 2.24 1.793 1.076 3.227 2.57 4.302 4.482 1.076 1.913 1.614 4.363 1.614 7.35 0 5.379-1.613 9.263-4.84 11.653-3.227 2.39-7.35 3.586-12.37 3.586H41.146zM13 0v128h62.028a65.45 65.45 0 0016.762-2.151c5.438-1.434 10.278-3.645 14.52-6.633 4.244-2.988 7.62-6.842 10.13-11.563 2.51-4.721 3.764-10.308 3.764-16.762 0-8.008-1.942-14.85-5.826-20.527-3.884-5.677-9.77-9.65-17.658-11.921 5.737-2.75 10.069-6.275 12.997-10.577 2.928-4.303 4.392-9.681 4.392-16.135 0-5.976-.986-10.995-2.958-15.059-1.972-4.063-4.75-7.32-8.336-9.77-3.585-2.45-7.888-4.213-12.907-5.289C84.888.538 79.33 0 73.235 0H13zm28.146 106.129V70.992H71.8c6.095 0 10.995 1.404 14.7 4.212 3.705 2.81 5.558 7.5 5.558 14.073 0 3.347-.568 6.096-1.703 8.247-1.136 2.151-2.66 3.854-4.572 5.11-1.912 1.254-4.123 2.15-6.633 2.688-2.51.538-5.139.807-7.888.807H41.146z\"/></svg>"
        },
        "$:/core/images/cancel-button": {
            "title": "$:/core/images/cancel-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-cancel-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 76.314l-16.97 16.97a7.999 7.999 0 01-11.314 0c-3.118-3.118-3.124-8.19 0-11.313L52.686 65l-16.97-16.97a7.999 7.999 0 010-11.314c3.118-3.118 8.19-3.124 11.313 0L64 53.686l16.97-16.97a7.999 7.999 0 0111.314 0c3.118 3.118 3.124 8.19 0 11.313L75.314 65l16.97 16.97a7.999 7.999 0 010 11.314c-3.118 3.118-8.19 3.124-11.313 0L64 76.314zM64 129c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 1 0 29.654 0 65c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 17 64 17 16 38.49 16 65s21.49 48 48 48z\"/></svg>"
        },
        "$:/core/images/chevron-down": {
            "title": "$:/core/images/chevron-down",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-down tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.053 85.456a7.889 7.889 0 01-5.6-2.316L2.473 27.16a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0L64.05 66.344l50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.105 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.317z\"/><path d=\"M64.053 124.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.085 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></g></svg>"
        },
        "$:/core/images/chevron-left": {
            "title": "$:/core/images/chevron-left",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M47.544 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L66.656 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.105 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.317-5.595z\"/><path d=\"M8.931 64.053c0-2.027.77-4.054 2.316-5.6l55.98-55.98a7.92 7.92 0 0111.196 0c3.085 3.086 3.092 8.105 0 11.196L28.041 64.05l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.085-8.104 3.092-11.196 0l-55.98-55.98a7.892 7.892 0 01-2.316-5.595z\"/></g></svg>"
        },
        "$:/core/images/chevron-right": {
            "title": "$:/core/images/chevron-right",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-right tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M83.456 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196L64.344 63.95 13.963 13.567a7.92 7.92 0 010-11.195c3.086-3.085 8.105-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.317 5.595z\"/><path d=\"M122.069 63.947c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></g></svg>"
        },
        "$:/core/images/chevron-up": {
            "title": "$:/core/images/chevron-up",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-chevron-up tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M63.947 44.544c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 63.656l-50.382 50.382a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.317z\"/><path d=\"M63.947 5.931c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.105 3.092-11.196 0L63.95 25.041 13.567 75.423a7.92 7.92 0 01-11.195 0c-3.085-3.086-3.092-8.104 0-11.196l55.98-55.98a7.892 7.892 0 015.595-2.316z\"/></g></svg>"
        },
        "$:/core/images/clone-button": {
            "title": "$:/core/images/clone-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-clone-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M32.265 96v24.002A7.996 7.996 0 0040.263 128h79.74a7.996 7.996 0 007.997-7.998v-79.74a7.996 7.996 0 00-7.998-7.997H96V48h12.859a2.99 2.99 0 012.994 2.994v57.865a2.99 2.99 0 01-2.994 2.994H50.994A2.99 2.99 0 0148 108.859V96H32.265z\"/><path d=\"M40 56h-7.993C27.588 56 24 52.418 24 48c0-4.41 3.585-8 8.007-8H40v-7.993C40 27.588 43.582 24 48 24c4.41 0 8 3.585 8 8.007V40h7.993C68.412 40 72 43.582 72 48c0 4.41-3.585 8-8.007 8H56v7.993C56 68.412 52.418 72 48 72c-4.41 0-8-3.585-8-8.007V56zM8 0C3.58 0 0 3.588 0 8v80c0 4.419 3.588 8 8 8h80c4.419 0 8-3.588 8-8V8c0-4.419-3.588-8-8-8H8zM19 16A2.997 2.997 0 0016 19.001v57.998A2.997 2.997 0 0019.001 80h57.998A2.997 2.997 0 0080 76.999V19.001A2.997 2.997 0 0076.999 16H19.001z\"/></g></svg>"
        },
        "$:/core/images/close-all-button": {
            "title": "$:/core/images/close-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-close-all-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M28 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L16.686 100 2.543 85.856a8 8 0 0111.313-11.313L28 88.686l14.144-14.143a8 8 0 0111.313 11.313L39.314 100l14.143 14.144a8 8 0 01-11.313 11.313L28 111.314zM28 39.314L13.856 53.457A8 8 0 012.543 42.144L16.686 28 2.543 13.856A8 8 0 0113.856 2.543L28 16.686 42.144 2.543a8 8 0 0111.313 11.313L39.314 28l14.143 14.144a8 8 0 01-11.313 11.313L28 39.314zM100 39.314L85.856 53.457a8 8 0 01-11.313-11.313L88.686 28 74.543 13.856A8 8 0 0185.856 2.543L100 16.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 28l14.143 14.144a8 8 0 01-11.313 11.313L100 39.314zM100 111.314l-14.144 14.143a8 8 0 01-11.313-11.313L88.686 100 74.543 85.856a8 8 0 0111.313-11.313L100 88.686l14.144-14.143a8 8 0 0111.313 11.313L111.314 100l14.143 14.144a8 8 0 01-11.313 11.313L100 111.314z\"/></g></svg>"
        },
        "$:/core/images/close-button": {
            "title": "$:/core/images/close-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M65.086 75.41l-50.113 50.113c-3.121 3.121-8.192 3.126-11.316.002-3.118-3.118-3.123-8.19.002-11.316l50.114-50.114L3.659 13.982C.538 10.86.533 5.79 3.657 2.666c3.118-3.118 8.19-3.123 11.316.002l50.113 50.114L115.2 2.668c3.121-3.121 8.192-3.126 11.316-.002 3.118 3.118 3.123 8.19-.002 11.316L76.4 64.095l50.114 50.114c3.121 3.121 3.126 8.192.002 11.316-3.118 3.118-8.19 3.123-11.316-.002L65.086 75.409z\"/></svg>"
        },
        "$:/core/images/close-others-button": {
            "title": "$:/core/images/close-others-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-close-others-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48zm0-16c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32zm0-16c8.837 0 16-7.163 16-16s-7.163-16-16-16-16 7.163-16 16 7.163 16 16 16z\"/></svg>"
        },
        "$:/core/images/copy-clipboard": {
            "title": "$:/core/images/copy-clipboard",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-copy-clipboard tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"33\" height=\"8\" x=\"40\" y=\"40\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"82\" rx=\"4\"/><rect width=\"17\" height=\"8\" x=\"40\" y=\"54\" rx=\"4\"/><rect width=\"33\" height=\"8\" x=\"40\" y=\"96\" rx=\"4\"/><rect width=\"12\" height=\"8\" x=\"40\" y=\"68\" rx=\"4\"/><path d=\"M40 16H24c-4.419 0-8 3.59-8 8a8.031 8.031 0 000 .01v95.98a8.03 8.03 0 000 .01c0 4.41 3.581 8 8 8h80a7.975 7.975 0 005.652-2.34 7.958 7.958 0 002.348-5.652v-16.016c0-4.414-3.582-7.992-8-7.992-4.41 0-8 3.578-8 7.992V112H32V32h64v8.008C96 44.422 99.582 48 104 48c4.41 0 8-3.578 8-7.992V23.992a7.963 7.963 0 00-2.343-5.651A7.995 7.995 0 00104.001 16H88c0-4.41-3.585-8-8.007-8H48.007C43.588 8 40 11.582 40 16zm4-1.004A4.001 4.001 0 0148 11h32c2.21 0 4 1.797 4 3.996v4.008A4.001 4.001 0 0180 23H48c-2.21 0-4-1.797-4-3.996v-4.008z\"/><rect width=\"66\" height=\"16\" x=\"62\" y=\"64\" rx=\"8\"/><path d=\"M84.657 82.343l-16-16v11.314l16-16a8 8 0 10-11.314-11.314l-16 16a8 8 0 000 11.314l16 16a8 8 0 1011.314-11.314z\"/></g></svg>"
        },
        "$:/core/images/delete-button": {
            "title": "$:/core/images/delete-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-delete-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(12)\"><rect width=\"105\" height=\"16\" y=\"11\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"28\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"8\" y=\"16\" rx=\"8\"/><rect width=\"88\" height=\"16\" x=\"8\" y=\"112\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"80\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"56\" y=\"16\" rx=\"8\"/><rect width=\"16\" height=\"112\" x=\"32\" y=\"16\" rx=\"8\"/></g></svg>"
        },
        "$:/core/images/done-button": {
            "title": "$:/core/images/done-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-done-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M42.26 111.032c-2.051.001-4.103-.78-5.668-2.345L2.662 74.758a8 8 0 01-.005-11.32c3.118-3.117 8.192-3.12 11.32.007l28.278 28.278 72.124-72.124a8.002 8.002 0 0111.314-.001c3.118 3.118 3.124 8.19 0 11.315l-77.78 77.78a7.978 7.978 0 01-5.658 2.343z\"/></svg>"
        },
        "$:/core/images/down-arrow": {
            "title": "$:/core/images/down-arrow",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-down-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.177 100.069a7.889 7.889 0 01-5.6-2.316l-55.98-55.98a7.92 7.92 0 010-11.196c3.086-3.085 8.105-3.092 11.196 0l50.382 50.382 50.382-50.382a7.92 7.92 0 0111.195 0c3.086 3.086 3.092 8.104 0 11.196l-55.98 55.98a7.892 7.892 0 01-5.595 2.316z\"/></svg>"
        },
        "$:/core/images/download-button": {
            "title": "$:/core/images/download-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-download-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\" class=\"tc-image-download-button-ring\"/><path d=\"M34.35 66.43l26.892 27.205a4.57 4.57 0 006.516 0L94.65 66.43a4.7 4.7 0 000-6.593 4.581 4.581 0 00-3.258-1.365h-8.46c-2.545 0-4.608-2.087-4.608-4.661v-15.15c0-2.575-2.063-4.662-4.608-4.662H55.284c-2.545 0-4.608 2.087-4.608 4.662v15.15c0 2.574-2.063 4.661-4.608 4.661h-8.46c-2.545 0-4.608 2.087-4.608 4.662a4.69 4.69 0 001.35 3.296z\"/></g></svg>"
        },
        "$:/core/images/edit-button": {
            "title": "$:/core/images/edit-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-edit-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M95.627 10.059l-5.656 5.657 11.313 11.313 5.657-5.656-11.314-11.314zm5.657-5.657l1.966-1.966c3.123-3.122 8.194-3.129 11.319-.005 3.117 3.118 3.122 8.192-.005 11.32l-1.966 1.965-11.314-11.314zm-16.97 16.97l-60.25 60.25a8.12 8.12 0 00-.322.342c-.1.087-.198.179-.295.275-5.735 5.735-10.702 22.016-10.702 22.016s16.405-5.09 22.016-10.702c.095-.096.186-.193.272-.292a8.12 8.12 0 00.345-.325l60.25-60.25-11.314-11.313zM35.171 124.19c6.788-.577 13.898-2.272 23.689-5.348 1.825-.573 3.57-1.136 6.336-2.04 16-5.226 21.877-6.807 28.745-7.146 8.358-.413 13.854 2.13 17.58 8.699a4 4 0 006.959-3.946c-5.334-9.406-13.745-13.296-24.933-12.744-7.875.39-14.057 2.052-30.835 7.533-2.739.894-4.46 1.45-6.25 2.012-19.46 6.112-30.77 7.072-39.597 1.747a4 4 0 10-4.132 6.85c6.333 3.82 13.754 5.12 22.438 4.383z\"/></g></svg>"
        },
        "$:/core/images/erase": {
            "title": "$:/core/images/erase",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-erase tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.087 127.996l63.015-63.015c6.535-6.535 6.528-17.115-.003-23.646L99.466 17.702c-6.539-6.538-17.117-6.532-23.646-.003L4.898 88.62c-6.535 6.534-6.528 17.115.003 23.646l15.73 15.73h39.456zm-34.95-7.313l-14.324-14.325c-3.267-3.268-3.268-8.564-.008-11.824L46.269 59.07l35.462 35.462-26.15 26.15H25.137z\"/></svg>"
        },
        "$:/core/images/excise": {
            "title": "$:/core/images/excise",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-excise tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 107.314l-2.343 2.343a8 8 0 11-11.314-11.314l16-16a8 8 0 0111.314 0l16 16a8 8 0 11-11.314 11.314L72 107.314v14.284c0 3.536-3.582 6.402-8 6.402s-8-2.866-8-6.402v-14.284zM0 40.007C0 35.585 3.59 32 8 32c4.418 0 8 3.588 8 8.007v31.986C16 76.415 12.41 80 8 80c-4.418 0-8-3.588-8-8.007V40.007zm32 0C32 35.585 35.59 32 40 32c4.418 0 8 3.588 8 8.007v31.986C48 76.415 44.41 80 40 80c-4.418 0-8-3.588-8-8.007V40.007zm48 0C80 35.585 83.59 32 88 32c4.418 0 8 3.588 8 8.007v31.986C96 76.415 92.41 80 88 80c-4.418 0-8-3.588-8-8.007V40.007zm-24-32C56 3.585 59.59 0 64 0c4.418 0 8 3.588 8 8.007v31.986C72 44.415 68.41 48 64 48c-4.418 0-8-3.588-8-8.007V8.007zm56 32c0-4.422 3.59-8.007 8-8.007 4.418 0 8 3.588 8 8.007v31.986c0 4.422-3.59 8.007-8 8.007-4.418 0-8-3.588-8-8.007V40.007z\"/></svg>"
        },
        "$:/core/images/export-button": {
            "title": "$:/core/images/export-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-export-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.003 128H119.993a7.984 7.984 0 005.664-2.349v.007A7.975 7.975 0 00128 120V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v56H16V56c0-4.418-3.59-8-8-8-4.418 0-8 3.58-8 8v64c0 4.418 3.59 8 8 8h.003zm48.62-100.689l-8.965 8.966c-3.125 3.125-8.195 3.13-11.319.005-3.118-3.118-3.122-8.192.005-11.319L58.962 2.346A7.986 7.986 0 0164.625 0l-.006.002c2.05-.001 4.102.78 5.666 2.344l22.618 22.617c3.124 3.125 3.129 8.195.005 11.319-3.118 3.118-8.192 3.122-11.319-.005l-8.965-8.966v61.256c0 4.411-3.582 8-8 8-4.41 0-8-3.582-8-8V27.311z\"/></svg>"
        },
        "$:/core/images/file": {
            "title": "$:/core/images/file",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-file tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M111.968 30.5H112V120a8 8 0 01-8 8H24a8 8 0 01-8-8V8a8 8 0 018-8h57v.02a7.978 7.978 0 015.998 2.337l22.627 22.627a7.975 7.975 0 012.343 5.516zM81 8H24v112h80V30.5H89c-4.418 0-8-3.578-8-8V8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"68\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"84\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"100\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/></svg>"
        },
        "$:/core/images/fixed-height": {
            "title": "$:/core/images/fixed-height",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fixed-height tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60 35.657l-9.172 9.171a4 4 0 11-5.656-5.656l16-16a4 4 0 015.656 0l16 16a4 4 0 01-5.656 5.656L68 35.657v57.686l9.172-9.171a4 4 0 115.656 5.656l-16 16a4 4 0 01-5.656 0l-16-16a4 4 0 115.656-5.656L60 93.343V35.657zM16 116h96a4 4 0 100-8H16a4 4 0 100 8zm0-96h96a4 4 0 100-8H16a4 4 0 100 8z\"/></svg>"
        },
        "$:/core/images/fold-all-button": {
            "title": "$:/core/images/fold-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M64.03 20.004c-2.05 0-4.102.78-5.667 2.344L35.746 44.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 22.348a7.986 7.986 0 00-5.663-2.346zM64.03 85.002c-2.05-.001-4.102.78-5.667 2.344l-22.617 22.617c-3.125 3.125-3.13 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.966 16.966 16.966c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.192-.005-11.319L69.687 87.346A7.986 7.986 0 0064.024 85z\"/></g></svg>"
        },
        "$:/core/images/fold-button": {
            "title": "$:/core/images/fold-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M64.03 25.004c-2.05 0-4.102.78-5.667 2.344L35.746 49.966c-3.125 3.124-3.13 8.194-.005 11.318 3.118 3.118 8.192 3.122 11.319-.005l16.965-16.965 16.966 16.965c3.124 3.125 8.194 3.13 11.318.005 3.118-3.118 3.122-8.191-.005-11.318L69.687 27.348a7.986 7.986 0 00-5.663-2.346zM64.005 67.379c-2.05 0-4.102.78-5.666 2.344L35.722 92.34c-3.125 3.125-3.13 8.195-.006 11.32 3.118 3.117 8.192 3.121 11.32-.006L64 86.69l16.965 16.965c3.125 3.125 8.195 3.13 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L69.663 69.723A7.986 7.986 0 0064 67.377z\"/></g></svg>"
        },
        "$:/core/images/fold-others-button": {
            "title": "$:/core/images/fold-others-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-fold-others tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" y=\"56.031\" rx=\"8\"/><path d=\"M86.632 79.976c-2.05 0-4.102.78-5.666 2.345L64 99.286 47.034 82.321a7.986 7.986 0 00-5.662-2.346l.005.001c-2.05 0-4.102.78-5.666 2.345l-22.618 22.617c-3.124 3.125-3.129 8.195-.005 11.319 3.118 3.118 8.192 3.122 11.319-.005l16.966-16.966 16.965 16.966a7.986 7.986 0 005.663 2.346l-.005-.002c2.05 0 4.102-.78 5.666-2.344l16.965-16.966 16.966 16.966c3.125 3.124 8.194 3.129 11.319.005 3.118-3.118 3.122-8.192-.005-11.319L92.289 82.321a7.986 7.986 0 00-5.663-2.346zM86.7 48.024c-2.05 0-4.102-.78-5.666-2.345L64.07 28.714 47.103 45.679a7.986 7.986 0 01-5.663 2.346l.005-.001c-2.05 0-4.101-.78-5.666-2.345L13.162 23.062c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L41.44 28.714l16.966-16.966a7.986 7.986 0 015.662-2.346l-.005.002c2.05 0 4.102.78 5.666 2.344l16.966 16.966 16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L92.358 45.679a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
        },
        "$:/core/images/folder": {
            "title": "$:/core/images/folder",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-folder tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.694 128H8C3.58 128 0 124.414 0 119.996V48.004C0 43.584 3.584 40 7.999 40H16v-8c0-4.418 3.578-8 8-8h32a8 8 0 018 8v8h40.001c4.418 0 7.999 3.586 7.999 8.004V59.83l-8-.082v-7.749A4 4 0 0099.997 48H56V36c0-2.21-1.793-4-4.004-4H28.004A4 4 0 0024 36v12H12.003A4 4 0 008 52v64a4 4 0 004.003 4h46.76l-3.069 8z\"/><path d=\"M23.873 55.5h96.003c4.417 0 7.004 4.053 5.774 9.063l-13.344 54.374c-1.228 5.005-5.808 9.063-10.223 9.063H6.08c-4.417 0-7.003-4.053-5.774-9.063L13.65 64.563c1.228-5.005 5.808-9.063 10.223-9.063zm1.78 8.5h87.994c2.211 0 3.504 2.093 2.891 4.666l-11.12 46.668c-.614 2.577-2.902 4.666-5.115 4.666H12.31c-2.211 0-3.504-2.093-2.891-4.666l11.12-46.668C21.152 66.09 23.44 64 25.653 64z\"/></g></svg>"
        },
        "$:/core/images/full-screen-button": {
            "title": "$:/core/images/full-screen-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-full-screen-button tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 8a8 8 0 018-8h32a8 8 0 110 16H16v24a8 8 0 11-16 0V8zM128 120a8 8 0 01-8 8H88a8 8 0 110-16h24V88a8 8 0 1116 0v32zM8 128a8 8 0 01-8-8V88a8 8 0 1116 0v24h24a8 8 0 110 16H8zM120 0a8 8 0 018 8v32a8 8 0 11-16 0V16H88a8 8 0 110-16h32z\"/></svg>"
        },
        "$:/core/images/github": {
            "title": "$:/core/images/github",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-github tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M63.938 1.607c-35.336 0-63.994 28.69-63.994 64.084 0 28.312 18.336 52.329 43.768 60.802 3.202.59 4.37-1.388 4.37-3.088 0-1.518-.056-5.55-.087-10.897-17.802 3.871-21.558-8.591-21.558-8.591-2.911-7.404-7.108-9.375-7.108-9.375-5.81-3.973.44-3.895.44-3.895 6.424.453 9.803 6.606 9.803 6.606 5.709 9.791 14.981 6.963 18.627 5.322.582-4.138 2.236-6.963 4.063-8.564-14.211-1.617-29.153-7.117-29.153-31.672 0-6.995 2.495-12.718 6.589-17.195-.66-1.621-2.856-8.14.629-16.96 0 0 5.37-1.722 17.597 6.57 5.104-1.424 10.58-2.132 16.022-2.16 5.438.028 10.91.736 16.022 2.16 12.22-8.292 17.582-6.57 17.582-6.57 3.493 8.82 1.297 15.339.64 16.96 4.102 4.477 6.578 10.2 6.578 17.195 0 24.618-14.966 30.035-29.22 31.62 2.295 1.98 4.342 5.89 4.342 11.87 0 8.564-.079 15.476-.079 17.576 0 1.715 1.155 3.71 4.4 3.084 25.413-8.493 43.733-32.494 43.733-60.798 0-35.394-28.657-64.084-64.006-64.084\"/></svg>"
        },
        "$:/core/images/gitter": {
            "title": "$:/core/images/gitter",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-gitter tc-image-button\" viewBox=\"0 0 18 25\"><path d=\"M15 5h2v10h-2zM10 5h2v20h-2zM5 5h2v20H5zM0 0h2v15H0z\"/></svg>"
        },
        "$:/core/images/globe": {
            "title": "$:/core/images/globe",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-globe tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M72.811 37.128v2.554c0 2.196.978 6.881 0 8.832-1.466 2.928-4.65 3.54-6.394 5.867-1.182 1.577-4.618 10.601-3.69 12.92 3.969 9.922 11.534 3.187 17.962 9.293.864.821 2.887 2.273 3.296 3.296 3.29 8.223-7.576 15.009 3.757 26.3 1.245 1.24 3.813-3.817 4.079-4.614.852-2.563 6.725-5.45 9.088-7.053 2.02-1.37 4.873-2.667 6.328-4.745 2.27-3.244 1.48-7.514 3.098-10.745 2.139-4.274 3.828-9.635 5.998-13.966 3.898-7.781 4.721 2.093 5.067 2.439.358.357 1.011 0 1.517 0 .094 0 1.447.099 1.516 0 .65-.935-1.043-17.92-1.318-19.297-1.404-7.01-6.944-15.781-11.865-20.5-6.274-6.015-7.09-16.197-18.259-14.954-.204.022-5.084 10.148-7.777 13.512-3.728 4.657-2.47-4.153-6.526-4.153-.081 0-1.183-.103-1.253 0-.586.88-1.44 3.896-2.306 4.417-.265.16-1.722-.239-1.846 0-2.243 4.3 8.256 2.212 5.792 7.952-2.352 5.481-6.328-1.997-6.328 8.56M44.467 7.01c9.685 6.13.682 12.198 2.694 16.215 1.655 3.303 4.241 5.395 1.714 9.814-2.063 3.608-6.87 3.966-9.623 6.723-3.04 3.044-5.464 8.94-6.79 12.911-1.617 4.843 14.547 6.866 12.063 11.008-1.386 2.311-6.746 1.466-8.437.198-1.165-.873-3.593-.546-4.417-1.78-2.613-3.915-2.26-8.023-3.625-12.128-.938-2.822-6.313-2.12-7.844-.593-.523.522-.33 1.792-.33 2.505 0 5.285 7.12 3.316 7.12 6.46 0 14.636 3.927 6.534 11.14 11.336 10.036 6.683 7.844 7.303 14.946 14.404 3.673 3.673 7.741 3.686 9.425 9.294 1.602 5.331-9.327 5.339-11.716 7.448-1.123.991-2.813 4.146-4.219 4.615-1.792.598-3.234.496-4.944 1.78-2.427 1.82-3.9 4.932-4.02 4.81-2.148-2.147-3.52-15.479-3.89-18.257-.588-4.42-5.59-5.54-6.986-9.03-1.57-3.927 1.524-9.52-1.129-13.761-6.52-10.424-11.821-14.5-15.35-26.292-.942-3.148 3.342-6.529 4.877-8.833 1.877-2.816 2.662-5.854 4.746-8.635C22.147 24.19 40.855 9.461 43.857 8.635l.61-1.625z\"/><path d=\"M64 126c34.242 0 62-27.758 62-62 0-34.242-27.758-62-62-62C29.758 2 2 29.758 2 64c0 34.242 27.758 62 62 62zm0-6c30.928 0 56-25.072 56-56S94.928 8 64 8 8 33.072 8 64s25.072 56 56 56z\"/></g></svg>"
        },
        "$:/core/images/heading-1": {
            "title": "$:/core/images/heading-1",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-1 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M14 30h13.25v30.104H61.7V30h13.25v75.684H61.7V71.552H27.25v34.132H14V30zm70.335 13.78c2.544 0 5.017-.212 7.42-.636 2.403-.424 4.576-1.13 6.52-2.12 1.942-.99 3.603-2.261 4.981-3.816 1.378-1.555 2.28-3.463 2.703-5.724h9.858v74.2h-13.25V53.32H84.335v-9.54z\"/></svg>"
        },
        "$:/core/images/heading-2": {
            "title": "$:/core/images/heading-2",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-2 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm119.52 75.684H74.85c.07-6.148 1.555-11.519 4.452-16.112 2.897-4.593 6.855-8.586 11.872-11.978a133.725 133.725 0 017.526-5.141 59.6 59.6 0 007.208-5.353c2.19-1.908 3.993-3.975 5.406-6.201 1.413-2.226 2.155-4.788 2.226-7.685 0-1.343-.159-2.774-.477-4.293a11.357 11.357 0 00-1.855-4.24c-.919-1.307-2.19-2.403-3.816-3.286-1.625-.883-3.745-1.325-6.36-1.325-2.403 0-4.399.477-5.989 1.431-1.59.954-2.862 2.261-3.816 3.922-.954 1.66-1.66 3.622-2.12 5.883-.46 2.261-.724 4.7-.795 7.314H76.23c0-4.099.548-7.897 1.643-11.395 1.095-3.498 2.738-6.519 4.93-9.063 2.19-2.544 4.857-4.54 8.002-5.989C93.95 30.724 97.606 30 101.775 30c4.523 0 8.303.742 11.342 2.226 3.039 1.484 5.494 3.357 7.367 5.618 1.873 2.261 3.198 4.717 3.975 7.367.777 2.65 1.166 5.176 1.166 7.579 0 2.968-.46 5.653-1.378 8.056a25.942 25.942 0 01-3.71 6.625 37.5 37.5 0 01-5.3 5.565 79.468 79.468 0 01-6.148 4.77 165.627 165.627 0 01-6.36 4.24 94.28 94.28 0 00-5.883 4.028c-1.802 1.343-3.374 2.738-4.717 4.187-1.343 1.449-2.261 2.986-2.756 4.611h36.146v10.812z\"/></svg>"
        },
        "$:/core/images/heading-3": {
            "title": "$:/core/images/heading-3",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-3 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm88.885 32.224c1.979.07 3.957-.07 5.936-.424 1.979-.353 3.745-.972 5.3-1.855a10.365 10.365 0 003.763-3.657c.954-1.555 1.431-3.463 1.431-5.724 0-3.18-1.078-5.724-3.233-7.632-2.155-1.908-4.929-2.862-8.32-2.862-2.12 0-3.958.424-5.513 1.272a11.318 11.318 0 00-3.869 3.445c-1.025 1.449-1.784 3.074-2.279 4.876a18.335 18.335 0 00-.636 5.565H75.381c.141-3.604.813-6.943 2.014-10.017 1.201-3.074 2.844-5.742 4.93-8.003 2.084-2.261 4.61-4.028 7.578-5.3C92.871 30.636 96.228 30 99.973 30a29.2 29.2 0 018.533 1.272c2.791.848 5.3 2.085 7.526 3.71s4.01 3.692 5.353 6.201c1.343 2.509 2.014 5.388 2.014 8.639 0 3.745-.848 7.014-2.544 9.805-1.696 2.791-4.346 4.823-7.95 6.095v.212c4.24.848 7.544 2.95 9.911 6.307s3.551 7.438 3.551 12.243c0 3.533-.707 6.696-2.12 9.487a21.538 21.538 0 01-5.724 7.102c-2.403 1.943-5.194 3.445-8.374 4.505-3.18 1.06-6.537 1.59-10.07 1.59-4.31 0-8.074-.618-11.289-1.855s-5.9-2.986-8.056-5.247c-2.155-2.261-3.798-4.982-4.929-8.162-1.13-3.18-1.731-6.713-1.802-10.6h12.084c-.141 4.523.972 8.286 3.34 11.289 2.366 3.003 5.917 4.505 10.652 4.505 4.028 0 7.402-1.148 10.123-3.445 2.72-2.297 4.081-5.565 4.081-9.805 0-2.897-.565-5.194-1.696-6.89a10.97 10.97 0 00-4.452-3.869c-1.837-.883-3.904-1.431-6.2-1.643a58.067 58.067 0 00-7.05-.212v-9.01z\"/></svg>"
        },
        "$:/core/images/heading-4": {
            "title": "$:/core/images/heading-4",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-4 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8 30h13.25v30.104H55.7V30h13.25v75.684H55.7V71.552H21.25v34.132H8V30zm76.59 48.548h22.471V45.9h-.212L84.59 78.548zm43.46 9.54h-9.54v17.596H107.06V88.088h-31.8V76.11l31.8-44.626h11.448v47.064h9.54v9.54z\"/></svg>"
        },
        "$:/core/images/heading-5": {
            "title": "$:/core/images/heading-5",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-5 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm77.755 1.484h38.372v10.812H92.765L88.95 61.164l.212.212c1.625-1.837 3.692-3.233 6.201-4.187 2.509-.954 5-1.431 7.473-1.431 3.675 0 6.96.618 9.858 1.855 2.897 1.237 5.335 2.968 7.314 5.194s3.48 4.858 4.505 7.897c1.025 3.039 1.537 6.325 1.537 9.858 0 2.968-.477 6.024-1.43 9.169a25.161 25.161 0 01-4.559 8.586c-2.085 2.58-4.752 4.7-8.003 6.36-3.25 1.66-7.137 2.491-11.66 2.491-3.604 0-6.943-.477-10.017-1.431-3.074-.954-5.777-2.385-8.109-4.293-2.332-1.908-4.187-4.258-5.565-7.049-1.378-2.791-2.138-6.06-2.279-9.805h12.084c.353 4.028 1.731 7.12 4.134 9.275 2.403 2.155 5.583 3.233 9.54 3.233 2.544 0 4.7-.424 6.466-1.272 1.767-.848 3.198-2.014 4.293-3.498 1.095-1.484 1.873-3.215 2.332-5.194.46-1.979.69-4.099.69-6.36 0-2.05-.284-4.01-.849-5.883-.565-1.873-1.413-3.516-2.544-4.929-1.13-1.413-2.597-2.544-4.399-3.392-1.802-.848-3.904-1.272-6.307-1.272-2.544 0-4.929.477-7.155 1.431-2.226.954-3.834 2.738-4.823 5.353H75.805l7.95-40.598z\"/></svg>"
        },
        "$:/core/images/heading-6": {
            "title": "$:/core/images/heading-6",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-heading-6 tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M6 30h13.25v30.104H53.7V30h13.25v75.684H53.7V71.552H19.25v34.132H6V30zm106.587 20.246c-.283-3.039-1.36-5.494-3.233-7.367-1.873-1.873-4.399-2.809-7.579-2.809-2.19 0-4.08.406-5.67 1.219a12.435 12.435 0 00-4.029 3.233c-1.095 1.343-1.979 2.88-2.65 4.611a37.696 37.696 0 00-1.643 5.459 46.08 46.08 0 00-.9 5.671 722.213 722.213 0 00-.478 5.247l.212.212c1.625-2.968 3.87-5.176 6.731-6.625 2.862-1.449 5.954-2.173 9.275-2.173 3.675 0 6.96.636 9.858 1.908 2.897 1.272 5.353 3.021 7.367 5.247 2.014 2.226 3.551 4.858 4.611 7.897 1.06 3.039 1.59 6.325 1.59 9.858 0 3.604-.583 6.943-1.749 10.017-1.166 3.074-2.844 5.76-5.035 8.056-2.19 2.297-4.805 4.081-7.844 5.353-3.039 1.272-6.395 1.908-10.07 1.908-5.441 0-9.91-1.007-13.409-3.021-3.498-2.014-6.254-4.77-8.268-8.268-2.014-3.498-3.41-7.597-4.187-12.296-.777-4.7-1.166-9.77-1.166-15.211 0-4.452.477-8.94 1.431-13.462.954-4.523 2.526-8.639 4.717-12.349 2.19-3.71 5.07-6.731 8.64-9.063C92.676 31.166 97.075 30 102.304 30c2.968 0 5.76.495 8.374 1.484 2.615.99 4.93 2.367 6.943 4.134 2.014 1.767 3.657 3.887 4.93 6.36 1.271 2.473 1.978 5.23 2.12 8.268h-12.085zm-11.66 46.852c2.19 0 4.099-.442 5.724-1.325a12.869 12.869 0 004.081-3.445c1.095-1.413 1.908-3.056 2.438-4.929.53-1.873.795-3.798.795-5.777s-.265-3.887-.795-5.724c-.53-1.837-1.343-3.445-2.438-4.823-1.095-1.378-2.456-2.491-4.08-3.339-1.626-.848-3.534-1.272-5.725-1.272-2.19 0-4.116.406-5.777 1.219-1.66.813-3.056 1.908-4.187 3.286-1.13 1.378-1.979 2.986-2.544 4.823-.565 1.837-.848 3.78-.848 5.83 0 2.05.283 3.993.848 5.83.565 1.837 1.413 3.48 2.544 4.929a12.39 12.39 0 004.187 3.445c1.66.848 3.586 1.272 5.777 1.272z\"/></svg>"
        },
        "$:/core/images/help": {
            "title": "$:/core/images/help",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-help tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M36.055 111.441c-5.24 4.396-15.168 7.362-26.555 7.362-1.635 0-3.24-.06-4.806-.179 7.919-2.64 14.062-8.6 16.367-16.014C8.747 92.845 1.05 78.936 1.05 63.5c0-29.547 28.206-53.5 63-53.5s63 23.953 63 53.5-28.206 53.5-63 53.5c-10.055 0-19.56-2-27.994-5.559zm35.35-33.843a536.471 536.471 0 00.018-4.682 199.02 199.02 0 00-.023-3.042c.008-1.357.595-2.087 3.727-4.235.112-.077 1.085-.74 1.386-.948 3.093-2.133 5.022-3.786 6.762-6.187 2.34-3.228 3.558-7.077 3.558-11.649 0-13.292-9.86-21.952-21.455-21.952-11.103 0-22.499 9.609-24.066 22.295a6.023 6.023 0 1011.956 1.477c.806-6.527 6.972-11.726 12.11-11.726 5.265 0 9.408 3.64 9.408 9.906 0 3.634-1.1 5.153-5.111 7.919l-1.362.93c-2.682 1.84-4.227 3.1-5.7 4.931-2.109 2.62-3.242 5.717-3.258 9.314.013.892.02 1.86.022 2.981a470.766 470.766 0 01-.022 4.943 6.023 6.023 0 1012.046.12l.003-.395zm-6.027 24.499a7.529 7.529 0 100-15.058 7.529 7.529 0 000 15.058z\"/></svg>"
        },
        "$:/core/images/home-button": {
            "title": "$:/core/images/home-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-home-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112.985 119.502c.01-.165.015-.331.015-.499V67.568c3.137 2.948 8.076 2.884 11.134-.174a7.999 7.999 0 00-.002-11.316L70.396 2.343A7.978 7.978 0 0064.734 0a7.957 7.957 0 00-5.656 2.343L33 28.42V8.007C33 3.585 29.41 0 25 0c-4.418 0-8 3.59-8 8.007V44.42L5.342 56.078c-3.125 3.125-3.12 8.198-.002 11.316a7.999 7.999 0 0011.316-.003l.344-.343v52.945a8.11 8.11 0 000 .007c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8a8.11 8.11 0 00-.015-.498zM97 112V51.574L64.737 19.31 33 51.048V112h64z\"/></svg>"
        },
        "$:/core/images/import-button": {
            "title": "$:/core/images/import-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-import-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M114.832 60.436s3.235-3.27 6.921.417c3.686 3.686.231 7.14.231 7.14l-42.153 42.92s-30.765 32.367-58.798 4.333C-7 87.213 24.59 55.623 24.59 55.623L67.363 12.85s22.725-24.6 43.587-3.738c20.862 20.862-3.96 43.09-3.96 43.09l-35.04 35.04S49.903 112.546 36.426 99.07c-13.476-13.477 11.83-35.523 11.83-35.523l35.04-35.04s3.902-3.902 7.78-.023c3.879 3.878.118 7.921.118 7.921l-35.04 35.04s-13.212 13.212-8.872 17.551c4.34 4.34 16.77-9.653 16.77-9.653l35.04-35.04s16.668-14.598 3.966-27.3c-13.893-13.892-27.565 3.702-27.565 3.702l-42.91 42.91s-23.698 23.698-3.658 43.738 43.012-4.385 43.012-4.385l42.895-42.533z\"/></svg>"
        },
        "$:/core/images/info-button": {
            "title": "$:/core/images/info-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-info-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\" transform=\"translate(.05)\"><path d=\"M64 128c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64C28.654 0 0 28.654 0 64c0 35.346 28.654 64 64 64zm0-16c26.51 0 48-21.49 48-48S90.51 16 64 16 16 37.49 16 64s21.49 48 48 48z\"/><circle cx=\"64\" cy=\"32\" r=\"8\"/><rect width=\"16\" height=\"56\" x=\"56\" y=\"48\" rx=\"8\"/></g></svg>"
        },
        "$:/core/images/italic": {
            "title": "$:/core/images/italic",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-italic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M66.711 0h22.41L62.408 128H40z\"/></svg>"
        },
        "$:/core/images/left-arrow": {
            "title": "$:/core/images/left-arrow",
            "created": "20150315234410875",
            "modified": "20150315235324760",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-left-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M0 64.177c0-2.026.771-4.054 2.317-5.6l55.98-55.98a7.92 7.92 0 0111.195.001c3.086 3.085 3.092 8.104.001 11.195L19.111 64.175l50.382 50.382a7.92 7.92 0 010 11.195c-3.086 3.086-8.105 3.092-11.196.001l-55.98-55.98A7.892 7.892 0 010 64.177z\"/></svg>"
        },
        "$:/core/images/line-width": {
            "title": "$:/core/images/line-width",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-line-width tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M16 18h96a2 2 0 000-4H16a2 2 0 100 4zm0 17h96a4 4 0 100-8H16a4 4 0 100 8zm0 21h96a6 6 0 000-12H16a6 6 0 100 12zm0 29h96c5.523 0 10-4.477 10-10s-4.477-10-10-10H16c-5.523 0-10 4.477-10 10s4.477 10 10 10zm0 43h96c8.837 0 16-7.163 16-16s-7.163-16-16-16H16c-8.837 0-16 7.163-16 16s7.163 16 16 16z\"/></svg>"
        },
        "$:/core/images/link": {
            "title": "$:/core/images/link",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-link tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M42.263 69.38a31.919 31.919 0 006.841 10.13c12.5 12.5 32.758 12.496 45.255 0l22.627-22.628c12.502-12.501 12.497-32.758 0-45.255-12.5-12.5-32.758-12.496-45.254 0L49.104 34.255a32.333 32.333 0 00-2.666 3.019 36.156 36.156 0 0121.94.334l14.663-14.663c6.25-6.25 16.382-6.254 22.632-.004 6.248 6.249 6.254 16.373-.004 22.631l-22.62 22.62c-6.25 6.25-16.381 6.254-22.631.004a15.93 15.93 0 01-4.428-8.433 11.948 11.948 0 00-7.59 3.48l-6.137 6.137z\"/><path d=\"M86.35 59.234a31.919 31.919 0 00-6.84-10.13c-12.5-12.5-32.758-12.497-45.255 0L11.627 71.732c-12.501 12.5-12.496 32.758 0 45.254 12.5 12.5 32.758 12.497 45.255 0L79.51 94.36a32.333 32.333 0 002.665-3.02 36.156 36.156 0 01-21.94-.333l-14.663 14.663c-6.25 6.25-16.381 6.253-22.63.004-6.25-6.249-6.255-16.374.003-22.632l22.62-22.62c6.25-6.25 16.381-6.253 22.631-.003a15.93 15.93 0 014.428 8.432 11.948 11.948 0 007.59-3.48l6.137-6.136z\"/></g></svg>"
        },
        "$:/core/images/linkify": {
            "title": "$:/core/images/linkify",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-linkify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M17.031 31.919H9.048V96.85h7.983v6.92H0V25h17.031v6.919zm24.66 0h-7.983V96.85h7.983v6.92H24.66V25h17.03v6.919zM67.77 56.422l11.975-3.903 2.306 7.096-12.063 3.903 7.628 10.379-6.12 4.435-7.63-10.467-7.45 10.2-5.943-4.523L58.1 63.518 45.95 59.35l2.306-7.096 12.064 4.17V43.825h7.45v12.596zM86.31 96.85h7.982V31.92H86.31V25h17.031v78.77H86.31v-6.92zm24.659 0h7.983V31.92h-7.983V25H128v78.77h-17.031v-6.92z\"/></svg>"
        },
        "$:/core/images/list-bullet": {
            "title": "$:/core/images/list-bullet",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-bullet tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M11.636 40.273c6.427 0 11.637-5.21 11.637-11.637C23.273 22.21 18.063 17 11.636 17 5.21 17 0 22.21 0 28.636c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.637 0-6.426-5.21-11.636-11.637-11.636C5.21 51.91 0 57.12 0 63.545c0 6.427 5.21 11.637 11.636 11.637zm0 34.909c6.427 0 11.637-5.21 11.637-11.636 0-6.427-5.21-11.637-11.637-11.637C5.21 86.818 0 92.028 0 98.455c0 6.426 5.21 11.636 11.636 11.636zM34.91 22.818H128v11.637H34.91V22.818zm0 34.91H128v11.636H34.91V57.727zm0 34.908H128v11.637H34.91V92.636z\"/></svg>"
        },
        "$:/core/images/list-number": {
            "title": "$:/core/images/list-number",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list-number tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M33.84 22.356H128v11.77H33.84v-11.77zm0 35.31H128v11.77H33.84v-11.77zm0 35.311H128v11.77H33.84v-11.77zM.38 42.631v-2.223h.998c.826 0 1.445-.14 1.858-.42.413-.28.619-.948.619-2.002V22.769c0-1.442-.193-2.336-.58-2.683-.385-.347-1.477-.52-3.275-.52v-2.143c3.502-.147 6.252-.955 8.25-2.423h2.117v22.865c0 .921.15 1.575.449 1.963.3.387.949.58 1.948.58h.998v2.223H.38zm-.3 35.356v-1.902c7.19-6.554 10.786-12.58 10.786-18.08 0-1.562-.326-2.81-.979-3.744-.652-.934-1.524-1.402-2.616-1.402-.893 0-1.655.317-2.287.952-.633.634-.95 1.364-.95 2.192 0 .974.247 1.829.74 2.563.106.16.16.28.16.36 0 .147-.16.28-.48.4-.213.08-.752.308-1.618.681-.839.374-1.358.561-1.558.561-.24 0-.512-.37-.819-1.111A6.2 6.2 0 010 57.064c0-1.949.849-3.544 2.547-4.785 1.698-1.242 3.798-1.862 6.302-1.862 2.463 0 4.53.67 6.202 2.012 1.67 1.341 2.506 3.093 2.506 5.256a8.644 8.644 0 01-.849 3.724c-.566 1.201-1.92 3.053-4.064 5.556a165.471 165.471 0 01-6.272 6.938h11.445l-1.019 5.726h-2.117c.08-.28.12-.534.12-.76 0-.388-.1-.631-.3-.731-.2-.1-.599-.15-1.198-.15H.08zm12.124 19.207c1.745.04 3.236.637 4.474 1.792 1.239 1.154 1.858 2.773 1.858 4.855 0 2.99-1.132 5.393-3.396 7.208-2.263 1.815-5 2.723-8.209 2.723-2.01 0-3.669-.384-4.974-1.151C.652 111.853 0 110.849 0 109.607c0-.774.27-1.398.809-1.872.54-.474 1.128-.71 1.768-.71.639 0 1.162.2 1.568.6.406.4.782 1.055 1.128 1.962.466 1.268 1.239 1.902 2.317 1.902 1.265 0 2.287-.477 3.066-1.431.78-.955 1.169-2.686 1.169-5.196 0-1.709-.12-3.023-.36-3.944-.24-.921-.792-1.382-1.658-1.382-.586 0-1.185.307-1.797.921-.493.494-.932.741-1.319.741-.333 0-.602-.147-.809-.44-.206-.294-.31-.574-.31-.841 0-.32.104-.594.31-.821.207-.227.69-.594 1.449-1.102 2.876-1.922 4.314-4.017 4.314-6.287 0-1.188-.306-2.092-.919-2.713a3.001 3.001 0 00-2.217-.93c-.799 0-1.525.263-2.177.79-.653.528-.979 1.158-.979 1.892 0 .641.253 1.235.76 1.782.172.2.259.367.259.5 0 .121-.57.428-1.708.922-1.139.494-1.854.74-2.147.74-.413 0-.75-.333-1.009-1-.26-.668-.39-1.282-.39-1.842 0-1.749.93-3.224 2.787-4.425 1.858-1.202 3.965-1.802 6.322-1.802 2.064 0 3.851.447 5.363 1.341 1.511.895 2.267 2.116 2.267 3.664 0 1.362-.57 2.623-1.708 3.784a13.387 13.387 0 01-3.945 2.784z\"/></svg>"
        },
        "$:/core/images/list": {
            "title": "$:/core/images/list",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-list tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M87.748 128H23.999c-4.418 0-7.999-3.59-7.999-8.007V8.007C16 3.585 19.588 0 24 0h80c4.419 0 8 3.59 8 8.007V104H91.25c-.965 0-1.84.392-2.473 1.025a3.476 3.476 0 00-1.029 2.476V128zm8-.12l15.88-15.88h-15.88v15.88zM40 15.508A3.502 3.502 0 0143.5 12h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 20h-55a3.498 3.498 0 01-3.5-3.509v-.982zM32 22a6 6 0 100-12 6 6 0 000 12zm8 9.509A3.502 3.502 0 0143.5 28h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 36h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 44h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 52h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 60h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 68h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 76h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 84h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.502 3.502 0 0143.5 92h55c1.933 0 3.5 1.561 3.5 3.509v.982A3.502 3.502 0 0198.5 100h-55a3.498 3.498 0 01-3.5-3.509v-.982zm0 16A3.505 3.505 0 0143.497 108h33.006A3.497 3.497 0 0180 111.509v.982A3.505 3.505 0 0176.503 116H43.497A3.497 3.497 0 0140 112.491v-.982zM32 38a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12zm0 16a6 6 0 100-12 6 6 0 000 12z\"/></svg>"
        },
        "$:/core/images/locked-padlock": {
            "title": "$:/core/images/locked-padlock",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-locked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M96.472 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h8c.003-15.723.303-47.731 32.16-47.731 31.794 0 32.305 32.057 32.312 47.731zm-15.897 0H48.44c.002-16.287.142-32 15.719-32 15.684 0 16.977 16.136 16.415 32zM67.732 92.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
        },
        "$:/core/images/mail": {
            "title": "$:/core/images/mail",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mail tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M122.827 104.894a7.986 7.986 0 01-2.834.516H8.007c-.812 0-1.597-.12-2.335-.345l34.163-34.163 20.842 20.842a3.998 3.998 0 003.418 1.134 4.003 4.003 0 003.395-1.134L88.594 70.64c.075.09.155.176.24.26l33.993 33.994zm5.076-6.237c.064-.406.097-.823.097-1.247v-64c0-.669-.082-1.318-.237-1.94L94.23 65.006c.09.075.177.154.261.239l33.413 33.413zm-127.698.56A8.023 8.023 0 010 97.41v-64c0-.716.094-1.41.271-2.071l33.907 33.906L.205 99.218zM5.93 25.684a8.012 8.012 0 012.078-.273h111.986c.766 0 1.507.108 2.209.308L64.083 83.837 5.93 25.683z\"/></svg>"
        },
        "$:/core/images/menu-button": {
            "title": "$:/core/images/menu-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-menu-button tc-image-button\" viewBox=\"0 0 128 128\"><rect width=\"128\" height=\"16\" y=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"56\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"96\" rx=\"8\"/></svg>"
        },
        "$:/core/images/mono-block": {
            "title": "$:/core/images/mono-block",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-block tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M23.965 32.967h.357c.755 0 1.328.192 1.72.577.39.384.586.947.586 1.688 0 .824-.206 1.418-.618 1.782-.413.363-1.094.545-2.045.545h-6.31c-.965 0-1.65-.178-2.056-.535-.405-.356-.608-.954-.608-1.792 0-.811.203-1.391.608-1.74.406-.35 1.09-.525 2.055-.525h.734l-.86-2.453H8.471l-.902 2.453h.734c.95 0 1.632.178 2.044.535.413.356.619.933.619 1.73 0 .824-.206 1.418-.619 1.782-.412.363-1.094.545-2.044.545h-5.41c-.964 0-1.649-.182-2.054-.545-.406-.364-.608-.958-.608-1.782 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.719-.577h.356l5.62-15.641H6.835c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.95-.619-1.76 0-.825.207-1.42.619-1.783.412-.363 1.094-.545 2.044-.545h7.863c1.244 0 2.118.67 2.62 2.013v.063l6.647 18.2zM12.98 17.326l-3.04 8.848h6.08l-3.04-8.848zm22.402 9.372v6.395h3.145c2.223 0 3.788-.245 4.697-.734.908-.49 1.362-1.307 1.362-2.453 0-1.16-.433-1.985-1.3-2.474-.866-.49-2.383-.734-4.55-.734h-3.354zm10.693-2.327c1.524.559 2.642 1.324 3.355 2.295.713.972 1.07 2.212 1.07 3.722 0 1.272-.308 2.432-.923 3.48-.615 1.049-1.496 1.909-2.642 2.58a7.499 7.499 0 01-2.254.849c-.832.174-2.01.262-3.533.262H30.202c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.782 0-.741.189-1.304.566-1.688.378-.385.93-.577 1.657-.577h.356V17.326h-.356c-.727 0-1.28-.196-1.657-.587-.377-.392-.566-.965-.566-1.72 0-.81.203-1.401.608-1.771.406-.37 1.062-.556 1.971-.556h9.645c2.95 0 5.19.573 6.72 1.72 1.53 1.145 2.296 2.823 2.296 5.031 0 1.09-.234 2.052-.703 2.883-.468.832-1.163 1.513-2.086 2.045zM35.381 17.2v5.284h2.83c1.72 0 2.932-.203 3.638-.609.706-.405 1.06-1.09 1.06-2.054 0-.909-.319-1.573-.955-1.992-.636-.42-1.667-.63-3.093-.63h-3.48zm35.863-3.816c.28-.503.566-.86.86-1.07.293-.21.664-.314 1.111-.314.685 0 1.17.182 1.457.545.287.364.43.986.43 1.866l.042 5.452c0 .964-.157 1.614-.472 1.95-.314.335-.884.503-1.709.503-.587 0-1.037-.14-1.352-.42-.314-.28-.584-.796-.807-1.551-.364-1.328-.944-2.282-1.74-2.862-.797-.58-1.901-.87-3.313-.87-2.153 0-3.802.727-4.948 2.18-1.147 1.454-1.72 3.558-1.72 6.311 0 2.74.58 4.844 1.74 6.311 1.16 1.468 2.817 2.202 4.97 2.202 1.467 0 3.085-.49 4.854-1.468 1.768-.978 2.883-1.467 3.344-1.467.545 0 1.003.23 1.373.692.37.46.556 1.034.556 1.719 0 1.23-1.084 2.39-3.25 3.48-2.167 1.09-4.606 1.636-7.318 1.636-3.662 0-6.625-1.21-8.89-3.627-2.264-2.419-3.396-5.578-3.396-9.478 0-3.76 1.146-6.884 3.438-9.372 2.293-2.488 5.2-3.732 8.723-3.732.992 0 1.97.112 2.935.335.964.224 1.992.574 3.082 1.049zm10.22 19.583V17.326h-.356c-.755 0-1.328-.196-1.72-.587-.39-.392-.586-.965-.586-1.72 0-.81.21-1.401.629-1.771.42-.37 1.097-.556 2.034-.556h5.178c2.922 0 5.06.126 6.416.377 1.356.252 2.51.671 3.46 1.258 1.691 1.007 2.988 2.443 3.89 4.31.9 1.865 1.352 4.021 1.352 6.467 0 2.586-.514 4.847-1.541 6.783-1.028 1.936-2.485 3.4-4.372 4.393-.853.447-1.852.772-2.998.975-1.147.203-2.852.304-5.116.304h-6.269c-.965 0-1.65-.178-2.055-.535-.406-.356-.608-.954-.608-1.792 0-.741.195-1.304.587-1.688.391-.385.964-.577 1.72-.577h.356zm5.41-15.725v15.725h1.195c2.642 0 4.592-.646 5.85-1.94 1.258-1.292 1.887-3.28 1.887-5.965 0-2.641-.64-4.612-1.918-5.912-1.28-1.3-3.205-1.95-5.777-1.95-.335 0-.59.003-.765.01a7.992 7.992 0 00-.472.032zm35.067-.126h-9.75v5.368h3.69v-.252c0-.797.175-1.39.524-1.782.35-.392.88-.587 1.594-.587.629 0 1.142.178 1.54.534.4.357.598.808.598 1.353 0 .028.007.118.021.272.014.154.021.308.021.462v4.34c0 .936-.167 1.607-.503 2.013-.335.405-.88.608-1.635.608-.713 0-1.251-.19-1.615-.567-.363-.377-.545-.936-.545-1.677v-.377h-3.69v6.269h9.75v-2.495c0-.937.178-1.608.534-2.013.357-.405.94-.608 1.75-.608.798 0 1.367.2 1.71.597.342.399.513 1.073.513 2.024v5.074c0 .755-.146 1.258-.44 1.51-.293.251-.873.377-1.74.377h-17.172c-.923 0-1.583-.182-1.982-.545-.398-.364-.597-.958-.597-1.782 0-.741.189-1.304.566-1.688.377-.385.93-.577 1.656-.577h.357V17.326h-.357c-.712 0-1.261-.2-1.646-.598-.384-.398-.576-.968-.576-1.709 0-.81.203-1.401.608-1.771.405-.37 1.062-.556 1.97-.556h17.173c.853 0 1.43.13 1.73.388.3.258.45.772.45 1.54v4.698c0 .95-.174 1.631-.524 2.044-.35.412-.915.618-1.698.618-.81 0-1.394-.21-1.75-.629-.357-.419-.535-1.097-.535-2.033v-2.202zM19.77 47.641c.267-.504.55-.86.85-1.07.3-.21.675-.314 1.122-.314.685 0 1.17.181 1.457.545.287.363.43.985.43 1.866l.042 5.451c0 .965-.157 1.615-.472 1.95-.314.336-.891.504-1.73.504-.587 0-1.045-.144-1.373-.43-.329-.287-.598-.8-.807-1.541-.378-1.342-.958-2.3-1.74-2.873-.783-.573-1.88-.86-3.292-.86-2.153 0-3.799.727-4.938 2.181-1.14 1.454-1.709 3.557-1.709 6.311s.598 4.882 1.793 6.385C10.599 67.248 12.294 68 14.488 68c.503 0 1.077-.06 1.72-.179a23.809 23.809 0 002.264-.555v-3.313h-2.37c-.95 0-1.624-.175-2.023-.524-.398-.35-.597-.93-.597-1.74 0-.84.199-1.437.597-1.793.399-.357 1.073-.535 2.024-.535h7.569c.978 0 1.667.175 2.065.524.398.35.598.937.598 1.762 0 .74-.2 1.31-.598 1.708-.398.399-.975.598-1.73.598h-.335v5.242c0 .447-.05.758-.147.933-.098.174-.293.353-.587.534-.797.476-2.062.895-3.795 1.258a25.576 25.576 0 01-5.263.546c-3.662 0-6.625-1.21-8.89-3.628-2.264-2.418-3.397-5.577-3.397-9.477 0-3.76 1.147-6.884 3.44-9.372 2.292-2.488 5.199-3.732 8.721-3.732.979 0 1.954.112 2.925.335.972.224 2.003.573 3.093 1.049zm15.84 3.941v4.823h6.857v-4.823h-.336c-.754 0-1.331-.195-1.73-.587-.398-.391-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.364 1.093-.545 2.044-.545h5.41c.95 0 1.624.181 2.023.545.398.363.597.957.597 1.782 0 .755-.192 1.328-.576 1.72-.385.39-.947.586-1.688.586h-.357v15.642h.357c.755 0 1.328.192 1.719.576.391.385.587.947.587 1.688 0 .825-.203 1.419-.608 1.782-.405.364-1.09.546-2.055.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.2-1.303.598-1.688.398-.384.975-.576 1.73-.576h.335v-6.186h-6.856v6.186h.335c.755 0 1.331.192 1.73.576.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.412.364-1.094.546-2.044.546h-5.41c-.964 0-1.65-.179-2.055-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.392-.384.965-.576 1.72-.576h.356V51.582h-.356c-.741 0-1.304-.195-1.688-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.073-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.335zm31.754 0v15.642h3.523c.95 0 1.632.178 2.044.534.412.357.618.933.618 1.73 0 .811-.21 1.402-.629 1.772-.419.37-1.097.556-2.033.556H58.433c-.95 0-1.632-.182-2.044-.546-.412-.363-.619-.957-.619-1.782 0-.81.203-1.39.608-1.74.406-.35 1.09-.524 2.055-.524h3.523V51.582h-3.523c-.95 0-1.632-.181-2.044-.545-.412-.363-.619-.95-.619-1.761 0-.825.203-1.412.608-1.761.406-.35 1.09-.524 2.055-.524h12.455c.992 0 1.684.174 2.075.524.392.35.587.936.587 1.761 0 .81-.202 1.398-.608 1.761-.405.364-1.09.545-2.054.545h-3.523zm30.496 0v11.994c0 1.873-.122 3.228-.367 4.067a5.876 5.876 0 01-1.227 2.244c-.74.852-1.768 1.495-3.082 1.929-1.314.433-2.893.65-4.738.65-1.3 0-2.555-.126-3.764-.378a16.843 16.843 0 01-3.491-1.132c-.615-.28-1.017-.643-1.206-1.09-.188-.448-.283-1.175-.283-2.18v-4.32c0-1.202.175-2.04.525-2.516.349-.475.957-.713 1.824-.713 1.244 0 1.929.915 2.054 2.747.014.321.035.566.063.733.168 1.622.545 2.73 1.133 3.324.587.594 1.523.89 2.81.89 1.593 0 2.714-.422 3.364-1.268.65-.845.975-2.386.975-4.623V51.582H88.93c-.95 0-1.632-.181-2.044-.545-.413-.363-.619-.95-.619-1.761 0-.825.2-1.412.598-1.761.398-.35 1.086-.524 2.065-.524h10.693c.979 0 1.667.174 2.065.524.399.35.598.936.598 1.761 0 .81-.206 1.398-.619 1.761-.412.364-1.093.545-2.044.545h-1.761zm14.644 0v6.353l6.48-6.478c-.728-.084-1.238-.29-1.531-.619-.294-.328-.44-.85-.44-1.562 0-.825.198-1.419.597-1.782.398-.364 1.073-.545 2.023-.545h5.137c.95 0 1.625.181 2.023.545.399.363.598.957.598 1.782 0 .769-.2 1.345-.598 1.73-.398.384-.982.576-1.75.576h-.483l-6.101 6.06c1.132.839 2.167 1.94 3.103 3.302.937 1.363 2.034 3.456 3.292 6.28h.692c.825 0 1.44.188 1.845.566.405.377.608.943.608 1.698 0 .825-.206 1.419-.619 1.782-.412.364-1.093.546-2.044.546h-2.579c-1.132 0-2.048-.762-2.746-2.286-.126-.28-.224-.503-.294-.67-.923-1.958-1.768-3.467-2.537-4.53a16.616 16.616 0 00-2.705-2.914l-1.97 1.887v3.92h.335c.755 0 1.331.193 1.73.577.398.385.597.947.597 1.688 0 .825-.206 1.419-.618 1.782-.413.364-1.094.546-2.045.546h-5.41c-.964 0-1.649-.179-2.054-.535-.405-.357-.608-.954-.608-1.793 0-.74.196-1.303.587-1.688.391-.384.965-.576 1.72-.576h.356V51.582h-.357c-.74 0-1.303-.195-1.687-.587-.385-.391-.577-.964-.577-1.719 0-.825.2-1.419.598-1.782.398-.364 1.072-.545 2.023-.545h5.41c.936 0 1.614.181 2.033.545.42.363.63.957.63 1.782 0 .755-.2 1.328-.598 1.72-.399.39-.975.586-1.73.586h-.336zM13.44 96.326l4.005-11.889c.251-.782.6-1.352 1.048-1.709.447-.356 1.041-.534 1.782-.534h3.271c.95 0 1.632.182 2.044.545.413.363.619.957.619 1.782 0 .755-.2 1.328-.598 1.72-.398.39-.975.587-1.73.587h-.335l.587 15.641h.357c.754 0 1.32.192 1.698.577.377.384.566.947.566 1.687 0 .825-.2 1.42-.598 1.783-.398.363-1.072.545-2.023.545h-4.718c-.95 0-1.624-.178-2.023-.535-.398-.356-.597-.954-.597-1.793 0-.74.192-1.303.576-1.687.385-.385.954-.577 1.709-.577h.335l-.293-12.79-3.061 9.52c-.224.712-.542 1.226-.954 1.54-.413.315-.982.472-1.709.472-.727 0-1.303-.157-1.73-.472-.426-.314-.751-.828-.975-1.54l-3.04-9.52-.294 12.79h.336c.755 0 1.324.192 1.709.577.384.384.576.947.576 1.687 0 .825-.202 1.42-.608 1.783-.405.363-1.076.545-2.013.545H2.621c-.937 0-1.608-.182-2.013-.545-.405-.364-.608-.958-.608-1.783 0-.74.192-1.303.577-1.687.384-.385.954-.577 1.708-.577h.336l.608-15.641h-.336c-.754 0-1.331-.196-1.73-.588-.398-.39-.597-.964-.597-1.719 0-.825.206-1.419.619-1.782.412-.363 1.093-.545 2.044-.545h3.27c.728 0 1.311.175 1.752.524.44.35.8.923 1.08 1.72l4.109 11.888zm30.454 2.054V86.828H42.74c-.922 0-1.583-.182-1.981-.546-.398-.363-.598-.95-.598-1.76 0-.812.2-1.402.598-1.773.398-.37 1.059-.555 1.981-.555h5.955c.909 0 1.566.185 1.97.555.406.37.609.961.609 1.772 0 .741-.192 1.31-.577 1.709-.384.398-.933.598-1.646.598h-.356v19.038c0 .657-.07 1.069-.21 1.237-.14.167-.454.251-.943.251h-2.097c-.67 0-1.143-.07-1.415-.21-.273-.14-.507-.384-.703-.733l-8.722-15.327v11.385h1.216c.909 0 1.559.175 1.95.524.392.35.587.93.587 1.74 0 .825-.199 1.42-.597 1.783-.399.363-1.045.545-1.94.545h-6.017c-.909 0-1.566-.182-1.971-.545-.406-.364-.608-.958-.608-1.783 0-.74.188-1.303.566-1.687.377-.385.936-.577 1.677-.577h.336V86.828h-.336c-.713 0-1.265-.2-1.656-.598-.392-.398-.587-.968-.587-1.709 0-.81.206-1.401.618-1.772.413-.37 1.066-.555 1.96-.555h3.44c.824 0 1.383.108 1.677.325.293.216.622.653.985 1.31l7.989 14.551zM64.66 86.366c-1.803 0-3.218.727-4.245 2.18-1.028 1.455-1.541 3.474-1.541 6.06 0 2.586.517 4.613 1.551 6.08 1.034 1.468 2.446 2.202 4.235 2.202 1.804 0 3.222-.73 4.257-2.19 1.034-1.461 1.551-3.492 1.551-6.092 0-2.586-.513-4.605-1.54-6.06-1.028-1.453-2.45-2.18-4.268-2.18zm0-4.864c3.44 0 6.27 1.23 8.492 3.69 2.223 2.46 3.334 5.598 3.334 9.414 0 3.844-1.104 6.99-3.313 9.436-2.208 2.446-5.046 3.669-8.513 3.669-3.424 0-6.255-1.234-8.491-3.701-2.237-2.467-3.355-5.602-3.355-9.404 0-3.83 1.108-6.971 3.323-9.424 2.216-2.454 5.057-3.68 8.523-3.68zM87.461 98.17v4.298h2.16c.908 0 1.555.175 1.94.524.384.35.576.93.576 1.74 0 .825-.196 1.42-.587 1.783-.392.363-1.035.545-1.93.545h-7.254c-.922 0-1.583-.182-1.981-.545-.399-.364-.598-.958-.598-1.783 0-.74.189-1.303.566-1.687.378-.385.93-.577 1.657-.577h.356V86.828h-.356c-.713 0-1.262-.2-1.646-.598-.385-.398-.577-.968-.577-1.709 0-.81.203-1.401.608-1.772.406-.37 1.063-.555 1.971-.555h8.66c3.424 0 6.014.657 7.768 1.97 1.754 1.315 2.631 3.25 2.631 5.809 0 2.697-.873 4.738-2.62 6.122-1.748 1.384-4.34 2.076-7.78 2.076h-3.564zm0-11.343v6.625h2.977c1.65 0 2.89-.28 3.722-.839.832-.559 1.248-1.397 1.248-2.516 0-1.048-.43-1.855-1.29-2.421-.86-.566-2.086-.85-3.68-.85h-2.977zm27.267 20.568l-1.636 1.636a12.37 12.37 0 011.772-.44c.58-.098 1.15-.147 1.709-.147 1.104 0 2.268.164 3.491.492 1.223.329 1.967.493 2.233.493.447 0 1.03-.15 1.75-.45.72-.301 1.206-.452 1.458-.452.517 0 .947.2 1.29.598.342.398.513.898.513 1.5 0 .796-.472 1.474-1.415 2.033-.944.56-2.1.839-3.47.839-.937 0-2.139-.22-3.607-.66-1.467-.441-2.53-.661-3.187-.661-.992 0-2.11.272-3.354.817-1.244.546-2.013.818-2.307.818a2.14 2.14 0 01-1.53-.597c-.42-.399-.63-.878-.63-1.437 0-.391.134-.807.4-1.247.265-.44.733-1.01 1.404-1.709l2.118-2.139c-2.335-.852-4.194-2.386-5.578-4.602-1.384-2.215-2.075-4.763-2.075-7.642 0-3.802 1.104-6.909 3.312-9.32 2.209-2.411 5.053-3.617 8.534-3.617 3.467 0 6.304 1.209 8.513 3.627 2.208 2.418 3.312 5.522 3.312 9.31 0 3.774-1.097 6.884-3.291 9.33-2.195 2.446-4.977 3.67-8.345 3.67a22.5 22.5 0 01-1.384-.043zm1.195-21.03c-1.803 0-3.218.727-4.246 2.18-1.027 1.455-1.54 3.474-1.54 6.06 0 2.586.516 4.613 1.55 6.08 1.035 1.468 2.447 2.202 4.236 2.202 1.803 0 3.222-.73 4.256-2.19 1.035-1.461 1.552-3.492 1.552-6.092 0-2.586-.514-4.605-1.541-6.06-1.028-1.453-2.45-2.18-4.267-2.18z\"/></svg>"
        },
        "$:/core/images/mono-line": {
            "title": "$:/core/images/mono-line",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-mono-line tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M60.437 84.523h.908c1.922 0 3.381.489 4.378 1.468.997.979 1.495 2.411 1.495 4.298 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388h-16.07c-2.456 0-4.2-.454-5.232-1.361-1.032-.908-1.548-2.43-1.548-4.565 0-2.065.516-3.542 1.548-4.432 1.032-.89 2.776-1.334 5.232-1.334h1.869l-2.19-6.247H20.983l-2.296 6.247h1.87c2.42 0 4.155.453 5.205 1.361 1.05.908 1.575 2.376 1.575 4.405 0 2.1-.525 3.612-1.575 4.538-1.05.925-2.785 1.388-5.206 1.388H6.781c-2.456 0-4.2-.463-5.233-1.388C.516 93.9 0 92.389 0 90.289c0-1.887.498-3.32 1.495-4.298.997-.979 2.456-1.468 4.378-1.468h.908l14.308-39.83h-4.271c-2.42 0-4.156-.462-5.206-1.387-1.05-.926-1.575-2.42-1.575-4.485 0-2.1.525-3.613 1.575-4.538 1.05-.926 2.785-1.388 5.206-1.388h20.021c3.168 0 5.392 1.708 6.674 5.125v.16l16.924 46.343zm-27.976-39.83L24.72 67.225h15.483l-7.742-22.53zM89.506 68.56v16.284h8.008c5.66 0 9.646-.623 11.96-1.869 2.313-1.245 3.47-3.328 3.47-6.246 0-2.955-1.103-5.055-3.31-6.3-2.207-1.246-6.069-1.869-11.586-1.869h-8.542zm27.229-5.926c3.88 1.423 6.727 3.372 8.542 5.846 1.815 2.474 2.723 5.633 2.723 9.477 0 3.239-.783 6.193-2.35 8.862-1.565 2.67-3.808 4.859-6.726 6.567-1.709.997-3.622 1.718-5.74 2.163-2.118.445-5.116.667-8.996.667h-27.87c-2.349 0-4.03-.463-5.045-1.388-1.014-.926-1.521-2.438-1.521-4.538 0-1.887.48-3.32 1.441-4.298.961-.979 2.367-1.468 4.218-1.468h.907v-39.83h-.907c-1.851 0-3.257-.498-4.218-1.494-.961-.997-1.441-2.456-1.441-4.378 0-2.065.516-3.568 1.548-4.512 1.032-.943 2.705-1.414 5.018-1.414h24.56c7.51 0 13.214 1.459 17.111 4.377 3.898 2.92 5.847 7.19 5.847 12.814 0 2.776-.597 5.223-1.789 7.341-1.192 2.118-2.963 3.853-5.312 5.206zm-27.23-18.26v13.455h7.208c4.378 0 7.466-.516 9.264-1.549 1.797-1.032 2.696-2.776 2.696-5.232 0-2.313-.81-4.004-2.43-5.072-1.619-1.068-4.244-1.602-7.874-1.602h-8.863z\"/></svg>"
        },
        "$:/core/images/new-button": {
            "title": "$:/core/images/new-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M56 72H8.007C3.591 72 0 68.418 0 64c0-4.41 3.585-8 8.007-8H56V8.007C56 3.591 59.582 0 64 0c4.41 0 8 3.585 8 8.007V56h47.993c4.416 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H72v47.993c0 4.416-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V72z\"/></svg>"
        },
        "$:/core/images/new-here-button": {
            "title": "$:/core/images/new-here-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-here-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.838 20.935l-3.572.938c-3.688.968-8.23 4.43-10.136 7.731L3.37 96.738c-1.905 3.3-.771 7.524 2.534 9.432l33.717 19.466c3.297 1.904 7.53.78 9.435-2.521l38.76-67.134c1.905-3.3 2.632-8.963 1.623-12.646L83.285 20.88c-1.009-3.68-4.821-5.884-8.513-4.915l-7.603 1.995.043.287c.524 3.394 2.053 7.498 4.18 11.55.418.163.829.36 1.23.59a8.864 8.864 0 014.438 8.169c.104.132.21.264.316.395l-.386.318a8.663 8.663 0 01-1.082 3.137c-2.42 4.192-7.816 5.608-12.051 3.163-4.12-2.379-5.624-7.534-3.476-11.671-2.177-4.394-3.788-8.874-4.543-12.964z\"/><path d=\"M69.554 44.76c-5.944-7.476-10.74-17.196-11.955-25.059-1.68-10.875 3.503-18.216 15.082-18.04 10.407.158 19.975 5.851 24.728 13.785 5.208 8.695 2.95 17.868-6.855 20.496l-2.037-7.601c4.232-1.134 4.999-4.248 2.24-8.853-3.37-5.626-10.465-9.848-18.146-9.965-6.392-.097-8.31 2.62-7.323 9.01.999 6.465 5.318 15.138 10.582 21.65l-.072.06c.559 1.553-4.17 6.44-5.938 4.888l-.005.004-.028-.034a1.323 1.323 0 01-.124-.135 2.618 2.618 0 01-.149-.205z\"/><rect width=\"16\" height=\"48\" x=\"96\" y=\"80\" rx=\"8\"/><rect width=\"48\" height=\"16\" x=\"80\" y=\"96\" rx=\"8\"/></g></svg>"
        },
        "$:/core/images/new-image-button": {
            "title": "$:/core/images/new-image-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-image-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.362 73.627l15.826-27.41a2.626 2.626 0 00-.962-3.59l-50.01-28.872a2.626 2.626 0 00-3.588.961L30.058 36.49l10.04-5.261c3.042-1.595 6.771.114 7.55 3.46l3.607 17.702 9.88.85a5.25 5.25 0 014.571 3.77c.034.115.1.344.199.671.165.553.353 1.172.562 1.843.595 1.914 1.23 3.85 1.872 5.678.207.588.412 1.156.614 1.701.625 1.685 1.209 3.114 1.725 4.207.255.54.485.977.726 1.427.214.212.547.425 1.011.622 1.141.482 2.784.74 4.657.758.864.008 1.71-.034 2.492-.11.448-.043.753-.085.871-.104.315-.053.625-.077.927-.076zM37.47 2.649A5.257 5.257 0 0144.649.725l63.645 36.746a5.257 5.257 0 011.923 7.178L73.47 108.294a5.257 5.257 0 01-7.177 1.923L2.649 73.47a5.257 5.257 0 01-1.924-7.177L37.471 2.649zm42.837 50.49a5.25 5.25 0 105.25-9.092 5.25 5.25 0 00-5.25 9.093zM96 112h-7.993c-4.419 0-8.007-3.582-8.007-8 0-4.41 3.585-8 8.007-8H96v-7.993C96 83.588 99.582 80 104 80c4.41 0 8 3.585 8 8.007V96h7.993c4.419 0 8.007 3.582 8.007 8 0 4.41-3.585 8-8.007 8H112v7.993c0 4.419-3.582 8.007-8 8.007-4.41 0-8-3.585-8-8.007V112zM33.347 51.791c7.428 7.948 9.01 10.69 7.449 13.394-1.56 2.703-13.838-2.328-16.094 1.58-2.256 3.908-.907 3.258-2.437 5.908l19.73 11.39s-5.605-8.255-4.235-10.628c2.515-4.356 8.77-1.256 10.365-4.019 2.414-4.181-5.103-9.639-14.778-17.625z\"/></svg>"
        },
        "$:/core/images/new-journal-button": {
            "title": "$:/core/images/new-journal-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-new-journal-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.545 112.818v11.818c0 1.306 1.086 2.364 2.425 2.364h6.06c1.34 0 2.425-1.058 2.425-2.364v-11.818h12.12c1.34 0 2.425-1.058 2.425-2.363v-5.91c0-1.305-1.085-2.363-2.424-2.363h-12.121V90.364c0-1.306-1.086-2.364-2.425-2.364h-6.06c-1.34 0-2.425 1.058-2.425 2.364v11.818h-12.12c-1.34 0-2.425 1.058-2.425 2.363v5.91c0 1.305 1.085 2.363 2.424 2.363h12.121zM60.016 4.965c-4.781-2.76-10.897-1.118-13.656 3.66L5.553 79.305A9.993 9.993 0 009.21 92.963l51.04 29.468c4.78 2.76 10.897 1.118 13.655-3.66l40.808-70.681a9.993 9.993 0 00-3.658-13.656L60.016 4.965zm-3.567 27.963a6 6 0 106-10.393 6 6 0 00-6 10.393zm31.697 17.928a6 6 0 106-10.392 6 6 0 00-6 10.392z\"/><text class=\"tc-fill-background\" font-family=\"Helvetica\" font-size=\"47.172\" font-weight=\"bold\" transform=\"rotate(30 25.742 95.82)\"><tspan x=\"42\" y=\"77.485\" text-anchor=\"middle\"><<now \"DD\">></tspan></text></g></svg>"
        },
        "$:/core/images/opacity": {
            "title": "$:/core/images/opacity",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-opacity tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M102.362 65a51.595 51.595 0 01-1.942 6H82.584a35.867 35.867 0 002.997-6h16.78zm.472-2c.423-1.961.734-3.963.929-6H87.656a35.78 35.78 0 01-1.368 6h16.546zm-3.249 10a51.847 51.847 0 01-3.135 6H75.812a36.205 36.205 0 005.432-6h18.341zm-4.416 8c-1.424 2.116-3 4.12-4.71 6H60.46a35.843 35.843 0 0012.874-6h21.834zm-7.513-34h16.107C101.247 20.627 79.033 0 52 0 23.281 0 0 23.281 0 52c0 25.228 17.965 46.26 41.8 51h20.4a51.66 51.66 0 0015.875-6H39v-2h42.25a52.257 52.257 0 007.288-6H39v-2h4.539C27.739 83.194 16 68.968 16 52c0-19.882 16.118-36 36-36 18.186 0 33.222 13.484 35.656 31zm.22 2h16.039a52.823 52.823 0 010 6H87.877a36.483 36.483 0 000-6z\"/><path d=\"M76 128c28.719 0 52-23.281 52-52s-23.281-52-52-52-52 23.281-52 52 23.281 52 52 52zm0-16c19.882 0 36-16.118 36-36S95.882 40 76 40 40 56.118 40 76s16.118 36 36 36z\"/><path d=\"M37 58h53v4H37v-4zm3-8h53v4H40v-4zm0-8h53v4H40v-4zm-8 24h53v4H32v-4zm-2 8h53v4H30v-4zm-3 8h53v4H27v-4z\"/></g></svg>"
        },
        "$:/core/images/open-window": {
            "title": "$:/core/images/open-window",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-open-window tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M16 112h88.994c3.87 0 7.006 3.59 7.006 8 0 4.418-3.142 8-7.006 8H7.006C3.136 128 0 124.41 0 120a9.321 9.321 0 010-.01V24.01C0 19.586 3.59 16 8 16c4.418 0 8 3.584 8 8.01V112z\"/><path d=\"M96 43.196V56a8 8 0 1016 0V24c0-4.41-3.585-8-8.007-8H72.007C67.588 16 64 19.582 64 24c0 4.41 3.585 8 8.007 8H84.57l-36.3 36.299a8 8 0 00-.001 11.316c3.117 3.117 8.19 3.123 11.316-.003L96 43.196zM32 7.999C32 3.581 35.588 0 40 0h80c4.419 0 8 3.588 8 8v80c0 4.419-3.588 8-8 8H40c-4.419 0-8-3.588-8-8V8z\"/></g></svg>"
        },
        "$:/core/images/options-button": {
            "title": "$:/core/images/options-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-options-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M110.488 76a47.712 47.712 0 01-5.134 12.384l6.724 6.724c3.123 3.123 3.132 8.192.011 11.313l-5.668 5.668c-3.12 3.12-8.186 3.117-11.313-.01l-6.724-6.725c-3.82 2.258-7.98 4-12.384 5.134v9.505c0 4.417-3.578 8.007-7.992 8.007h-8.016C55.58 128 52 124.415 52 119.993v-9.505a47.712 47.712 0 01-12.384-5.134l-6.724 6.725c-3.123 3.122-8.192 3.131-11.313.01l-5.668-5.668c-3.12-3.12-3.116-8.186.01-11.313l6.725-6.724c-2.257-3.82-4-7.98-5.134-12.384H8.007C3.591 76 0 72.422 0 68.01v-8.017C0 55.58 3.585 52 8.007 52h9.505a47.712 47.712 0 015.134-12.383l-6.724-6.725c-3.123-3.122-3.132-8.191-.011-11.312l5.668-5.669c3.12-3.12 8.186-3.116 11.313.01l6.724 6.725c3.82-2.257 7.98-4 12.384-5.134V8.007C52 3.591 55.578 0 59.992 0h8.016C72.42 0 76 3.585 76 8.007v9.505a47.712 47.712 0 0112.384 5.134l6.724-6.724c3.123-3.123 8.192-3.132 11.313-.01l5.668 5.668c3.12 3.12 3.116 8.186-.01 11.312l-6.725 6.725c2.257 3.82 4 7.979 5.134 12.383h9.505c4.416 0 8.007 3.578 8.007 7.992v8.017c0 4.411-3.585 7.991-8.007 7.991h-9.505zM64 96c17.673 0 32-14.327 32-32 0-17.673-14.327-32-32-32-17.673 0-32 14.327-32 32 0 17.673 14.327 32 32 32z\"/></svg>"
        },
        "$:/core/images/paint": {
            "title": "$:/core/images/paint",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-paint tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M83.527 76.19C90.43 69.287 91.892 59 87.91 50.665l37.903-37.902c2.919-2.92 2.913-7.659 0-10.572a7.474 7.474 0 00-10.572 0L77.338 40.093c-8.335-3.982-18.622-2.521-25.526 4.383l31.715 31.715zm-2.643 2.644L49.169 47.119S8.506 81.243 0 80.282c0 0 3.782 5.592 6.827 8.039 14.024-5.69 37.326-24.6 37.326-24.6l.661.66S19.45 90.222 9.18 92.047c1.222 1.44 4.354 4.053 6.247 5.776 5.417-1.488 34.733-28.57 34.733-28.57l.661.66-32.407 31.022 5.285 5.286L56.106 75.2l.662.66s-27.864 30.536-28.684 32.432c0 0 6.032 6.853 7.569 7.824.702-2.836 27.884-33.485 27.884-33.485l.661.66s-20.597 23.755-24.964 36.732c3.21 3.549 7.5 5.137 10.926 6.298-2.19-11.817 30.724-47.487 30.724-47.487z\"/></svg>"
        },
        "$:/core/images/palette": {
            "title": "$:/core/images/palette",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-palette tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.247 39.182a93.52 93.52 0 00-16.228-1.4C28.662 37.781 0 57.131 0 81.002c0 9.642 4.676 18.546 12.58 25.735C23.504 91.19 26.34 72.395 36.89 63.562c15.183-12.713 26.538-7.828 26.538-7.828l16.82-16.552zm26.535 9.655c13.049 7.913 21.257 19.392 21.257 32.166 0 9.35.519 17.411-11.874 25.08-10.797 6.681-3.824-6.536-11.844-10.898s-19.946 1.308-18.213 7.906c3.2 12.181 19.422 11.455 6.314 16.658-13.107 5.202-18.202 4.476-28.403 4.476-7.821 0-15.315-.947-22.243-2.68 9.844-4.197 27.88-12.539 33.354-19.456C82.788 92.409 87.37 80 83.324 72.484c-.194-.359 11.215-11.668 23.458-23.647zM1.134 123.867l-.66.002c33.479-14.94 22.161-64.226 58.818-64.226.317 1.418.644 2.944 1.062 4.494-25.907-4.166-23.567 48.031-59.22 59.73zm.713-.007c38.872-.506 78.152-22.347 78.152-44.813-9.27 0-14.073-3.48-16.816-7.942-16.597-7.003-30.365 45.715-61.336 52.755zm65.351-64.008c-4.45 4.115 4.886 16.433 11.318 11.318l45.27-45.27c11.317-11.318 0-22.635-11.318-11.318-11.317 11.318-33.518 34.405-45.27 45.27z\"/></svg>"
        },
        "$:/core/images/permalink-button": {
            "title": "$:/core/images/permalink-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permalink-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M80.483 48l-7.387 32h-25.58l7.388-32h25.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L100.598 32h3.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-7.096l-7.387 32H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H85.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L69.402 96h-25.58L38.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L27.402 96h-3.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h7.096l7.387-32H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h18.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L58.598 32h25.58z\"/></svg>"
        },
        "$:/core/images/permaview-button": {
            "title": "$:/core/images/permaview-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-permaview-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M81.483 48l-1.846 8h-5.58l1.847-8h5.58zm3.694-16l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L101.598 32h2.403c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8h-6.096l-1.847 8h7.944c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H92.364l-1.846 8H104c4.41 0 7.999 3.582 7.999 8 0 4.41-3.581 8-8 8H86.824l-5.624 24.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L70.402 96h-5.58L59.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L48.402 96h-5.58L37.2 120.358c-.993 4.303-5.29 6.996-9.596 6.002-4.296-.992-6.988-5.293-5.994-9.602L26.402 96h-2.403C19.59 96 16 92.418 16 88c0-4.41 3.581-8 8-8h6.096l1.847-8h-7.944C19.59 72 16 68.418 16 64c0-4.41 3.581-8 8-8h11.637l1.846-8H24C19.59 48 16 44.418 16 40c0-4.41 3.581-8 8-8h17.177l5.624-24.358c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L57.598 32h5.58L68.8 7.642c.993-4.303 5.29-6.996 9.596-6.002 4.296.992 6.988 5.293 5.994 9.602L79.598 32h5.58zM53.904 48l-1.847 8h5.58l1.846-8h-5.579zm22.039 24l-1.847 8h-5.58l1.847-8h5.58zm-27.58 0l-1.846 8h5.579l1.847-8h-5.58z\"/></svg>"
        },
        "$:/core/images/picture": {
            "title": "$:/core/images/picture",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-picture tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M112 68.233v-48.23A4.001 4.001 0 00107.997 16H20.003A4.001 4.001 0 0016 20.003v38.31l9.241-14.593c2.8-4.422 9.023-5.008 12.6-1.186l18.247 20.613 13.687-6.407a8 8 0 018.903 1.492 264.97 264.97 0 002.92 2.739 249.44 249.44 0 006.798 6.066 166.5 166.5 0 002.106 1.778c2.108 1.747 3.967 3.188 5.482 4.237.748.518 1.383.92 2.044 1.33.444.117 1.046.144 1.809.05 1.873-.233 4.238-1.144 6.723-2.547a36.016 36.016 0 003.205-2.044c.558-.4.93-.686 1.07-.802.376-.31.765-.577 1.165-.806zM0 8.007A8.01 8.01 0 018.007 0h111.986A8.01 8.01 0 01128 8.007v111.986a8.01 8.01 0 01-8.007 8.007H8.007A8.01 8.01 0 010 119.993V8.007zM95 42a8 8 0 100-16 8 8 0 000 16zM32 76c15.859 4.83 20.035 7.244 20.035 12S32 95.471 32 102.347c0 6.876 1.285 4.99 1.285 9.653H68s-13.685-6.625-13.685-10.8c0-7.665 10.615-8.34 10.615-13.2 0-7.357-14.078-8.833-32.93-12z\"/></svg>"
        },
        "$:/core/images/plugin-generic-language": {
            "title": "$:/core/images/plugin-generic-language",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M61.207 68.137c-4.324 2.795-6.999 6.656-6.999 10.921 0 7.906 9.19 14.424 21.042 15.336 2.162 3.902 8.598 6.785 16.318 7.01-5.126-1.125-9.117-3.742-10.62-7.01C92.805 93.487 102 86.967 102 79.059c0-8.53-10.699-15.445-23.896-15.445-6.599 0-12.572 1.729-16.897 4.524zm12.794-14.158c-4.324 2.795-10.298 4.524-16.897 4.524-2.619 0-5.14-.272-7.497-.775-3.312 2.25-8.383 3.69-14.067 3.69l-.255-.002c4.119-.892 7.511-2.747 9.478-5.13-6.925-2.704-11.555-7.617-11.555-13.228 0-8.53 10.699-15.445 23.896-15.445C70.301 27.613 81 34.528 81 43.058c0 4.265-2.675 8.126-6.999 10.921zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
        },
        "$:/core/images/plugin-generic-plugin": {
            "title": "$:/core/images/plugin-generic-plugin",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M40.397 76.446V95.34h14.12l-.001-.005a6.912 6.912 0 005.364-11.593l.046-.023a6.912 6.912 0 119.979.526l.086.055a6.914 6.914 0 004.408 10.948l-.023.092h21.32V75.568l-.15.038a6.912 6.912 0 00-11.593-5.364l-.022-.046a6.912 6.912 0 11.526-9.979l.055-.086a6.914 6.914 0 0010.948-4.408c.079.018.158.038.236.059v-15.74h-21.32l.023-.094a6.914 6.914 0 01-4.408-10.947 10.23 10.23 0 00-.086-.055 6.912 6.912 0 10-9.979-.526l-.046.023a6.912 6.912 0 01-5.364 11.593l.001.005h-14.12v12.847A6.912 6.912 0 0129.5 59.843l-.054.086a6.912 6.912 0 10-.526 9.979l.023.046a6.912 6.912 0 0111.455 6.492zM64 0l54.56 32v64L64 128 9.44 96V32L64 0z\"/></svg>"
        },
        "$:/core/images/plugin-generic-theme": {
            "title": "$:/core/images/plugin-generic-theme",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M29.408 91.472L51.469 69.41l-.004-.005a2.22 2.22 0 01.004-3.146c.87-.87 2.281-.872 3.147-.005l9.465 9.464a2.22 2.22 0 01-.005 3.147c-.87.87-2.28.871-3.147.005l-.005-.005-22.061 22.062a6.686 6.686 0 11-9.455-9.455zM60.802 66.38c-2.436-2.704-4.465-5.091-5.817-6.869-6.855-9.014-10.313-4.268-14.226 0-3.913 4.268 1.03 7.726-2.683 10.741-3.713 3.015-3.484 4.06-9.752-1.455-6.267-5.516-6.7-7.034-3.823-10.181 2.877-3.147 5.281 1.808 11.159-3.785 5.877-5.593.94-10.55.94-10.55s12.237-25.014 28.588-23.167c16.351 1.848-6.186-2.392-11.792 17.226-2.4 8.4.447 6.42 4.998 9.968 1.394 1.086 6.03 4.401 11.794 8.685l20.677-20.676 1.615-4.766 7.84-4.689 3.151 3.152-4.688 7.84-4.766 1.615-20.224 20.223c12.663 9.547 28.312 22.146 28.312 26.709 0 7.217-3.071 11.526-9.535 9.164-4.693-1.715-18.768-15.192-28.753-25.897l-2.893 2.893-3.151-3.152 3.029-3.029zM63.953 0l54.56 32v64l-54.56 32-54.56-32V32l54.56-32z\"/></svg>"
        },
        "$:/core/images/preview-closed": {
            "title": "$:/core/images/preview-closed",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-closed tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M.088 64a7.144 7.144 0 001.378 5.458C16.246 88.818 39.17 100.414 64 100.414c24.83 0 47.753-11.596 62.534-30.956A7.144 7.144 0 00127.912 64C110.582 78.416 88.304 87.086 64 87.086 39.696 87.086 17.418 78.416.088 64z\"/><rect width=\"4\" height=\"16\" x=\"62\" y=\"96\" rx=\"4\"/><rect width=\"4\" height=\"16\" x=\"78\" y=\"93\" rx=\"4\" transform=\"rotate(-5 80 101)\"/><rect width=\"4\" height=\"16\" x=\"46\" y=\"93\" rx=\"4\" transform=\"rotate(5 48 101)\"/><rect width=\"4\" height=\"16\" x=\"30\" y=\"88\" rx=\"4\" transform=\"rotate(10 32 96)\"/><rect width=\"4\" height=\"16\" x=\"94\" y=\"88\" rx=\"4\" transform=\"rotate(-10 96 96)\"/><rect width=\"4\" height=\"16\" x=\"110\" y=\"80\" rx=\"4\" transform=\"rotate(-20 112 88)\"/><rect width=\"4\" height=\"16\" x=\"14\" y=\"80\" rx=\"4\" transform=\"rotate(20 16 88)\"/></g></svg>"
        },
        "$:/core/images/preview-open": {
            "title": "$:/core/images/preview-open",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-preview-open tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M64.11 99.588c-24.83 0-47.754-11.596-62.534-30.957a7.148 7.148 0 010-8.675C16.356 40.596 39.28 29 64.11 29c24.83 0 47.753 11.596 62.534 30.956a7.148 7.148 0 010 8.675c-14.78 19.36-37.703 30.957-62.534 30.957zm46.104-32.007c1.44-1.524 1.44-3.638 0-5.162C99.326 50.9 82.439 44 64.147 44S28.968 50.9 18.08 62.42c-1.44 1.523-1.44 3.637 0 5.16C28.968 79.1 45.855 86 64.147 86s35.179-6.9 46.067-18.42z\"/><path d=\"M63.5 88C76.479 88 87 77.479 87 64.5S76.479 41 63.5 41 40 51.521 40 64.5 50.521 88 63.5 88z\"/></g></svg>"
        },
        "$:/core/images/print-button": {
            "title": "$:/core/images/print-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-print-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M112 71V30.5h-.032c-.035-2-.816-3.99-2.343-5.516L86.998 2.357A7.978 7.978 0 0081 .02V0H24a8 8 0 00-8 8v63h8V8h57v14.5c0 4.422 3.582 8 8 8h15V71h8z\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"36\" rx=\"4\"/><rect width=\"64\" height=\"8\" x=\"32\" y=\"52\" rx=\"4\"/><rect width=\"40\" height=\"8\" x=\"32\" y=\"20\" rx=\"4\"/><path d=\"M0 80.005C0 71.165 7.156 64 16 64h96c8.836 0 16 7.155 16 16.005v31.99c0 8.84-7.156 16.005-16 16.005H16c-8.836 0-16-7.155-16-16.005v-31.99zM104 96a8 8 0 100-16 8 8 0 000 16z\"/></g></svg>"
        },
        "$:/core/images/quote": {
            "title": "$:/core/images/quote",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-quote tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M51.219 117.713V62.199H27.427c0-8.891 1.683-16.401 5.047-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.36 3.184-20.728 6.669-6.368 3.484-11.835 7.87-16.401 13.157C9.524 27.113 5.98 33.241 3.456 40.21.933 47.18-.21 54.63.03 62.56v55.153H51.22zm76.781 0V62.199h-23.791c0-8.891 1.682-16.401 5.046-22.53 3.365-6.127 9.613-10.754 18.745-13.878V2c-7.45.961-14.359 3.184-20.727 6.669-6.369 3.484-11.836 7.87-16.402 13.157-4.566 5.287-8.11 11.415-10.634 18.384-2.523 6.97-3.665 14.42-3.424 22.35v55.153H128z\"/></svg>"
        },
        "$:/core/images/refresh-button": {
            "title": "$:/core/images/refresh-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-refresh-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M106.369 39.433c10.16 20.879 6.57 46.764-10.771 64.106-21.87 21.87-57.327 21.87-79.196 0-21.87-21.87-21.87-57.326 0-79.196a8 8 0 1111.314 11.314c-15.621 15.62-15.621 40.947 0 56.568 15.62 15.621 40.947 15.621 56.568 0C97.72 78.79 99.6 58.175 89.924 42.73l-6.44 12.264a8 8 0 11-14.166-7.437L84.435 18.76a8 8 0 0110.838-3.345l28.873 15.345a8 8 0 11-7.51 14.129l-10.267-5.457zm-8.222-12.368c-.167-.19-.336-.38-.506-.57l.96-.296-.454.866z\"/></svg>"
        },
        "$:/core/images/right-arrow": {
            "title": "$:/core/images/right-arrow",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-right-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M99.069 64.173c0 2.027-.77 4.054-2.316 5.6l-55.98 55.98a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l50.382-50.382-50.382-50.382a7.92 7.92 0 010-11.195c3.086-3.085 8.104-3.092 11.196 0l55.98 55.98a7.892 7.892 0 012.316 5.595z\"/></svg>"
        },
        "$:/core/images/rotate-left": {
            "title": "$:/core/images/rotate-left",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-rotate-left tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"32\" height=\"80\" rx=\"8\"/><rect width=\"80\" height=\"32\" x=\"48\" y=\"96\" rx=\"8\"/><path d=\"M61.32 36.65c19.743 2.45 35.023 19.287 35.023 39.693a4 4 0 01-8 0c0-15.663-11.254-28.698-26.117-31.46l3.916 3.916a4 4 0 11-5.657 5.657L49.172 43.142a4 4 0 010-5.657l11.313-11.313a4 4 0 115.657 5.656l-4.821 4.822z\"/></g></svg>"
        },
        "$:/core/images/save-button": {
            "title": "$:/core/images/save-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-save-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M120.783 34.33c4.641 8.862 7.266 18.948 7.266 29.646 0 35.347-28.653 64-64 64-35.346 0-64-28.653-64-64 0-35.346 28.654-64 64-64 18.808 0 35.72 8.113 47.43 21.03l2.68-2.68c3.13-3.13 8.197-3.132 11.321-.008 3.118 3.118 3.121 8.193-.007 11.32l-4.69 4.691zm-12.058 12.058a47.876 47.876 0 013.324 17.588c0 26.51-21.49 48-48 48s-48-21.49-48-48 21.49-48 48-48c14.39 0 27.3 6.332 36.098 16.362L58.941 73.544 41.976 56.578c-3.127-3.127-8.201-3.123-11.32-.005-3.123 3.124-3.119 8.194.006 11.319l22.617 22.617a7.992 7.992 0 005.659 2.347c2.05 0 4.101-.783 5.667-2.349l44.12-44.12z\"/></svg>"
        },
        "$:/core/images/size": {
            "title": "$:/core/images/size",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-size tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M92.343 26l-9.171 9.172a4 4 0 105.656 5.656l16-16a4 4 0 000-5.656l-16-16a4 4 0 10-5.656 5.656L92.343 18H22a4 4 0 00-4 4v70.343l-9.172-9.171a4 4 0 10-5.656 5.656l16 16a4 4 0 005.656 0l16-16a4 4 0 10-5.656-5.656L26 92.343V22l-4 4h70.343zM112 52v64l4-4H52a4 4 0 100 8h64a4 4 0 004-4V52a4 4 0 10-8 0z\"/></svg>"
        },
        "$:/core/images/spiral": {
            "title": "$:/core/images/spiral",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-spiral tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M64.534 68.348c3.39 0 6.097-2.62 6.476-5.968l-4.755-.538 4.75.583c.377-3.07-1.194-6.054-3.89-7.78-2.757-1.773-6.34-2.01-9.566-.7-3.46 1.403-6.14 4.392-7.35 8.148l-.01.026c-1.3 4.08-.72 8.64 1.58 12.52 2.5 4.2 6.77 7.2 11.76 8.27 5.37 1.15 11.11-.05 15.83-3.31 5.04-3.51 8.46-9.02 9.45-15.3 1.05-6.7-.72-13.63-4.92-19.19l.02.02c-4.42-5.93-11.2-9.82-18.78-10.78-7.96-1.01-16.13 1.31-22.59 6.43-6.81 5.39-11.18 13.41-12.11 22.26-.98 9.27 1.87 18.65 7.93 26.02 6.32 7.69 15.6 12.56 25.74 13.48 10.54.96 21.15-2.42 29.45-9.4l.01-.01c8.58-7.25 13.94-17.78 14.86-29.21.94-11.84-2.96-23.69-10.86-32.9-8.19-9.5-19.95-15.36-32.69-16.27-13.16-.94-26.24 3.49-36.34 12.34l.01-.01c-10.41 9.08-16.78 22.1-17.68 36.15-.93 14.44 4.03 28.77 13.79 39.78 10.03 11.32 24.28 18.2 39.6 19.09 15.73.92 31.31-4.56 43.24-15.234 12.23-10.954 19.61-26.44 20.5-43.074a4.785 4.785 0 00-4.52-5.03 4.778 4.778 0 00-5.03 4.52c-.75 14.1-7 27.2-17.33 36.45-10.03 8.98-23.11 13.58-36.3 12.81-12.79-.75-24.67-6.48-33-15.89-8.07-9.11-12.17-20.94-11.41-32.827.74-11.52 5.942-22.15 14.43-29.54l.01-.01c8.18-7.17 18.74-10.75 29.35-9.998 10.21.726 19.6 5.41 26.11 12.96 6.24 7.273 9.32 16.61 8.573 25.894-.718 8.9-4.88 17.064-11.504 22.66l.01-.007c-6.36 5.342-14.44 7.92-22.425 7.19-7.604-.68-14.52-4.314-19.21-10.027-4.44-5.4-6.517-12.23-5.806-18.94.67-6.3 3.76-11.977 8.54-15.766 4.46-3.54 10.05-5.128 15.44-4.44 5.03.63 9.46 3.18 12.32 7.01l.02.024c2.65 3.5 3.75 7.814 3.1 11.92-.59 3.71-2.58 6.925-5.45 8.924-2.56 1.767-5.61 2.403-8.38 1.81-2.42-.516-4.42-1.92-5.53-3.79-.93-1.56-1.15-3.3-.69-4.75l-4.56-1.446L59.325 65c.36-1.12 1.068-1.905 1.84-2.22.25-.103.48-.14.668-.13.06.006.11.015.14.025.01 0 .01 0-.01-.01a1.047 1.047 0 01-.264-.332c-.15-.29-.23-.678-.18-1.11l-.005.04c.15-1.332 1.38-2.523 3.035-2.523-2.65 0-4.79 2.144-4.79 4.787s2.14 4.785 4.78 4.785z\"/></svg>"
        },
        "$:/core/images/stamp": {
            "title": "$:/core/images/stamp",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-stamp tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M49.733 64H16.01C11.584 64 8 67.583 8 72.003V97h112V72.003A8 8 0 00111.99 64H78.267A22.813 22.813 0 0175.5 53.077c0-6.475 2.687-12.324 7.009-16.497A22.818 22.818 0 0087 22.952C87 10.276 76.703 0 64 0S41 10.276 41 22.952c0 5.103 1.669 9.817 4.491 13.628 4.322 4.173 7.009 10.022 7.009 16.497 0 3.954-1.002 7.675-2.767 10.923zM8 104h112v8H8v-8z\"/></svg>"
        },
        "$:/core/images/star-filled": {
            "title": "$:/core/images/star-filled",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-star-filled tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M61.836 96.823l37.327 27.287c2.72 1.99 6.379-.69 5.343-3.912L90.29 75.988l-1.26 3.91 37.285-27.345c2.718-1.993 1.32-6.327-2.041-6.33l-46.113-.036 3.3 2.416L67.176 4.416c-1.04-3.221-5.563-3.221-6.604 0L46.29 48.603l3.3-2.416-46.113.036c-3.362.003-4.759 4.337-2.04 6.33L38.72 79.898l-1.26-3.91-14.216 44.21c-1.036 3.223 2.622 5.901 5.343 3.912l37.326-27.287h-4.078z\"/></svg>"
        },
        "$:/core/images/storyview-classic": {
            "title": "$:/core/images/storyview-classic",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-classic tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm0 48C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0 32C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
        },
        "$:/core/images/storyview-pop": {
            "title": "$:/core/images/storyview-pop",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-pop tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16C19.581 16 16 19.578 16 23.992v16.016C16 44.422 19.588 48 24 48h80c4.419 0 8-3.578 8-7.992V23.992c0-4.414-3.588-7.992-8-7.992H24zm-7.99 40C11.587 56 8 59.578 8 63.992v16.016C8 84.422 11.584 88 16.01 88h95.98c4.424 0 8.01-3.578 8.01-7.992V63.992c0-4.414-3.584-7.992-8.01-7.992H16.01zM24 96C19.581 96 16 99.59 16 104c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24zm0-32C19.581 64 16 67.59 16 72c0 4.418 3.588 8 8 8h80c4.419 0 8-3.59 8-8 0-4.418-3.588-8-8-8H24z\"/></svg>"
        },
        "$:/core/images/storyview-zoomin": {
            "title": "$:/core/images/storyview-zoomin",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-storyview-zoomin tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M8.007 0A8.01 8.01 0 000 8.007v111.986A8.01 8.01 0 008.007 128h111.986a8.01 8.01 0 008.007-8.007V8.007A8.01 8.01 0 00119.993 0H8.007zm15.992 16A8 8 0 0016 24.009V71.99C16 76.414 19.588 80 24 80h80a8 8 0 008-8.009V24.01c0-4.423-3.588-8.009-8-8.009H24z\"/></svg>"
        },
        "$:/core/images/strikethrough": {
            "title": "$:/core/images/strikethrough",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-strikethrough tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M92.794 38.726h15.422c-.229-6.74-1.514-12.538-3.856-17.393-2.342-4.855-5.54-8.881-9.596-12.08-4.055-3.199-8.767-5.54-14.136-7.025C75.258.743 69.433 0 63.15 0a62.76 62.76 0 00-16.364 2.142C41.474 3.57 36.733 5.74 32.564 8.653c-4.17 2.913-7.511 6.626-10.025 11.138-2.513 4.512-3.77 9.853-3.77 16.022 0 5.597 1.115 10.252 3.342 13.965 2.228 3.712 5.198 6.74 8.91 9.081 3.713 2.342 7.911 4.227 12.595 5.655a194.641 194.641 0 0014.308 3.77c4.855 1.085 9.624 2.142 14.308 3.17 4.683 1.028 8.881 2.37 12.594 4.027 3.713 1.656 6.683 3.798 8.91 6.425 2.228 2.628 3.342 6.055 3.342 10.281 0 4.456-.914 8.111-2.742 10.967a19.953 19.953 0 01-7.197 6.768c-2.97 1.657-6.311 2.828-10.024 3.513a60.771 60.771 0 01-11.052 1.028c-4.57 0-9.025-.571-13.366-1.713-4.34-1.143-8.139-2.913-11.394-5.312-3.256-2.4-5.884-5.455-7.883-9.168-1.999-3.712-2.998-8.139-2.998-13.28H15c0 7.426 1.342 13.852 4.027 19.278 2.684 5.426 6.34 9.881 10.966 13.365 4.627 3.484 9.996 6.083 16.107 7.797 6.112 1.713 12.595 2.57 19.449 2.57 5.597 0 11.223-.657 16.878-1.97 5.655-1.314 10.767-3.428 15.336-6.34 4.57-2.914 8.31-6.683 11.224-11.31 2.913-4.626 4.37-10.195 4.37-16.707 0-6.054-1.115-11.08-3.342-15.079-2.228-3.998-5.198-7.31-8.91-9.938-3.713-2.627-7.911-4.712-12.595-6.254a170.83 170.83 0 00-14.308-4.027 549.669 549.669 0 00-14.308-3.17c-4.683-.971-8.881-2.2-12.594-3.684-3.713-1.485-6.683-3.399-8.91-5.74-2.228-2.342-3.342-5.398-3.342-9.168 0-3.998.771-7.34 2.313-10.024 1.543-2.685 3.599-4.826 6.17-6.426 2.57-1.599 5.51-2.741 8.824-3.427a49.767 49.767 0 0110.11-1.028c8.453 0 15.393 1.97 20.819 5.912 5.426 3.94 8.596 10.31 9.51 19.106z\"/><path d=\"M5 54h118v16H5z\"/></g></svg>"
        },
        "$:/core/images/subscript": {
            "title": "$:/core/images/subscript",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-subscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 128.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
        },
        "$:/core/images/superscript": {
            "title": "$:/core/images/superscript",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-superscript tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M2.272 16h19.91l21.649 33.675L66.414 16h18.708L53.585 61.969l33.809 49.443H67.082L43.296 74.93l-24.187 36.48H0L33.808 61.97 2.272 16zM127.91 63.412H85.328c.059-5.168 1.306-9.681 3.741-13.542 2.435-3.86 5.761-7.216 9.978-10.066a112.388 112.388 0 016.325-4.321 50.09 50.09 0 006.058-4.499c1.841-1.603 3.356-3.34 4.543-5.211 1.188-1.871 1.812-4.024 1.871-6.46 0-1.128-.133-2.33-.4-3.607a9.545 9.545 0 00-1.56-3.564c-.772-1.098-1.84-2.019-3.207-2.761-1.366-.743-3.148-1.114-5.345-1.114-2.02 0-3.697.4-5.033 1.203-1.337.801-2.406 1.9-3.208 3.296-.801 1.396-1.395 3.044-1.781 4.944-.386 1.9-.609 3.95-.668 6.147H86.486c0-3.445.46-6.637 1.38-9.577.921-2.94 2.302-5.478 4.143-7.617 1.841-2.138 4.083-3.815 6.726-5.033 2.643-1.217 5.716-1.826 9.22-1.826 3.802 0 6.979.623 9.533 1.87 2.554 1.248 4.617 2.822 6.191 4.722 1.574 1.9 2.688 3.965 3.341 6.192.653 2.227.98 4.35.98 6.37 0 2.494-.386 4.75-1.158 6.77a21.803 21.803 0 01-3.118 5.568 31.516 31.516 0 01-4.454 4.677 66.788 66.788 0 01-5.167 4.009 139.198 139.198 0 01-5.346 3.563 79.237 79.237 0 00-4.944 3.386c-1.514 1.128-2.836 2.3-3.964 3.518-1.129 1.218-1.9 2.51-2.317 3.876h30.379v9.087z\"/></svg>"
        },
        "$:/core/images/tag-button": {
            "title": "$:/core/images/tag-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tag-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M18.164 47.66l.004 4.105c.003 3.823 2.19 9.097 4.885 11.792l61.85 61.85c2.697 2.697 7.068 2.69 9.769-.01L125.767 94.3a6.903 6.903 0 00.01-9.77L63.928 22.683c-2.697-2.697-7.976-4.88-11.796-4.881l-27.076-.007a6.902 6.902 0 00-6.91 6.91l.008 9.96.287.033c3.73.411 8.489-.044 13.365-1.153a9.702 9.702 0 0111.14-3.662l.291-.13.128.285a9.7 9.7 0 013.3 2.17c3.796 3.796 3.801 9.945.012 13.734-3.618 3.618-9.386 3.777-13.204.482-5.365 1.122-10.674 1.596-15.309 1.237z\"/><path d=\"M47.633 39.532l.023.051c-9.689 4.356-21.584 6.799-30.396 5.828C5.273 44.089-1.028 36.43 2.443 24.078 5.562 12.976 14.3 4.361 24.047 1.548c10.68-3.083 19.749 1.968 19.749 13.225h-8.623c0-4.859-3.078-6.573-8.735-4.94-6.91 1.995-13.392 8.383-15.694 16.577-1.915 6.818.417 9.653 7.46 10.43 7.126.785 17.531-1.352 25.917-5.121l.027.06.036-.017c1.76-.758 6.266 6.549 3.524 7.74a2.8 2.8 0 01-.075.03z\"/></g></svg>"
        },
        "$:/core/images/theme-button": {
            "title": "$:/core/images/theme-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-theme-button tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M55.854 66.945a122.626 122.626 0 01-3.9-4.819c-11.064-14.548-16.645-6.888-22.96 0-6.315 6.888 1.664 12.47-4.33 17.335-5.993 4.866-5.623 6.552-15.737-2.35-10.115-8.9-10.815-11.351-6.172-16.43 4.644-5.08 8.524 2.918 18.01-6.108 9.485-9.026 1.517-17.026 1.517-17.026S42.03-2.824 68.42.157c26.39 2.982-9.984-3.86-19.031 27.801-3.874 13.556.72 10.362 8.066 16.087 1.707 1.33 6.428 4.732 12.671 9.318-6.129 5.879-11.157 10.669-14.273 13.582zm11.641 12.947c16.013 17.036 37.742 37.726 45.117 40.42 10.432 3.813 15.388-3.141 15.388-14.79 0-7.151-23.83-26.542-43.924-41.769-7.408 7.156-13.376 12.953-16.58 16.139z\"/><path d=\"M11.069 109.828L46.31 74.587a3.56 3.56 0 115.037-5.032l15.098 15.098a3.56 3.56 0 11-5.032 5.037l-35.24 35.241c-4.171 4.17-10.933 4.17-15.104 0-4.17-4.17-4.17-10.933 0-15.103zM124.344 6.622l5.034 5.034-7.49 12.524-7.613 2.58L61.413 79.62l-5.034-5.034 52.861-52.862 2.58-7.614 12.524-7.49z\"/></g></svg>"
        },
        "$:/core/images/timestamp-off": {
            "title": "$:/core/images/timestamp-off",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-off tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M58.25 35.88c-18.777 0-33.998 15.224-33.998 33.998 0 18.773 15.22 34.002 33.998 34.002 18.784 0 34.002-15.23 34.002-34.002 0-18.774-15.218-33.998-34.002-33.998zm-3.03 50.123H44.196v-34H55.22v34zm16.976 0H61.17v-34h11.025v34z\"/></g></svg>"
        },
        "$:/core/images/timestamp-on": {
            "title": "$:/core/images/timestamp-on",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-timestamp-on tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><path d=\"M58.25 11C26.08 11 0 37.082 0 69.25s26.08 58.25 58.25 58.25c32.175 0 58.25-26.082 58.25-58.25S90.425 11 58.25 11zm0 100.5C34.914 111.5 16 92.586 16 69.25 16 45.92 34.914 27 58.25 27s42.25 18.92 42.25 42.25c0 23.336-18.914 42.25-42.25 42.25zM49.704 10a5 5 0 010-10H66.69a5 5 0 015 5c.006 2.757-2.238 5-5 5H49.705z\"/><path d=\"M13.41 27.178a5.005 5.005 0 01-7.045-.613 5.008 5.008 0 01.616-7.047l9.95-8.348a5 5 0 016.429 7.661l-9.95 8.348zm89.573 0a5.005 5.005 0 007.045-.613 5.008 5.008 0 00-.616-7.047l-9.95-8.348a5 5 0 00-6.428 7.661l9.95 8.348zM65.097 71.072c0 3.826-3.09 6.928-6.897 6.928-3.804.006-6.9-3.102-6.903-6.928 0 0 4.76-39.072 6.903-39.072s6.897 39.072 6.897 39.072z\"/></g></svg>"
        },
        "$:/core/images/tip": {
            "title": "$:/core/images/tip",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-tip tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 128.242c35.346 0 64-28.654 64-64 0-35.346-28.654-64-64-64-35.346 0-64 28.654-64 64 0 35.346 28.654 64 64 64zm11.936-36.789c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349C54.33 94.05 58.824 95.82 64 95.82c5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.456c-.624 4.129-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zm0 4.492c-.624 4.13-5.73 7.349-11.936 7.349-6.206 0-11.312-3.22-11.936-7.349 2.266 2.597 6.76 4.366 11.936 4.366 5.175 0 9.67-1.769 11.936-4.366zM64.3 24.242c11.618 0 23.699 7.82 23.699 24.2S75.92 71.754 75.92 83.576c0 5.873-5.868 9.26-11.92 9.26s-12.027-3.006-12.027-9.26C51.973 71.147 40 65.47 40 48.442s12.683-24.2 24.301-24.2z\"/></svg>"
        },
        "$:/core/images/transcludify": {
            "title": "$:/core/images/transcludify",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-transcludify-button tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M0 59.482c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.651-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02C1.36 67.377.591 67.288 0 67.288v-7.806zm24.66 0c.591 0 1.36-.089 2.306-.266a10.417 10.417 0 002.75-.932 6.762 6.762 0 002.306-1.907c.65-.828.976-1.863.976-3.104V35.709c0-2.01.414-3.74 1.242-5.19.828-1.448 1.833-2.66 3.016-3.636s2.425-1.7 3.726-2.173c1.3-.473 2.424-.71 3.37-.71h8.073v7.451h-4.88c-1.241 0-2.232.207-2.97.621-.74.414-1.302.932-1.686 1.552a4.909 4.909 0 00-.71 1.996c-.089.71-.133 1.39-.133 2.04v16.677c0 1.715-.325 3.134-.976 4.258-.65 1.123-1.434 2.025-2.35 2.705-.917.68-1.863 1.168-2.839 1.464-.976.296-1.818.473-2.528.532v.178c.71.059 1.552.207 2.528.443.976.237 1.922.68 2.839 1.33.916.651 1.7 1.583 2.35 2.795.65 1.212.976 2.853.976 4.923v16.144c0 .65.044 1.33.133 2.04.089.71.325 1.375.71 1.996.384.621.946 1.139 1.685 1.553.74.414 1.73.62 2.972.62h4.879v7.452h-8.073c-.946 0-2.07-.237-3.37-.71-1.301-.473-2.543-1.197-3.726-2.173-1.183-.976-2.188-2.188-3.016-3.637-.828-1.449-1.242-3.179-1.242-5.19V74.119c0-1.42-.325-2.572-.976-3.46-.65-.886-1.419-1.581-2.306-2.084a8.868 8.868 0 00-2.75-1.02c-.946-.177-1.715-.266-2.306-.266v-7.806zm43.965-3.538L80.6 52.041l2.306 7.097-12.063 3.903 7.628 10.378-6.12 4.435-7.63-10.467-7.45 10.201-5.943-4.524 7.628-10.023-12.152-4.17 2.306-7.096 12.064 4.17V43.347h7.451v12.596zm34.425 11.344c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806zm24.66 0c-.65 0-1.449.089-2.395.266-.946.177-1.863.488-2.75.931a6.356 6.356 0 00-2.262 1.908c-.62.828-.931 1.862-.931 3.104v17.564c0 2.01-.414 3.74-1.242 5.189-.828 1.449-1.833 2.661-3.016 3.637s-2.425 1.7-3.726 2.173c-1.3.473-2.424.71-3.37.71h-8.073v-7.451h4.88c1.241 0 2.232-.207 2.97-.621.74-.414 1.302-.932 1.686-1.553a4.9 4.9 0 00.71-1.995c.089-.71.133-1.39.133-2.04V72.432c0-1.715.325-3.134.976-4.258.65-1.124 1.434-2.01 2.35-2.661.917-.65 1.863-1.124 2.839-1.42.976-.295 1.818-.502 2.528-.62v-.178c-.71-.059-1.552-.207-2.528-.443-.976-.237-1.922-.68-2.839-1.33-.916-.651-1.7-1.583-2.35-2.795-.65-1.212-.976-2.853-.976-4.923V37.66c0-.651-.044-1.331-.133-2.04a4.909 4.909 0 00-.71-1.997c-.384-.62-.946-1.138-1.685-1.552-.74-.414-1.73-.62-2.972-.62h-4.879V24h8.073c.946 0 2.07.237 3.37.71 1.301.473 2.543 1.197 3.726 2.173 1.183.976 2.188 2.188 3.016 3.637.828 1.449 1.242 3.178 1.242 5.189v16.943c0 1.419.31 2.572.931 3.46a6.897 6.897 0 002.262 2.084 8.868 8.868 0 002.75 1.02c.946.177 1.745.266 2.395.266v7.806z\"/></svg>"
        },
        "$:/core/images/twitter": {
            "title": "$:/core/images/twitter",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-twitter tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M41.626 115.803A73.376 73.376 0 012 104.235c2.022.238 4.08.36 6.166.36 12.111 0 23.258-4.117 32.105-11.023-11.312-.208-20.859-7.653-24.148-17.883a25.98 25.98 0 0011.674-.441C15.971 72.881 7.061 62.474 7.061 49.997c0-.108 0-.216.002-.323a25.824 25.824 0 0011.709 3.22c-6.936-4.617-11.5-12.5-11.5-21.433 0-4.719 1.274-9.142 3.5-12.945 12.75 15.579 31.797 25.83 53.281 26.904-.44-1.884-.67-3.85-.67-5.868 0-14.22 11.575-25.75 25.852-25.75a25.865 25.865 0 0118.869 8.132 51.892 51.892 0 0016.415-6.248c-1.93 6.012-6.029 11.059-11.366 14.246A51.844 51.844 0 00128 25.878a52.428 52.428 0 01-12.9 13.33c.05 1.104.075 2.214.075 3.33 0 34.028-26 73.265-73.549 73.265\"/></svg>"
        },
        "$:/core/images/underline": {
            "title": "$:/core/images/underline",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-underline tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M7 117.421h114.248V128H7v-10.579zm97.871-18.525V0h-16.26v55.856c0 4.463-.605 8.576-1.816 12.338-1.212 3.762-3.03 7.046-5.452 9.851-2.423 2.806-5.452 4.974-9.086 6.504-3.635 1.53-7.939 2.296-12.912 2.296-6.25 0-11.159-1.786-14.73-5.356-3.57-3.571-5.356-8.417-5.356-14.538V0H23v65.038c0 5.356.542 10.234 1.626 14.633 1.084 4.4 2.965 8.194 5.643 11.382 2.678 3.188 6.185 5.643 10.52 7.365 4.337 1.721 9.756 2.582 16.26 2.582 7.27 0 13.582-1.435 18.938-4.304 5.356-2.87 9.755-7.365 13.199-13.486h.382v15.686h15.303z\"/></svg>"
        },
        "$:/core/images/unfold-all-button": {
            "title": "$:/core/images/unfold-all-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold-all tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><rect width=\"128\" height=\"16\" y=\"64\" rx=\"8\"/><path d=\"M63.945 60.624c-2.05 0-4.101-.78-5.666-2.345L35.662 35.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 41.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 58.279a7.986 7.986 0 01-5.663 2.346zM64.004 124.565c-2.05 0-4.102-.78-5.666-2.345L35.721 99.603c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 105.255l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.662 122.22a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
        },
        "$:/core/images/unfold-button": {
            "title": "$:/core/images/unfold-button",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unfold tc-image-button\" viewBox=\"0 0 128 128\"><g fill-rule=\"evenodd\"><rect width=\"128\" height=\"16\" rx=\"8\"/><path d=\"M63.945 63.624c-2.05 0-4.101-.78-5.666-2.345L35.662 38.662c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.192-3.122 11.319.005L63.94 44.314l16.966-16.966c3.124-3.124 8.194-3.129 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319L69.603 61.279a7.986 7.986 0 01-5.663 2.346zM64.004 105.682c-2.05.001-4.102-.78-5.666-2.344L35.721 80.721c-3.125-3.125-3.13-8.195-.005-11.319 3.118-3.118 8.191-3.122 11.318.005L64 86.373l16.966-16.966c3.124-3.125 8.194-3.13 11.318-.005 3.118 3.118 3.122 8.192-.005 11.319l-22.617 22.617a7.986 7.986 0 01-5.663 2.346z\"/></g></svg>"
        },
        "$:/core/images/unlocked-padlock": {
            "title": "$:/core/images/unlocked-padlock",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-unlocked-padlock tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M48.627 64H105v32.01C105 113.674 90.674 128 73.001 128H56C38.318 128 24 113.677 24 96.01V64h6.136c-10.455-12.651-27.364-35.788-4.3-55.142 24.636-20.672 45.835 4.353 55.777 16.201 9.943 11.85-2.676 22.437-12.457 9.892-9.78-12.545-21.167-24.146-33.207-14.043-12.041 10.104-1.757 22.36 8.813 34.958 2.467 2.94 3.641 5.732 3.865 8.134zm19.105 28.364A8.503 8.503 0 0064.5 76a8.5 8.5 0 00-3.498 16.25l-5.095 22.77H72.8l-5.07-22.656z\"/></svg>"
        },
        "$:/core/images/up-arrow": {
            "title": "$:/core/images/up-arrow",
            "created": "20150316000544368",
            "modified": "20150316000831867",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-up-arrow tc-image-button\" viewBox=\"0 0 128 128\"><path d=\"M63.892.281c2.027 0 4.054.77 5.6 2.316l55.98 55.98a7.92 7.92 0 010 11.196c-3.086 3.085-8.104 3.092-11.196 0L63.894 19.393 13.513 69.774a7.92 7.92 0 01-11.196 0c-3.085-3.086-3.092-8.105 0-11.196l55.98-55.98A7.892 7.892 0 0163.893.28z\"/></svg>"
        },
        "$:/core/images/video": {
            "title": "$:/core/images/video",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-video tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M64 12c-34.91 0-55.273 2.917-58.182 5.833C2.91 20.75 0 41.167 0 64.5c0 23.333 2.91 43.75 5.818 46.667C8.728 114.083 29.091 117 64 117c34.91 0 55.273-2.917 58.182-5.833C125.09 108.25 128 87.833 128 64.5c0-23.333-2.91-43.75-5.818-46.667C119.272 14.917 98.909 12 64 12zm-9.084 32.618c-3.813-2.542-6.905-.879-6.905 3.698v31.368c0 4.585 3.099 6.235 6.905 3.698l22.168-14.779c3.813-2.542 3.806-6.669 0-9.206L54.916 44.618z\"/></svg>"
        },
        "$:/core/images/warning": {
            "title": "$:/core/images/warning",
            "tags": "$:/tags/Image",
            "text": "<svg width=\"22pt\" height=\"22pt\" class=\"tc-image-warning tc-image-button\" viewBox=\"0 0 128 128\"><path fill-rule=\"evenodd\" d=\"M57.072 11c3.079-5.333 10.777-5.333 13.856 0l55.426 96c3.079 5.333-.77 12-6.928 12H8.574c-6.158 0-10.007-6.667-6.928-12l55.426-96zM64 37c-4.418 0-8 3.582-8 7.994v28.012C56 77.421 59.59 81 64 81c4.418 0 8-3.582 8-7.994V44.994C72 40.579 68.41 37 64 37zm0 67a8 8 0 100-16 8 8 0 000 16z\"/></svg>"
        },
        "$:/language/Buttons/AdvancedSearch/Caption": {
            "title": "$:/language/Buttons/AdvancedSearch/Caption",
            "text": "advanced search"
        },
        "$:/language/Buttons/AdvancedSearch/Hint": {
            "title": "$:/language/Buttons/AdvancedSearch/Hint",
            "text": "Advanced search"
        },
        "$:/language/Buttons/Cancel/Caption": {
            "title": "$:/language/Buttons/Cancel/Caption",
            "text": "cancel"
        },
        "$:/language/Buttons/Cancel/Hint": {
            "title": "$:/language/Buttons/Cancel/Hint",
            "text": "Discard changes to this tiddler"
        },
        "$:/language/Buttons/Clone/Caption": {
            "title": "$:/language/Buttons/Clone/Caption",
            "text": "clone"
        },
        "$:/language/Buttons/Clone/Hint": {
            "title": "$:/language/Buttons/Clone/Hint",
            "text": "Clone this tiddler"
        },
        "$:/language/Buttons/Close/Caption": {
            "title": "$:/language/Buttons/Close/Caption",
            "text": "close"
        },
        "$:/language/Buttons/Close/Hint": {
            "title": "$:/language/Buttons/Close/Hint",
            "text": "Close this tiddler"
        },
        "$:/language/Buttons/CloseAll/Caption": {
            "title": "$:/language/Buttons/CloseAll/Caption",
            "text": "close all"
        },
        "$:/language/Buttons/CloseAll/Hint": {
            "title": "$:/language/Buttons/CloseAll/Hint",
            "text": "Close all tiddlers"
        },
        "$:/language/Buttons/CloseOthers/Caption": {
            "title": "$:/language/Buttons/CloseOthers/Caption",
            "text": "close others"
        },
        "$:/language/Buttons/CloseOthers/Hint": {
            "title": "$:/language/Buttons/CloseOthers/Hint",
            "text": "Close other tiddlers"
        },
        "$:/language/Buttons/ControlPanel/Caption": {
            "title": "$:/language/Buttons/ControlPanel/Caption",
            "text": "control panel"
        },
        "$:/language/Buttons/ControlPanel/Hint": {
            "title": "$:/language/Buttons/ControlPanel/Hint",
            "text": "Open control panel"
        },
        "$:/language/Buttons/CopyToClipboard/Caption": {
            "title": "$:/language/Buttons/CopyToClipboard/Caption",
            "text": "copy to clipboard"
        },
        "$:/language/Buttons/CopyToClipboard/Hint": {
            "title": "$:/language/Buttons/CopyToClipboard/Hint",
            "text": "Copy this text to the clipboard"
        },
        "$:/language/Buttons/Delete/Caption": {
            "title": "$:/language/Buttons/Delete/Caption",
            "text": "delete"
        },
        "$:/language/Buttons/Delete/Hint": {
            "title": "$:/language/Buttons/Delete/Hint",
            "text": "Delete this tiddler"
        },
        "$:/language/Buttons/Edit/Caption": {
            "title": "$:/language/Buttons/Edit/Caption",
            "text": "edit"
        },
        "$:/language/Buttons/Edit/Hint": {
            "title": "$:/language/Buttons/Edit/Hint",
            "text": "Edit this tiddler"
        },
        "$:/language/Buttons/Encryption/Caption": {
            "title": "$:/language/Buttons/Encryption/Caption",
            "text": "encryption"
        },
        "$:/language/Buttons/Encryption/Hint": {
            "title": "$:/language/Buttons/Encryption/Hint",
            "text": "Set or clear a password for saving this wiki"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
            "text": "clear password"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
            "text": "Clear the password and save this wiki without encryption"
        },
        "$:/language/Buttons/Encryption/SetPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Caption",
            "text": "set password"
        },
        "$:/language/Buttons/Encryption/SetPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Hint",
            "text": "Set a password for saving this wiki with encryption"
        },
        "$:/language/Buttons/ExportPage/Caption": {
            "title": "$:/language/Buttons/ExportPage/Caption",
            "text": "export all"
        },
        "$:/language/Buttons/ExportPage/Hint": {
            "title": "$:/language/Buttons/ExportPage/Hint",
            "text": "Export all tiddlers"
        },
        "$:/language/Buttons/ExportTiddler/Caption": {
            "title": "$:/language/Buttons/ExportTiddler/Caption",
            "text": "export tiddler"
        },
        "$:/language/Buttons/ExportTiddler/Hint": {
            "title": "$:/language/Buttons/ExportTiddler/Hint",
            "text": "Export tiddler"
        },
        "$:/language/Buttons/ExportTiddlers/Caption": {
            "title": "$:/language/Buttons/ExportTiddlers/Caption",
            "text": "export tiddlers"
        },
        "$:/language/Buttons/ExportTiddlers/Hint": {
            "title": "$:/language/Buttons/ExportTiddlers/Hint",
            "text": "Export tiddlers"
        },
        "$:/language/Buttons/SidebarSearch/Hint": {
            "title": "$:/language/Buttons/SidebarSearch/Hint",
            "text": "Select the sidebar search field"
        },
        "$:/language/Buttons/Fold/Caption": {
            "title": "$:/language/Buttons/Fold/Caption",
            "text": "fold tiddler"
        },
        "$:/language/Buttons/Fold/Hint": {
            "title": "$:/language/Buttons/Fold/Hint",
            "text": "Fold the body of this tiddler"
        },
        "$:/language/Buttons/Fold/FoldBar/Caption": {
            "title": "$:/language/Buttons/Fold/FoldBar/Caption",
            "text": "fold-bar"
        },
        "$:/language/Buttons/Fold/FoldBar/Hint": {
            "title": "$:/language/Buttons/Fold/FoldBar/Hint",
            "text": "Optional bars to fold and unfold tiddlers"
        },
        "$:/language/Buttons/Unfold/Caption": {
            "title": "$:/language/Buttons/Unfold/Caption",
            "text": "unfold tiddler"
        },
        "$:/language/Buttons/Unfold/Hint": {
            "title": "$:/language/Buttons/Unfold/Hint",
            "text": "Unfold the body of this tiddler"
        },
        "$:/language/Buttons/FoldOthers/Caption": {
            "title": "$:/language/Buttons/FoldOthers/Caption",
            "text": "fold other tiddlers"
        },
        "$:/language/Buttons/FoldOthers/Hint": {
            "title": "$:/language/Buttons/FoldOthers/Hint",
            "text": "Fold the bodies of other opened tiddlers"
        },
        "$:/language/Buttons/FoldAll/Caption": {
            "title": "$:/language/Buttons/FoldAll/Caption",
            "text": "fold all tiddlers"
        },
        "$:/language/Buttons/FoldAll/Hint": {
            "title": "$:/language/Buttons/FoldAll/Hint",
            "text": "Fold the bodies of all opened tiddlers"
        },
        "$:/language/Buttons/UnfoldAll/Caption": {
            "title": "$:/language/Buttons/UnfoldAll/Caption",
            "text": "unfold all tiddlers"
        },
        "$:/language/Buttons/UnfoldAll/Hint": {
            "title": "$:/language/Buttons/UnfoldAll/Hint",
            "text": "Unfold the bodies of all opened tiddlers"
        },
        "$:/language/Buttons/FullScreen/Caption": {
            "title": "$:/language/Buttons/FullScreen/Caption",
            "text": "full-screen"
        },
        "$:/language/Buttons/FullScreen/Hint": {
            "title": "$:/language/Buttons/FullScreen/Hint",
            "text": "Enter or leave full-screen mode"
        },
        "$:/language/Buttons/Help/Caption": {
            "title": "$:/language/Buttons/Help/Caption",
            "text": "help"
        },
        "$:/language/Buttons/Help/Hint": {
            "title": "$:/language/Buttons/Help/Hint",
            "text": "Show help panel"
        },
        "$:/language/Buttons/Import/Caption": {
            "title": "$:/language/Buttons/Import/Caption",
            "text": "import"
        },
        "$:/language/Buttons/Import/Hint": {
            "title": "$:/language/Buttons/Import/Hint",
            "text": "Import many types of file including text, image, TiddlyWiki or JSON"
        },
        "$:/language/Buttons/Info/Caption": {
            "title": "$:/language/Buttons/Info/Caption",
            "text": "info"
        },
        "$:/language/Buttons/Info/Hint": {
            "title": "$:/language/Buttons/Info/Hint",
            "text": "Show information for this tiddler"
        },
        "$:/language/Buttons/Home/Caption": {
            "title": "$:/language/Buttons/Home/Caption",
            "text": "home"
        },
        "$:/language/Buttons/Home/Hint": {
            "title": "$:/language/Buttons/Home/Hint",
            "text": "Open the default tiddlers"
        },
        "$:/language/Buttons/Language/Caption": {
            "title": "$:/language/Buttons/Language/Caption",
            "text": "language"
        },
        "$:/language/Buttons/Language/Hint": {
            "title": "$:/language/Buttons/Language/Hint",
            "text": "Choose the user interface language"
        },
        "$:/language/Buttons/Manager/Caption": {
            "title": "$:/language/Buttons/Manager/Caption",
            "text": "tiddler manager"
        },
        "$:/language/Buttons/Manager/Hint": {
            "title": "$:/language/Buttons/Manager/Hint",
            "text": "Open tiddler manager"
        },
        "$:/language/Buttons/More/Caption": {
            "title": "$:/language/Buttons/More/Caption",
            "text": "more"
        },
        "$:/language/Buttons/More/Hint": {
            "title": "$:/language/Buttons/More/Hint",
            "text": "More actions"
        },
        "$:/language/Buttons/NewHere/Caption": {
            "title": "$:/language/Buttons/NewHere/Caption",
            "text": "new here"
        },
        "$:/language/Buttons/NewHere/Hint": {
            "title": "$:/language/Buttons/NewHere/Hint",
            "text": "Create a new tiddler tagged with this one"
        },
        "$:/language/Buttons/NewJournal/Caption": {
            "title": "$:/language/Buttons/NewJournal/Caption",
            "text": "new journal"
        },
        "$:/language/Buttons/NewJournal/Hint": {
            "title": "$:/language/Buttons/NewJournal/Hint",
            "text": "Create a new journal tiddler"
        },
        "$:/language/Buttons/NewJournalHere/Caption": {
            "title": "$:/language/Buttons/NewJournalHere/Caption",
            "text": "new journal here"
        },
        "$:/language/Buttons/NewJournalHere/Hint": {
            "title": "$:/language/Buttons/NewJournalHere/Hint",
            "text": "Create a new journal tiddler tagged with this one"
        },
        "$:/language/Buttons/NewImage/Caption": {
            "title": "$:/language/Buttons/NewImage/Caption",
            "text": "new image"
        },
        "$:/language/Buttons/NewImage/Hint": {
            "title": "$:/language/Buttons/NewImage/Hint",
            "text": "Create a new image tiddler"
        },
        "$:/language/Buttons/NewMarkdown/Caption": {
            "title": "$:/language/Buttons/NewMarkdown/Caption",
            "text": "new Markdown tiddler"
        },
        "$:/language/Buttons/NewMarkdown/Hint": {
            "title": "$:/language/Buttons/NewMarkdown/Hint",
            "text": "Create a new Markdown tiddler"
        },
        "$:/language/Buttons/NewTiddler/Caption": {
            "title": "$:/language/Buttons/NewTiddler/Caption",
            "text": "new tiddler"
        },
        "$:/language/Buttons/NewTiddler/Hint": {
            "title": "$:/language/Buttons/NewTiddler/Hint",
            "text": "Create a new tiddler"
        },
        "$:/language/Buttons/OpenWindow/Caption": {
            "title": "$:/language/Buttons/OpenWindow/Caption",
            "text": "open in new window"
        },
        "$:/language/Buttons/OpenWindow/Hint": {
            "title": "$:/language/Buttons/OpenWindow/Hint",
            "text": "Open tiddler in new window"
        },
        "$:/language/Buttons/Palette/Caption": {
            "title": "$:/language/Buttons/Palette/Caption",
            "text": "palette"
        },
        "$:/language/Buttons/Palette/Hint": {
            "title": "$:/language/Buttons/Palette/Hint",
            "text": "Choose the colour palette"
        },
        "$:/language/Buttons/Permalink/Caption": {
            "title": "$:/language/Buttons/Permalink/Caption",
            "text": "permalink"
        },
        "$:/language/Buttons/Permalink/Hint": {
            "title": "$:/language/Buttons/Permalink/Hint",
            "text": "Set browser address bar to a direct link to this tiddler"
        },
        "$:/language/Buttons/Permaview/Caption": {
            "title": "$:/language/Buttons/Permaview/Caption",
            "text": "permaview"
        },
        "$:/language/Buttons/Permaview/Hint": {
            "title": "$:/language/Buttons/Permaview/Hint",
            "text": "Set browser address bar to a direct link to all the tiddlers in this story"
        },
        "$:/language/Buttons/Print/Caption": {
            "title": "$:/language/Buttons/Print/Caption",
            "text": "print page"
        },
        "$:/language/Buttons/Print/Hint": {
            "title": "$:/language/Buttons/Print/Hint",
            "text": "Print the current page"
        },
        "$:/language/Buttons/Refresh/Caption": {
            "title": "$:/language/Buttons/Refresh/Caption",
            "text": "refresh"
        },
        "$:/language/Buttons/Refresh/Hint": {
            "title": "$:/language/Buttons/Refresh/Hint",
            "text": "Perform a full refresh of the wiki"
        },
        "$:/language/Buttons/Save/Caption": {
            "title": "$:/language/Buttons/Save/Caption",
            "text": "ok"
        },
        "$:/language/Buttons/Save/Hint": {
            "title": "$:/language/Buttons/Save/Hint",
            "text": "Confirm changes to this tiddler"
        },
        "$:/language/Buttons/SaveWiki/Caption": {
            "title": "$:/language/Buttons/SaveWiki/Caption",
            "text": "save changes"
        },
        "$:/language/Buttons/SaveWiki/Hint": {
            "title": "$:/language/Buttons/SaveWiki/Hint",
            "text": "Save changes"
        },
        "$:/language/Buttons/StoryView/Caption": {
            "title": "$:/language/Buttons/StoryView/Caption",
            "text": "storyview"
        },
        "$:/language/Buttons/StoryView/Hint": {
            "title": "$:/language/Buttons/StoryView/Hint",
            "text": "Choose the story visualisation"
        },
        "$:/language/Buttons/HideSideBar/Caption": {
            "title": "$:/language/Buttons/HideSideBar/Caption",
            "text": "hide sidebar"
        },
        "$:/language/Buttons/HideSideBar/Hint": {
            "title": "$:/language/Buttons/HideSideBar/Hint",
            "text": "Hide sidebar"
        },
        "$:/language/Buttons/ShowSideBar/Caption": {
            "title": "$:/language/Buttons/ShowSideBar/Caption",
            "text": "show sidebar"
        },
        "$:/language/Buttons/ShowSideBar/Hint": {
            "title": "$:/language/Buttons/ShowSideBar/Hint",
            "text": "Show sidebar"
        },
        "$:/language/Buttons/TagManager/Caption": {
            "title": "$:/language/Buttons/TagManager/Caption",
            "text": "tag manager"
        },
        "$:/language/Buttons/TagManager/Hint": {
            "title": "$:/language/Buttons/TagManager/Hint",
            "text": "Open tag manager"
        },
        "$:/language/Buttons/Timestamp/Caption": {
            "title": "$:/language/Buttons/Timestamp/Caption",
            "text": "timestamps"
        },
        "$:/language/Buttons/Timestamp/Hint": {
            "title": "$:/language/Buttons/Timestamp/Hint",
            "text": "Choose whether modifications update timestamps"
        },
        "$:/language/Buttons/Timestamp/On/Caption": {
            "title": "$:/language/Buttons/Timestamp/On/Caption",
            "text": "timestamps are on"
        },
        "$:/language/Buttons/Timestamp/On/Hint": {
            "title": "$:/language/Buttons/Timestamp/On/Hint",
            "text": "Update timestamps when tiddlers are modified"
        },
        "$:/language/Buttons/Timestamp/Off/Caption": {
            "title": "$:/language/Buttons/Timestamp/Off/Caption",
            "text": "timestamps are off"
        },
        "$:/language/Buttons/Timestamp/Off/Hint": {
            "title": "$:/language/Buttons/Timestamp/Off/Hint",
            "text": "Don't update timestamps when tiddlers are modified"
        },
        "$:/language/Buttons/Theme/Caption": {
            "title": "$:/language/Buttons/Theme/Caption",
            "text": "theme"
        },
        "$:/language/Buttons/Theme/Hint": {
            "title": "$:/language/Buttons/Theme/Hint",
            "text": "Choose the display theme"
        },
        "$:/language/Buttons/Bold/Caption": {
            "title": "$:/language/Buttons/Bold/Caption",
            "text": "bold"
        },
        "$:/language/Buttons/Bold/Hint": {
            "title": "$:/language/Buttons/Bold/Hint",
            "text": "Apply bold formatting to selection"
        },
        "$:/language/Buttons/Clear/Caption": {
            "title": "$:/language/Buttons/Clear/Caption",
            "text": "clear"
        },
        "$:/language/Buttons/Clear/Hint": {
            "title": "$:/language/Buttons/Clear/Hint",
            "text": "Clear image to solid colour"
        },
        "$:/language/Buttons/EditorHeight/Caption": {
            "title": "$:/language/Buttons/EditorHeight/Caption",
            "text": "editor height"
        },
        "$:/language/Buttons/EditorHeight/Caption/Auto": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Auto",
            "text": "Automatically adjust height to fit content"
        },
        "$:/language/Buttons/EditorHeight/Caption/Fixed": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
            "text": "Fixed height:"
        },
        "$:/language/Buttons/EditorHeight/Hint": {
            "title": "$:/language/Buttons/EditorHeight/Hint",
            "text": "Choose the height of the text editor"
        },
        "$:/language/Buttons/Excise/Caption": {
            "title": "$:/language/Buttons/Excise/Caption",
            "text": "excise"
        },
        "$:/language/Buttons/Excise/Caption/Excise": {
            "title": "$:/language/Buttons/Excise/Caption/Excise",
            "text": "Perform excision"
        },
        "$:/language/Buttons/Excise/Caption/MacroName": {
            "title": "$:/language/Buttons/Excise/Caption/MacroName",
            "text": "Macro name:"
        },
        "$:/language/Buttons/Excise/Caption/NewTitle": {
            "title": "$:/language/Buttons/Excise/Caption/NewTitle",
            "text": "Title of new tiddler:"
        },
        "$:/language/Buttons/Excise/Caption/Replace": {
            "title": "$:/language/Buttons/Excise/Caption/Replace",
            "text": "Replace excised text with:"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Macro": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
            "text": "macro"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Link": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Link",
            "text": "link"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
            "text": "transclusion"
        },
        "$:/language/Buttons/Excise/Caption/Tag": {
            "title": "$:/language/Buttons/Excise/Caption/Tag",
            "text": "Tag new tiddler with the title of this tiddler"
        },
        "$:/language/Buttons/Excise/Caption/TiddlerExists": {
            "title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
            "text": "Warning: tiddler already exists"
        },
        "$:/language/Buttons/Excise/Hint": {
            "title": "$:/language/Buttons/Excise/Hint",
            "text": "Excise the selected text into a new tiddler"
        },
        "$:/language/Buttons/Heading1/Caption": {
            "title": "$:/language/Buttons/Heading1/Caption",
            "text": "heading 1"
        },
        "$:/language/Buttons/Heading1/Hint": {
            "title": "$:/language/Buttons/Heading1/Hint",
            "text": "Apply heading level 1 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading2/Caption": {
            "title": "$:/language/Buttons/Heading2/Caption",
            "text": "heading 2"
        },
        "$:/language/Buttons/Heading2/Hint": {
            "title": "$:/language/Buttons/Heading2/Hint",
            "text": "Apply heading level 2 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading3/Caption": {
            "title": "$:/language/Buttons/Heading3/Caption",
            "text": "heading 3"
        },
        "$:/language/Buttons/Heading3/Hint": {
            "title": "$:/language/Buttons/Heading3/Hint",
            "text": "Apply heading level 3 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading4/Caption": {
            "title": "$:/language/Buttons/Heading4/Caption",
            "text": "heading 4"
        },
        "$:/language/Buttons/Heading4/Hint": {
            "title": "$:/language/Buttons/Heading4/Hint",
            "text": "Apply heading level 4 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading5/Caption": {
            "title": "$:/language/Buttons/Heading5/Caption",
            "text": "heading 5"
        },
        "$:/language/Buttons/Heading5/Hint": {
            "title": "$:/language/Buttons/Heading5/Hint",
            "text": "Apply heading level 5 formatting to lines containing selection"
        },
        "$:/language/Buttons/Heading6/Caption": {
            "title": "$:/language/Buttons/Heading6/Caption",
            "text": "heading 6"
        },
        "$:/language/Buttons/Heading6/Hint": {
            "title": "$:/language/Buttons/Heading6/Hint",
            "text": "Apply heading level 6 formatting to lines containing selection"
        },
        "$:/language/Buttons/Italic/Caption": {
            "title": "$:/language/Buttons/Italic/Caption",
            "text": "italic"
        },
        "$:/language/Buttons/Italic/Hint": {
            "title": "$:/language/Buttons/Italic/Hint",
            "text": "Apply italic formatting to selection"
        },
        "$:/language/Buttons/LineWidth/Caption": {
            "title": "$:/language/Buttons/LineWidth/Caption",
            "text": "line width"
        },
        "$:/language/Buttons/LineWidth/Hint": {
            "title": "$:/language/Buttons/LineWidth/Hint",
            "text": "Set line width for painting"
        },
        "$:/language/Buttons/Link/Caption": {
            "title": "$:/language/Buttons/Link/Caption",
            "text": "link"
        },
        "$:/language/Buttons/Link/Hint": {
            "title": "$:/language/Buttons/Link/Hint",
            "text": "Create wikitext link"
        },
        "$:/language/Buttons/Linkify/Caption": {
            "title": "$:/language/Buttons/Linkify/Caption",
            "text": "wikilink"
        },
        "$:/language/Buttons/Linkify/Hint": {
            "title": "$:/language/Buttons/Linkify/Hint",
            "text": "Wrap selection in square brackets"
        },
        "$:/language/Buttons/ListBullet/Caption": {
            "title": "$:/language/Buttons/ListBullet/Caption",
            "text": "bulleted list"
        },
        "$:/language/Buttons/ListBullet/Hint": {
            "title": "$:/language/Buttons/ListBullet/Hint",
            "text": "Apply bulleted list formatting to lines containing selection"
        },
        "$:/language/Buttons/ListNumber/Caption": {
            "title": "$:/language/Buttons/ListNumber/Caption",
            "text": "numbered list"
        },
        "$:/language/Buttons/ListNumber/Hint": {
            "title": "$:/language/Buttons/ListNumber/Hint",
            "text": "Apply numbered list formatting to lines containing selection"
        },
        "$:/language/Buttons/MonoBlock/Caption": {
            "title": "$:/language/Buttons/MonoBlock/Caption",
            "text": "monospaced block"
        },
        "$:/language/Buttons/MonoBlock/Hint": {
            "title": "$:/language/Buttons/MonoBlock/Hint",
            "text": "Apply monospaced block formatting to lines containing selection"
        },
        "$:/language/Buttons/MonoLine/Caption": {
            "title": "$:/language/Buttons/MonoLine/Caption",
            "text": "monospaced"
        },
        "$:/language/Buttons/MonoLine/Hint": {
            "title": "$:/language/Buttons/MonoLine/Hint",
            "text": "Apply monospaced character formatting to selection"
        },
        "$:/language/Buttons/Opacity/Caption": {
            "title": "$:/language/Buttons/Opacity/Caption",
            "text": "opacity"
        },
        "$:/language/Buttons/Opacity/Hint": {
            "title": "$:/language/Buttons/Opacity/Hint",
            "text": "Set painting opacity"
        },
        "$:/language/Buttons/Paint/Caption": {
            "title": "$:/language/Buttons/Paint/Caption",
            "text": "paint colour"
        },
        "$:/language/Buttons/Paint/Hint": {
            "title": "$:/language/Buttons/Paint/Hint",
            "text": "Set painting colour"
        },
        "$:/language/Buttons/Picture/Caption": {
            "title": "$:/language/Buttons/Picture/Caption",
            "text": "picture"
        },
        "$:/language/Buttons/Picture/Hint": {
            "title": "$:/language/Buttons/Picture/Hint",
            "text": "Insert picture"
        },
        "$:/language/Buttons/Preview/Caption": {
            "title": "$:/language/Buttons/Preview/Caption",
            "text": "preview"
        },
        "$:/language/Buttons/Preview/Hint": {
            "title": "$:/language/Buttons/Preview/Hint",
            "text": "Show preview pane"
        },
        "$:/language/Buttons/PreviewType/Caption": {
            "title": "$:/language/Buttons/PreviewType/Caption",
            "text": "preview type"
        },
        "$:/language/Buttons/PreviewType/Hint": {
            "title": "$:/language/Buttons/PreviewType/Hint",
            "text": "Choose preview type"
        },
        "$:/language/Buttons/Quote/Caption": {
            "title": "$:/language/Buttons/Quote/Caption",
            "text": "quote"
        },
        "$:/language/Buttons/Quote/Hint": {
            "title": "$:/language/Buttons/Quote/Hint",
            "text": "Apply quoted text formatting to lines containing selection"
        },
        "$:/language/Buttons/RotateLeft/Caption": {
            "title": "$:/language/Buttons/RotateLeft/Caption",
            "text": "rotate left"
        },
        "$:/language/Buttons/RotateLeft/Hint": {
            "title": "$:/language/Buttons/RotateLeft/Hint",
            "text": "Rotate image left by 90 degrees"
        },
        "$:/language/Buttons/Size/Caption": {
            "title": "$:/language/Buttons/Size/Caption",
            "text": "image size"
        },
        "$:/language/Buttons/Size/Caption/Height": {
            "title": "$:/language/Buttons/Size/Caption/Height",
            "text": "Height:"
        },
        "$:/language/Buttons/Size/Caption/Resize": {
            "title": "$:/language/Buttons/Size/Caption/Resize",
            "text": "Resize image"
        },
        "$:/language/Buttons/Size/Caption/Width": {
            "title": "$:/language/Buttons/Size/Caption/Width",
            "text": "Width:"
        },
        "$:/language/Buttons/Size/Hint": {
            "title": "$:/language/Buttons/Size/Hint",
            "text": "Set image size"
        },
        "$:/language/Buttons/Stamp/Caption": {
            "title": "$:/language/Buttons/Stamp/Caption",
            "text": "stamp"
        },
        "$:/language/Buttons/Stamp/Caption/New": {
            "title": "$:/language/Buttons/Stamp/Caption/New",
            "text": "Add your own"
        },
        "$:/language/Buttons/Stamp/Hint": {
            "title": "$:/language/Buttons/Stamp/Hint",
            "text": "Insert a preconfigured snippet of text"
        },
        "$:/language/Buttons/Stamp/New/Title": {
            "title": "$:/language/Buttons/Stamp/New/Title",
            "text": "Name as shown in menu"
        },
        "$:/language/Buttons/Stamp/New/Text": {
            "title": "$:/language/Buttons/Stamp/New/Text",
            "text": "Text of snippet. (Remember to add a descriptive title in the caption field)."
        },
        "$:/language/Buttons/Strikethrough/Caption": {
            "title": "$:/language/Buttons/Strikethrough/Caption",
            "text": "strikethrough"
        },
        "$:/language/Buttons/Strikethrough/Hint": {
            "title": "$:/language/Buttons/Strikethrough/Hint",
            "text": "Apply strikethrough formatting to selection"
        },
        "$:/language/Buttons/Subscript/Caption": {
            "title": "$:/language/Buttons/Subscript/Caption",
            "text": "subscript"
        },
        "$:/language/Buttons/Subscript/Hint": {
            "title": "$:/language/Buttons/Subscript/Hint",
            "text": "Apply subscript formatting to selection"
        },
        "$:/language/Buttons/Superscript/Caption": {
            "title": "$:/language/Buttons/Superscript/Caption",
            "text": "superscript"
        },
        "$:/language/Buttons/Superscript/Hint": {
            "title": "$:/language/Buttons/Superscript/Hint",
            "text": "Apply superscript formatting to selection"
        },
        "$:/language/Buttons/ToggleSidebar/Hint": {
            "title": "$:/language/Buttons/ToggleSidebar/Hint",
            "text": "Toggle the sidebar visibility"
        },
        "$:/language/Buttons/Transcludify/Caption": {
            "title": "$:/language/Buttons/Transcludify/Caption",
            "text": "transclusion"
        },
        "$:/language/Buttons/Transcludify/Hint": {
            "title": "$:/language/Buttons/Transcludify/Hint",
            "text": "Wrap selection in curly brackets"
        },
        "$:/language/Buttons/Underline/Caption": {
            "title": "$:/language/Buttons/Underline/Caption",
            "text": "underline"
        },
        "$:/language/Buttons/Underline/Hint": {
            "title": "$:/language/Buttons/Underline/Hint",
            "text": "Apply underline formatting to selection"
        },
        "$:/language/ControlPanel/Advanced/Caption": {
            "title": "$:/language/ControlPanel/Advanced/Caption",
            "text": "Advanced"
        },
        "$:/language/ControlPanel/Advanced/Hint": {
            "title": "$:/language/ControlPanel/Advanced/Hint",
            "text": "Internal information about this TiddlyWiki"
        },
        "$:/language/ControlPanel/Appearance/Caption": {
            "title": "$:/language/ControlPanel/Appearance/Caption",
            "text": "Appearance"
        },
        "$:/language/ControlPanel/Appearance/Hint": {
            "title": "$:/language/ControlPanel/Appearance/Hint",
            "text": "Ways to customise the appearance of your TiddlyWiki."
        },
        "$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
            "title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
            "text": "Animation duration"
        },
        "$:/language/ControlPanel/Basics/AutoFocus/Prompt": {
            "title": "$:/language/ControlPanel/Basics/AutoFocus/Prompt",
            "text": "Default focus field for new tiddlers"
        },
        "$:/language/ControlPanel/Basics/Caption": {
            "title": "$:/language/ControlPanel/Basics/Caption",
            "text": "Basics"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
            "text": "Use &#91;&#91;double square brackets&#93;&#93; for titles with spaces. Or you can choose to <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">retain story ordering</$button>"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
            "text": "Default tiddlers"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
            "text": "Choose which tiddlers are displayed at startup"
        },
        "$:/language/ControlPanel/Basics/Language/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Language/Prompt",
            "text": "Hello! Current language:"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
            "text": "Title of new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
            "text": "Text for new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
            "text": "Tags for new journal tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt",
            "text": "Title of new tiddlers"
        },
        "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt",
            "text": "Tags for new tiddlers"
        },
        "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
            "text": "Number of overridden shadow tiddlers"
        },
        "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
            "text": "Number of shadow tiddlers"
        },
        "$:/language/ControlPanel/Basics/Subtitle/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
            "text": "Subtitle"
        },
        "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
            "text": "Number of system tiddlers"
        },
        "$:/language/ControlPanel/Basics/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tags/Prompt",
            "text": "Number of tags"
        },
        "$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
            "text": "Number of tiddlers"
        },
        "$:/language/ControlPanel/Basics/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Title/Prompt",
            "text": "Title of this ~TiddlyWiki"
        },
        "$:/language/ControlPanel/Basics/Username/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Username/Prompt",
            "text": "Username for signing edits"
        },
        "$:/language/ControlPanel/Basics/Version/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Version/Prompt",
            "text": "~TiddlyWiki version"
        },
        "$:/language/ControlPanel/EditorTypes/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Caption",
            "text": "Editor Types"
        },
        "$:/language/ControlPanel/EditorTypes/Editor/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
            "text": "Editor"
        },
        "$:/language/ControlPanel/EditorTypes/Hint": {
            "title": "$:/language/ControlPanel/EditorTypes/Hint",
            "text": "These tiddlers determine which editor is used to edit specific tiddler types."
        },
        "$:/language/ControlPanel/EditorTypes/Type/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
            "text": "Type"
        },
        "$:/language/ControlPanel/Info/Caption": {
            "title": "$:/language/ControlPanel/Info/Caption",
            "text": "Info"
        },
        "$:/language/ControlPanel/Info/Hint": {
            "title": "$:/language/ControlPanel/Info/Hint",
            "text": "Information about this TiddlyWiki"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
            "text": "Type shortcut here"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
            "text": "add shortcut"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
            "text": "Keyboard Shortcuts"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
            "text": "Manage keyboard shortcut assignments"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
            "text": "No keyboard shortcuts assigned"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
            "text": "remove keyboard shortcut"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
            "text": "All platforms"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
            "text": "Macintosh platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
            "text": "Non-Macintosh platforms only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
            "text": "Linux platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
            "text": "Non-Linux platforms only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
            "text": "Windows platform only"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
            "text": "Non-Windows platforms only"
        },
        "$:/language/ControlPanel/LoadedModules/Caption": {
            "title": "$:/language/ControlPanel/LoadedModules/Caption",
            "text": "Loaded Modules"
        },
        "$:/language/ControlPanel/LoadedModules/Hint": {
            "title": "$:/language/ControlPanel/LoadedModules/Hint",
            "text": "These are the currently loaded tiddler modules linked to their source tiddlers. Any italicised modules lack a source tiddler, typically because they were setup during the boot process."
        },
        "$:/language/ControlPanel/Palette/Caption": {
            "title": "$:/language/ControlPanel/Palette/Caption",
            "text": "Palette"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
            "text": "clone"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
            "text": "It is recommended that you clone this shadow palette before editing it"
        },
        "$:/language/ControlPanel/Palette/Editor/Delete/Hint": {
            "title": "$:/language/ControlPanel/Palette/Editor/Delete/Hint",
            "text": "delete this entry from the current palette"
        },
        "$:/language/ControlPanel/Palette/Editor/Names/External/Show": {
            "title": "$:/language/ControlPanel/Palette/Editor/Names/External/Show",
            "text": "Show color names that are not part of the current palette"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
            "text": "This shadow palette has been modified"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt",
            "text": "Editing"
        },
        "$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
            "text": "reset"
        },
        "$:/language/ControlPanel/Palette/HideEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
            "text": "hide editor"
        },
        "$:/language/ControlPanel/Palette/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Prompt",
            "text": "Current palette:"
        },
        "$:/language/ControlPanel/Palette/ShowEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
            "text": "show editor"
        },
        "$:/language/ControlPanel/Parsing/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Caption",
            "text": "Parsing"
        },
        "$:/language/ControlPanel/Parsing/Hint": {
            "title": "$:/language/ControlPanel/Parsing/Hint",
            "text": "Here you can globally disable/enable wiki parser rules. For changes to take effect, save and reload your wiki. Disabling certain parser rules can prevent <$text text=\"TiddlyWiki\"/> from functioning correctly. Use [[safe mode|https://tiddlywiki.com/#SafeMode]] to restore normal operation."
        },
        "$:/language/ControlPanel/Parsing/Block/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Block/Caption",
            "text": "Block Parse Rules"
        },
        "$:/language/ControlPanel/Parsing/Inline/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Inline/Caption",
            "text": "Inline Parse Rules"
        },
        "$:/language/ControlPanel/Parsing/Pragma/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
            "text": "Pragma Parse Rules"
        },
        "$:/language/ControlPanel/Plugins/Add/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Add/Caption",
            "text": "Get more plugins"
        },
        "$:/language/ControlPanel/Plugins/Add/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Add/Hint",
            "text": "Install plugins from the official library"
        },
        "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
            "text": "This plugin is already installed at version <$text text=<<installedVersion>>/>"
        },
        "$:/language/ControlPanel/Plugins/AlsoRequires": {
            "title": "$:/language/ControlPanel/Plugins/AlsoRequires",
            "text": "Also requires:"
        },
        "$:/language/ControlPanel/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Caption",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Disable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Caption",
            "text": "disable"
        },
        "$:/language/ControlPanel/Plugins/Disable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Hint",
            "text": "Disable this plugin when reloading page"
        },
        "$:/language/ControlPanel/Plugins/Disabled/Status": {
            "title": "$:/language/ControlPanel/Plugins/Disabled/Status",
            "text": "(disabled)"
        },
        "$:/language/ControlPanel/Plugins/Downgrade/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Downgrade/Caption",
            "text": "downgrade"
        },
        "$:/language/ControlPanel/Plugins/Empty/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Empty/Hint",
            "text": "None"
        },
        "$:/language/ControlPanel/Plugins/Enable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Caption",
            "text": "enable"
        },
        "$:/language/ControlPanel/Plugins/Enable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Hint",
            "text": "Enable this plugin when reloading page"
        },
        "$:/language/ControlPanel/Plugins/Install/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Install/Caption",
            "text": "install"
        },
        "$:/language/ControlPanel/Plugins/Installed/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Installed/Hint",
            "text": "Currently installed plugins:"
        },
        "$:/language/ControlPanel/Plugins/Languages/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Caption",
            "text": "Languages"
        },
        "$:/language/ControlPanel/Plugins/Languages/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Hint",
            "text": "Language pack plugins"
        },
        "$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
            "text": "No ''\"<$text text=<<currentTab>>/>\"'' found"
        },
        "$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
            "text": "This plugin is not currently installed"
        },
        "$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
            "text": "open plugin library"
        },
        "$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
            "text": "close plugin library"
        },
        "$:/language/ControlPanel/Plugins/PluginWillRequireReload": {
            "title": "$:/language/ControlPanel/Plugins/PluginWillRequireReload",
            "text": "(requires reload)"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
            "text": "Plugins"
        },
        "$:/language/ControlPanel/Plugins/Reinstall/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
            "text": "reinstall"
        },
        "$:/language/ControlPanel/Plugins/Themes/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Caption",
            "text": "Themes"
        },
        "$:/language/ControlPanel/Plugins/Themes/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Hint",
            "text": "Theme plugins"
        },
        "$:/language/ControlPanel/Plugins/Update/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Update/Caption",
            "text": "update"
        },
        "$:/language/ControlPanel/Plugins/Updates/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Updates/Caption",
            "text": "Updates"
        },
        "$:/language/ControlPanel/Plugins/Updates/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Updates/Hint",
            "text": "Available updates to installed plugins"
        },
        "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption",
            "text": "Update <<update-count>> plugins"
        },
        "$:/language/ControlPanel/Plugins/SubPluginPrompt": {
            "title": "$:/language/ControlPanel/Plugins/SubPluginPrompt",
            "text": "With <<count>> sub-plugins available"
        },
        "$:/language/ControlPanel/Saving/Caption": {
            "title": "$:/language/ControlPanel/Saving/Caption",
            "text": "Saving"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
            "text": "Permit automatic saving for the download saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
            "text": "Enable Autosave for Download Saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
            "text": "Download Saver"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
            "text": "These settings apply to the HTML5-compatible download saver"
        },
        "$:/language/ControlPanel/Saving/General/Caption": {
            "title": "$:/language/ControlPanel/Saving/General/Caption",
            "text": "General"
        },
        "$:/language/ControlPanel/Saving/General/Hint": {
            "title": "$:/language/ControlPanel/Saving/General/Hint",
            "text": "These settings apply to all the loaded savers"
        },
        "$:/language/ControlPanel/Saving/Hint": {
            "title": "$:/language/ControlPanel/Saving/Hint",
            "text": "Settings used for saving the entire TiddlyWiki as a single file via a saver module"
        },
        "$:/language/ControlPanel/Saving/GitService/Branch": {
            "title": "$:/language/ControlPanel/Saving/GitService/Branch",
            "text": "Target branch for saving"
        },
        "$:/language/ControlPanel/Saving/GitService/CommitMessage": {
            "title": "$:/language/ControlPanel/Saving/GitService/CommitMessage",
            "text": "Saved by TiddlyWiki"
        },
        "$:/language/ControlPanel/Saving/GitService/Description": {
            "title": "$:/language/ControlPanel/Saving/GitService/Description",
            "text": "These settings are only used when saving to <<service-name>>"
        },
        "$:/language/ControlPanel/Saving/GitService/Filename": {
            "title": "$:/language/ControlPanel/Saving/GitService/Filename",
            "text": "Filename of target file (e.g. `index.html`)"
        },
        "$:/language/ControlPanel/Saving/GitService/Path": {
            "title": "$:/language/ControlPanel/Saving/GitService/Path",
            "text": "Path to target file (e.g. `/wiki/`)"
        },
        "$:/language/ControlPanel/Saving/GitService/Repo": {
            "title": "$:/language/ControlPanel/Saving/GitService/Repo",
            "text": "Target repository (e.g. `Jermolene/TiddlyWiki5`)"
        },
        "$:/language/ControlPanel/Saving/GitService/ServerURL": {
            "title": "$:/language/ControlPanel/Saving/GitService/ServerURL",
            "text": "Server API URL"
        },
        "$:/language/ControlPanel/Saving/GitService/UserName": {
            "title": "$:/language/ControlPanel/Saving/GitService/UserName",
            "text": "Username"
        },
        "$:/language/ControlPanel/Saving/GitService/GitHub/Caption": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitHub/Caption",
            "text": "~GitHub Saver"
        },
        "$:/language/ControlPanel/Saving/GitService/GitHub/Password": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitHub/Password",
            "text": "Password, OAUTH token, or personal access token (see [[GitHub help page|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] for details)"
        },
        "$:/language/ControlPanel/Saving/GitService/GitLab/Caption": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitLab/Caption",
            "text": "~GitLab Saver"
        },
        "$:/language/ControlPanel/Saving/GitService/GitLab/Password": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitLab/Password",
            "text": "Personal access token for API (see [[GitLab help page|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] for details)"
        },
        "$:/language/ControlPanel/Saving/GitService/Gitea/Caption": {
            "title": "$:/language/ControlPanel/Saving/GitService/Gitea/Caption",
            "text": "Gitea Saver"
        },
        "$:/language/ControlPanel/Saving/GitService/Gitea/Password": {
            "title": "$:/language/ControlPanel/Saving/GitService/Gitea/Password",
            "text": "Personal access token for API (via Gitea’s web interface: `Settings | Applications | Generate New Token`)"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
            "text": "Advanced Settings"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
            "text": "Backup Directory"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
            "text": "Backups"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
            "text": "~TiddlySpot Saver"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Description": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
            "text": "These settings are only used when saving to http://tiddlyspot.com or a compatible remote server"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
            "text": "Upload Filename"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
            "text": "~TiddlySpot"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
            "text": "//The server URL defaults to `http://<wikiname>.tiddlyspot.com/store.cgi` and can be changed to use a custom server address, e.g. `http://example.com/store.php`.//"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Password": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
            "text": "Password"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
            "text": "Server URL"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
            "text": "Upload Directory"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
            "text": "Wiki Name"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Caption": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
            "text": "Autosave"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
            "text": "Do not save changes automatically"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
            "text": "Save changes automatically"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
            "text": "Attempt to automatically save changes during editing when using a supporting saver"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Caption": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
            "text": "Camel Case Wiki Links"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Hint": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
            "text": "You can globally disable automatic linking of ~CamelCase phrases. Requires reload to take effect"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Description": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Description",
            "text": "Enable automatic ~CamelCase linking"
        },
        "$:/language/ControlPanel/Settings/Caption": {
            "title": "$:/language/ControlPanel/Settings/Caption",
            "text": "Settings"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
            "text": "Editor Toolbar"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
            "text": "Enable or disable the editor toolbar:"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Description": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
            "text": "Show editor toolbar"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
            "text": "Tiddler Info Panel Mode"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
            "text": "Control when the tiddler info panel closes:"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
            "text": "Tiddler info panel closes automatically"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
            "text": "Tiddler info panel stays open until explicitly closed"
        },
        "$:/language/ControlPanel/Settings/Hint": {
            "title": "$:/language/ControlPanel/Settings/Hint",
            "text": "These settings let you customise the behaviour of TiddlyWiki."
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
            "text": "Navigation Address Bar"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
            "text": "Behaviour of the browser address bar when navigating to a tiddler:"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
            "text": "Do not update the address bar"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
            "text": "Include the target tiddler"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
            "text": "Include the target tiddler and the current story sequence"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
            "text": "Navigation History"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
            "text": "Update browser history when navigating to a tiddler:"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
            "text": "Do not update history"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
            "text": "Update history"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption",
            "text": "Permalink/permaview Mode"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint",
            "text": "Choose how permalink/permaview is handled:"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description",
            "text": "Copy permalink/permaview URL to clipboard"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description",
            "text": "Update address bar with permalink/permaview URL"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
            "text": "Performance Instrumentation"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
            "text": "Displays performance statistics in the browser developer console. Requires reload to take effect"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
            "text": "Enable performance instrumentation"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
            "text": "Toolbar Button Style"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
            "text": "Choose the style for toolbar buttons:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
            "text": "Borderless"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
            "text": "Boxed"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
            "text": "Rounded"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
            "text": "Toolbar Buttons"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
            "text": "Default toolbar button appearance:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
            "text": "Include icon"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
            "text": "Include text"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
            "text": "Default Sidebar Tab"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
            "text": "Specify which sidebar tab is displayed by default"
        },
        "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption": {
            "title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption",
            "text": "Default More Sidebar Tab"
        },
        "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint": {
            "title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint",
            "text": "Specify which More sidebar tab is displayed by default"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
            "text": "Tiddler Opening Behaviour"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
            "text": "Navigation from //within// the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
            "text": "Navigation from //outside// the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
            "text": "Open above the current tiddler"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
            "text": "Open below the current tiddler"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
            "text": "Open at the top of the story river"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
            "text": "Open at the bottom of the story river"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
            "text": "Tiddler Titles"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
            "text": "Optionally display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
            "text": "Do not display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
            "text": "Display tiddler titles as links"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
            "text": "Wiki Links"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
            "text": "Choose whether to link to tiddlers that do not exist yet"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Description": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
            "text": "Enable links to missing tiddlers"
        },
        "$:/language/ControlPanel/StoryView/Caption": {
            "title": "$:/language/ControlPanel/StoryView/Caption",
            "text": "Story View"
        },
        "$:/language/ControlPanel/StoryView/Prompt": {
            "title": "$:/language/ControlPanel/StoryView/Prompt",
            "text": "Current view:"
        },
        "$:/language/ControlPanel/Stylesheets/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Caption",
            "text": "Stylesheets"
        },
        "$:/language/ControlPanel/Stylesheets/Expand/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Expand/Caption",
            "text": "Expand All"
        },
        "$:/language/ControlPanel/Stylesheets/Hint": {
            "title": "$:/language/ControlPanel/Stylesheets/Hint",
            "text": "This is the rendered CSS of the current stylesheet tiddlers tagged with <<tag \"$:/tags/Stylesheet\">>"
        },
        "$:/language/ControlPanel/Stylesheets/Restore/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Restore/Caption",
            "text": "Restore"
        },
        "$:/language/ControlPanel/Theme/Caption": {
            "title": "$:/language/ControlPanel/Theme/Caption",
            "text": "Theme"
        },
        "$:/language/ControlPanel/Theme/Prompt": {
            "title": "$:/language/ControlPanel/Theme/Prompt",
            "text": "Current theme:"
        },
        "$:/language/ControlPanel/TiddlerFields/Caption": {
            "title": "$:/language/ControlPanel/TiddlerFields/Caption",
            "text": "Tiddler Fields"
        },
        "$:/language/ControlPanel/TiddlerFields/Hint": {
            "title": "$:/language/ControlPanel/TiddlerFields/Hint",
            "text": "This is the full set of TiddlerFields in use in this wiki (including system tiddlers but excluding shadow tiddlers)."
        },
        "$:/language/ControlPanel/Toolbars/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/Caption",
            "text": "Toolbars"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
            "text": "Edit Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
            "text": "Choose which buttons are displayed for tiddlers in edit mode. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/Hint",
            "text": "Select which toolbar buttons are displayed"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
            "text": "Page Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
            "text": "Choose which buttons are displayed on the main page toolbar. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
            "text": "Editor Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
            "text": "Choose which buttons are displayed in the editor toolbar. Note that some buttons will only appear when editing tiddlers of a certain type. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
            "text": "View Toolbar"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
            "text": "Choose which buttons are displayed for tiddlers in view mode. Drag and drop to change the ordering"
        },
        "$:/language/ControlPanel/Tools/Download/Full/Caption": {
            "title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
            "text": "Download full wiki"
        },
        "$:/language/Date/DaySuffix/1": {
            "title": "$:/language/Date/DaySuffix/1",
            "text": "st"
        },
        "$:/language/Date/DaySuffix/2": {
            "title": "$:/language/Date/DaySuffix/2",
            "text": "nd"
        },
        "$:/language/Date/DaySuffix/3": {
            "title": "$:/language/Date/DaySuffix/3",
            "text": "rd"
        },
        "$:/language/Date/DaySuffix/4": {
            "title": "$:/language/Date/DaySuffix/4",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/5": {
            "title": "$:/language/Date/DaySuffix/5",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/6": {
            "title": "$:/language/Date/DaySuffix/6",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/7": {
            "title": "$:/language/Date/DaySuffix/7",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/8": {
            "title": "$:/language/Date/DaySuffix/8",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/9": {
            "title": "$:/language/Date/DaySuffix/9",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/10": {
            "title": "$:/language/Date/DaySuffix/10",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/11": {
            "title": "$:/language/Date/DaySuffix/11",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/12": {
            "title": "$:/language/Date/DaySuffix/12",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/13": {
            "title": "$:/language/Date/DaySuffix/13",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/14": {
            "title": "$:/language/Date/DaySuffix/14",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/15": {
            "title": "$:/language/Date/DaySuffix/15",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/16": {
            "title": "$:/language/Date/DaySuffix/16",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/17": {
            "title": "$:/language/Date/DaySuffix/17",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/18": {
            "title": "$:/language/Date/DaySuffix/18",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/19": {
            "title": "$:/language/Date/DaySuffix/19",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/20": {
            "title": "$:/language/Date/DaySuffix/20",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/21": {
            "title": "$:/language/Date/DaySuffix/21",
            "text": "st"
        },
        "$:/language/Date/DaySuffix/22": {
            "title": "$:/language/Date/DaySuffix/22",
            "text": "nd"
        },
        "$:/language/Date/DaySuffix/23": {
            "title": "$:/language/Date/DaySuffix/23",
            "text": "rd"
        },
        "$:/language/Date/DaySuffix/24": {
            "title": "$:/language/Date/DaySuffix/24",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/25": {
            "title": "$:/language/Date/DaySuffix/25",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/26": {
            "title": "$:/language/Date/DaySuffix/26",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/27": {
            "title": "$:/language/Date/DaySuffix/27",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/28": {
            "title": "$:/language/Date/DaySuffix/28",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/29": {
            "title": "$:/language/Date/DaySuffix/29",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/30": {
            "title": "$:/language/Date/DaySuffix/30",
            "text": "th"
        },
        "$:/language/Date/DaySuffix/31": {
            "title": "$:/language/Date/DaySuffix/31",
            "text": "st"
        },
        "$:/language/Date/Long/Day/0": {
            "title": "$:/language/Date/Long/Day/0",
            "text": "Sunday"
        },
        "$:/language/Date/Long/Day/1": {
            "title": "$:/language/Date/Long/Day/1",
            "text": "Monday"
        },
        "$:/language/Date/Long/Day/2": {
            "title": "$:/language/Date/Long/Day/2",
            "text": "Tuesday"
        },
        "$:/language/Date/Long/Day/3": {
            "title": "$:/language/Date/Long/Day/3",
            "text": "Wednesday"
        },
        "$:/language/Date/Long/Day/4": {
            "title": "$:/language/Date/Long/Day/4",
            "text": "Thursday"
        },
        "$:/language/Date/Long/Day/5": {
            "title": "$:/language/Date/Long/Day/5",
            "text": "Friday"
        },
        "$:/language/Date/Long/Day/6": {
            "title": "$:/language/Date/Long/Day/6",
            "text": "Saturday"
        },
        "$:/language/Date/Long/Month/1": {
            "title": "$:/language/Date/Long/Month/1",
            "text": "January"
        },
        "$:/language/Date/Long/Month/2": {
            "title": "$:/language/Date/Long/Month/2",
            "text": "February"
        },
        "$:/language/Date/Long/Month/3": {
            "title": "$:/language/Date/Long/Month/3",
            "text": "March"
        },
        "$:/language/Date/Long/Month/4": {
            "title": "$:/language/Date/Long/Month/4",
            "text": "April"
        },
        "$:/language/Date/Long/Month/5": {
            "title": "$:/language/Date/Long/Month/5",
            "text": "May"
        },
        "$:/language/Date/Long/Month/6": {
            "title": "$:/language/Date/Long/Month/6",
            "text": "June"
        },
        "$:/language/Date/Long/Month/7": {
            "title": "$:/language/Date/Long/Month/7",
            "text": "July"
        },
        "$:/language/Date/Long/Month/8": {
            "title": "$:/language/Date/Long/Month/8",
            "text": "August"
        },
        "$:/language/Date/Long/Month/9": {
            "title": "$:/language/Date/Long/Month/9",
            "text": "September"
        },
        "$:/language/Date/Long/Month/10": {
            "title": "$:/language/Date/Long/Month/10",
            "text": "October"
        },
        "$:/language/Date/Long/Month/11": {
            "title": "$:/language/Date/Long/Month/11",
            "text": "November"
        },
        "$:/language/Date/Long/Month/12": {
            "title": "$:/language/Date/Long/Month/12",
            "text": "December"
        },
        "$:/language/Date/Period/am": {
            "title": "$:/language/Date/Period/am",
            "text": "am"
        },
        "$:/language/Date/Period/pm": {
            "title": "$:/language/Date/Period/pm",
            "text": "pm"
        },
        "$:/language/Date/Short/Day/0": {
            "title": "$:/language/Date/Short/Day/0",
            "text": "Sun"
        },
        "$:/language/Date/Short/Day/1": {
            "title": "$:/language/Date/Short/Day/1",
            "text": "Mon"
        },
        "$:/language/Date/Short/Day/2": {
            "title": "$:/language/Date/Short/Day/2",
            "text": "Tue"
        },
        "$:/language/Date/Short/Day/3": {
            "title": "$:/language/Date/Short/Day/3",
            "text": "Wed"
        },
        "$:/language/Date/Short/Day/4": {
            "title": "$:/language/Date/Short/Day/4",
            "text": "Thu"
        },
        "$:/language/Date/Short/Day/5": {
            "title": "$:/language/Date/Short/Day/5",
            "text": "Fri"
        },
        "$:/language/Date/Short/Day/6": {
            "title": "$:/language/Date/Short/Day/6",
            "text": "Sat"
        },
        "$:/language/Date/Short/Month/1": {
            "title": "$:/language/Date/Short/Month/1",
            "text": "Jan"
        },
        "$:/language/Date/Short/Month/2": {
            "title": "$:/language/Date/Short/Month/2",
            "text": "Feb"
        },
        "$:/language/Date/Short/Month/3": {
            "title": "$:/language/Date/Short/Month/3",
            "text": "Mar"
        },
        "$:/language/Date/Short/Month/4": {
            "title": "$:/language/Date/Short/Month/4",
            "text": "Apr"
        },
        "$:/language/Date/Short/Month/5": {
            "title": "$:/language/Date/Short/Month/5",
            "text": "May"
        },
        "$:/language/Date/Short/Month/6": {
            "title": "$:/language/Date/Short/Month/6",
            "text": "Jun"
        },
        "$:/language/Date/Short/Month/7": {
            "title": "$:/language/Date/Short/Month/7",
            "text": "Jul"
        },
        "$:/language/Date/Short/Month/8": {
            "title": "$:/language/Date/Short/Month/8",
            "text": "Aug"
        },
        "$:/language/Date/Short/Month/9": {
            "title": "$:/language/Date/Short/Month/9",
            "text": "Sep"
        },
        "$:/language/Date/Short/Month/10": {
            "title": "$:/language/Date/Short/Month/10",
            "text": "Oct"
        },
        "$:/language/Date/Short/Month/11": {
            "title": "$:/language/Date/Short/Month/11",
            "text": "Nov"
        },
        "$:/language/Date/Short/Month/12": {
            "title": "$:/language/Date/Short/Month/12",
            "text": "Dec"
        },
        "$:/language/RelativeDate/Future/Days": {
            "title": "$:/language/RelativeDate/Future/Days",
            "text": "<<period>> days from now"
        },
        "$:/language/RelativeDate/Future/Hours": {
            "title": "$:/language/RelativeDate/Future/Hours",
            "text": "<<period>> hours from now"
        },
        "$:/language/RelativeDate/Future/Minutes": {
            "title": "$:/language/RelativeDate/Future/Minutes",
            "text": "<<period>> minutes from now"
        },
        "$:/language/RelativeDate/Future/Months": {
            "title": "$:/language/RelativeDate/Future/Months",
            "text": "<<period>> months from now"
        },
        "$:/language/RelativeDate/Future/Second": {
            "title": "$:/language/RelativeDate/Future/Second",
            "text": "1 second from now"
        },
        "$:/language/RelativeDate/Future/Seconds": {
            "title": "$:/language/RelativeDate/Future/Seconds",
            "text": "<<period>> seconds from now"
        },
        "$:/language/RelativeDate/Future/Years": {
            "title": "$:/language/RelativeDate/Future/Years",
            "text": "<<period>> years from now"
        },
        "$:/language/RelativeDate/Past/Days": {
            "title": "$:/language/RelativeDate/Past/Days",
            "text": "<<period>> days ago"
        },
        "$:/language/RelativeDate/Past/Hours": {
            "title": "$:/language/RelativeDate/Past/Hours",
            "text": "<<period>> hours ago"
        },
        "$:/language/RelativeDate/Past/Minutes": {
            "title": "$:/language/RelativeDate/Past/Minutes",
            "text": "<<period>> minutes ago"
        },
        "$:/language/RelativeDate/Past/Months": {
            "title": "$:/language/RelativeDate/Past/Months",
            "text": "<<period>> months ago"
        },
        "$:/language/RelativeDate/Past/Second": {
            "title": "$:/language/RelativeDate/Past/Second",
            "text": "1 second ago"
        },
        "$:/language/RelativeDate/Past/Seconds": {
            "title": "$:/language/RelativeDate/Past/Seconds",
            "text": "<<period>> seconds ago"
        },
        "$:/language/RelativeDate/Past/Years": {
            "title": "$:/language/RelativeDate/Past/Years",
            "text": "<<period>> years ago"
        },
        "$:/language/Docs/ModuleTypes/allfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/allfilteroperator",
            "text": "A sub-operator for the ''all'' filter operator."
        },
        "$:/language/Docs/ModuleTypes/animation": {
            "title": "$:/language/Docs/ModuleTypes/animation",
            "text": "Animations that may be used with the RevealWidget."
        },
        "$:/language/Docs/ModuleTypes/authenticator": {
            "title": "$:/language/Docs/ModuleTypes/authenticator",
            "text": "Defines how requests are authenticated by the built-in HTTP server."
        },
        "$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
            "text": "A bitmap editor toolbar operation."
        },
        "$:/language/Docs/ModuleTypes/command": {
            "title": "$:/language/Docs/ModuleTypes/command",
            "text": "Commands that can be executed under Node.js."
        },
        "$:/language/Docs/ModuleTypes/config": {
            "title": "$:/language/Docs/ModuleTypes/config",
            "text": "Data to be inserted into `$tw.config`."
        },
        "$:/language/Docs/ModuleTypes/filteroperator": {
            "title": "$:/language/Docs/ModuleTypes/filteroperator",
            "text": "Individual filter operator methods."
        },
        "$:/language/Docs/ModuleTypes/global": {
            "title": "$:/language/Docs/ModuleTypes/global",
            "text": "Global data to be inserted into `$tw`."
        },
        "$:/language/Docs/ModuleTypes/info": {
            "title": "$:/language/Docs/ModuleTypes/info",
            "text": "Publishes system information via the [[$:/temp/info-plugin]] pseudo-plugin."
        },
        "$:/language/Docs/ModuleTypes/isfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/isfilteroperator",
            "text": "Operands for the ''is'' filter operator."
        },
        "$:/language/Docs/ModuleTypes/library": {
            "title": "$:/language/Docs/ModuleTypes/library",
            "text": "Generic module type for general purpose JavaScript modules."
        },
        "$:/language/Docs/ModuleTypes/macro": {
            "title": "$:/language/Docs/ModuleTypes/macro",
            "text": "JavaScript macro definitions."
        },
        "$:/language/Docs/ModuleTypes/parser": {
            "title": "$:/language/Docs/ModuleTypes/parser",
            "text": "Parsers for different content types."
        },
        "$:/language/Docs/ModuleTypes/route": {
            "title": "$:/language/Docs/ModuleTypes/route",
            "text": "Defines how individual URL patterns are handled by the built-in HTTP server."
        },
        "$:/language/Docs/ModuleTypes/saver": {
            "title": "$:/language/Docs/ModuleTypes/saver",
            "text": "Savers handle different methods for saving files from the browser."
        },
        "$:/language/Docs/ModuleTypes/startup": {
            "title": "$:/language/Docs/ModuleTypes/startup",
            "text": "Startup functions."
        },
        "$:/language/Docs/ModuleTypes/storyview": {
            "title": "$:/language/Docs/ModuleTypes/storyview",
            "text": "Story views customise the animation and behaviour of list widgets."
        },
        "$:/language/Docs/ModuleTypes/texteditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/texteditoroperation",
            "text": "A text editor toolbar operation."
        },
        "$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
            "text": "Converts different content types into tiddlers."
        },
        "$:/language/Docs/ModuleTypes/tiddlerfield": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerfield",
            "text": "Defines the behaviour of an individual tiddler field."
        },
        "$:/language/Docs/ModuleTypes/tiddlermethod": {
            "title": "$:/language/Docs/ModuleTypes/tiddlermethod",
            "text": "Adds methods to the `$tw.Tiddler` prototype."
        },
        "$:/language/Docs/ModuleTypes/upgrader": {
            "title": "$:/language/Docs/ModuleTypes/upgrader",
            "text": "Applies upgrade processing to tiddlers during an upgrade/import."
        },
        "$:/language/Docs/ModuleTypes/utils": {
            "title": "$:/language/Docs/ModuleTypes/utils",
            "text": "Adds methods to `$tw.utils`."
        },
        "$:/language/Docs/ModuleTypes/utils-node": {
            "title": "$:/language/Docs/ModuleTypes/utils-node",
            "text": "Adds Node.js-specific methods to `$tw.utils`."
        },
        "$:/language/Docs/ModuleTypes/widget": {
            "title": "$:/language/Docs/ModuleTypes/widget",
            "text": "Widgets encapsulate DOM rendering and refreshing."
        },
        "$:/language/Docs/ModuleTypes/wikimethod": {
            "title": "$:/language/Docs/ModuleTypes/wikimethod",
            "text": "Adds methods to `$tw.Wiki`."
        },
        "$:/language/Docs/ModuleTypes/wikirule": {
            "title": "$:/language/Docs/ModuleTypes/wikirule",
            "text": "Individual parser rules for the main WikiText parser."
        },
        "$:/language/Docs/PaletteColours/alert-background": {
            "title": "$:/language/Docs/PaletteColours/alert-background",
            "text": "Alert background"
        },
        "$:/language/Docs/PaletteColours/alert-border": {
            "title": "$:/language/Docs/PaletteColours/alert-border",
            "text": "Alert border"
        },
        "$:/language/Docs/PaletteColours/alert-highlight": {
            "title": "$:/language/Docs/PaletteColours/alert-highlight",
            "text": "Alert highlight"
        },
        "$:/language/Docs/PaletteColours/alert-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
            "text": "Alert muted foreground"
        },
        "$:/language/Docs/PaletteColours/background": {
            "title": "$:/language/Docs/PaletteColours/background",
            "text": "General background"
        },
        "$:/language/Docs/PaletteColours/blockquote-bar": {
            "title": "$:/language/Docs/PaletteColours/blockquote-bar",
            "text": "Blockquote bar"
        },
        "$:/language/Docs/PaletteColours/button-background": {
            "title": "$:/language/Docs/PaletteColours/button-background",
            "text": "Default button background"
        },
        "$:/language/Docs/PaletteColours/button-border": {
            "title": "$:/language/Docs/PaletteColours/button-border",
            "text": "Default button border"
        },
        "$:/language/Docs/PaletteColours/button-foreground": {
            "title": "$:/language/Docs/PaletteColours/button-foreground",
            "text": "Default button foreground"
        },
        "$:/language/Docs/PaletteColours/dirty-indicator": {
            "title": "$:/language/Docs/PaletteColours/dirty-indicator",
            "text": "Unsaved changes indicator"
        },
        "$:/language/Docs/PaletteColours/code-background": {
            "title": "$:/language/Docs/PaletteColours/code-background",
            "text": "Code background"
        },
        "$:/language/Docs/PaletteColours/code-border": {
            "title": "$:/language/Docs/PaletteColours/code-border",
            "text": "Code border"
        },
        "$:/language/Docs/PaletteColours/code-foreground": {
            "title": "$:/language/Docs/PaletteColours/code-foreground",
            "text": "Code foreground"
        },
        "$:/language/Docs/PaletteColours/download-background": {
            "title": "$:/language/Docs/PaletteColours/download-background",
            "text": "Download button background"
        },
        "$:/language/Docs/PaletteColours/download-foreground": {
            "title": "$:/language/Docs/PaletteColours/download-foreground",
            "text": "Download button foreground"
        },
        "$:/language/Docs/PaletteColours/dragger-background": {
            "title": "$:/language/Docs/PaletteColours/dragger-background",
            "text": "Dragger background"
        },
        "$:/language/Docs/PaletteColours/dragger-foreground": {
            "title": "$:/language/Docs/PaletteColours/dragger-foreground",
            "text": "Dragger foreground"
        },
        "$:/language/Docs/PaletteColours/dropdown-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-background",
            "text": "Dropdown background"
        },
        "$:/language/Docs/PaletteColours/dropdown-border": {
            "title": "$:/language/Docs/PaletteColours/dropdown-border",
            "text": "Dropdown border"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
            "text": "Dropdown tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
            "text": "Dropdown tab background"
        },
        "$:/language/Docs/PaletteColours/dropzone-background": {
            "title": "$:/language/Docs/PaletteColours/dropzone-background",
            "text": "Dropzone background"
        },
        "$:/language/Docs/PaletteColours/external-link-background-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-hover",
            "text": "External link background hover"
        },
        "$:/language/Docs/PaletteColours/external-link-background-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-visited",
            "text": "External link background visited"
        },
        "$:/language/Docs/PaletteColours/external-link-background": {
            "title": "$:/language/Docs/PaletteColours/external-link-background",
            "text": "External link background"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
            "text": "External link foreground hover"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
            "text": "External link foreground visited"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground",
            "text": "External link foreground"
        },
        "$:/language/Docs/PaletteColours/foreground": {
            "title": "$:/language/Docs/PaletteColours/foreground",
            "text": "General foreground"
        },
        "$:/language/Docs/PaletteColours/menubar-background": {
            "title": "$:/language/Docs/PaletteColours/menubar-background",
            "text": "Menu bar background"
        },
        "$:/language/Docs/PaletteColours/menubar-foreground": {
            "title": "$:/language/Docs/PaletteColours/menubar-foreground",
            "text": "Menu bar foreground"
        },
        "$:/language/Docs/PaletteColours/message-background": {
            "title": "$:/language/Docs/PaletteColours/message-background",
            "text": "Message box background"
        },
        "$:/language/Docs/PaletteColours/message-border": {
            "title": "$:/language/Docs/PaletteColours/message-border",
            "text": "Message box border"
        },
        "$:/language/Docs/PaletteColours/message-foreground": {
            "title": "$:/language/Docs/PaletteColours/message-foreground",
            "text": "Message box foreground"
        },
        "$:/language/Docs/PaletteColours/modal-backdrop": {
            "title": "$:/language/Docs/PaletteColours/modal-backdrop",
            "text": "Modal backdrop"
        },
        "$:/language/Docs/PaletteColours/modal-background": {
            "title": "$:/language/Docs/PaletteColours/modal-background",
            "text": "Modal background"
        },
        "$:/language/Docs/PaletteColours/modal-border": {
            "title": "$:/language/Docs/PaletteColours/modal-border",
            "text": "Modal border"
        },
        "$:/language/Docs/PaletteColours/modal-footer-background": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-background",
            "text": "Modal footer background"
        },
        "$:/language/Docs/PaletteColours/modal-footer-border": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-border",
            "text": "Modal footer border"
        },
        "$:/language/Docs/PaletteColours/modal-header-border": {
            "title": "$:/language/Docs/PaletteColours/modal-header-border",
            "text": "Modal header border"
        },
        "$:/language/Docs/PaletteColours/muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/muted-foreground",
            "text": "General muted foreground"
        },
        "$:/language/Docs/PaletteColours/notification-background": {
            "title": "$:/language/Docs/PaletteColours/notification-background",
            "text": "Notification background"
        },
        "$:/language/Docs/PaletteColours/notification-border": {
            "title": "$:/language/Docs/PaletteColours/notification-border",
            "text": "Notification border"
        },
        "$:/language/Docs/PaletteColours/page-background": {
            "title": "$:/language/Docs/PaletteColours/page-background",
            "text": "Page background"
        },
        "$:/language/Docs/PaletteColours/pre-background": {
            "title": "$:/language/Docs/PaletteColours/pre-background",
            "text": "Preformatted code background"
        },
        "$:/language/Docs/PaletteColours/pre-border": {
            "title": "$:/language/Docs/PaletteColours/pre-border",
            "text": "Preformatted code border"
        },
        "$:/language/Docs/PaletteColours/primary": {
            "title": "$:/language/Docs/PaletteColours/primary",
            "text": "General primary"
        },
        "$:/language/Docs/PaletteColours/select-tag-background": {
            "title": "$:/language/Docs/PaletteColours/select-tag-background",
            "text": "`<select>` element background"
        },
        "$:/language/Docs/PaletteColours/select-tag-foreground": {
            "title": "$:/language/Docs/PaletteColours/select-tag-foreground",
            "text": "`<select>` element text"
        },
        "$:/language/Docs/PaletteColours/sidebar-button-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
            "text": "Sidebar button foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
            "text": "Sidebar controls foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
            "text": "Sidebar controls foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
            "text": "Sidebar foreground shadow"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground",
            "text": "Sidebar foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
            "text": "Sidebar muted foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
            "text": "Sidebar muted foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
            "text": "Sidebar tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
            "text": "Sidebar tab background"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
            "text": "Sidebar tab border for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
            "text": "Sidebar tab border"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-divider": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
            "text": "Sidebar tab divider"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
            "text": "Sidebar tab foreground for selected tabs"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
            "text": "Sidebar tab foreground"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
            "text": "Sidebar tiddler link foreground hover"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
            "text": "Sidebar tiddler link foreground"
        },
        "$:/language/Docs/PaletteColours/site-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/site-title-foreground",
            "text": "Site title foreground"
        },
        "$:/language/Docs/PaletteColours/static-alert-foreground": {
            "title": "$:/language/Docs/PaletteColours/static-alert-foreground",
            "text": "Static alert foreground"
        },
        "$:/language/Docs/PaletteColours/tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-background-selected",
            "text": "Tab background for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-background": {
            "title": "$:/language/Docs/PaletteColours/tab-background",
            "text": "Tab background"
        },
        "$:/language/Docs/PaletteColours/tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-border-selected",
            "text": "Tab border for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-border": {
            "title": "$:/language/Docs/PaletteColours/tab-border",
            "text": "Tab border"
        },
        "$:/language/Docs/PaletteColours/tab-divider": {
            "title": "$:/language/Docs/PaletteColours/tab-divider",
            "text": "Tab divider"
        },
        "$:/language/Docs/PaletteColours/tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
            "text": "Tab foreground for selected tabs"
        },
        "$:/language/Docs/PaletteColours/tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground",
            "text": "Tab foreground"
        },
        "$:/language/Docs/PaletteColours/table-border": {
            "title": "$:/language/Docs/PaletteColours/table-border",
            "text": "Table border"
        },
        "$:/language/Docs/PaletteColours/table-footer-background": {
            "title": "$:/language/Docs/PaletteColours/table-footer-background",
            "text": "Table footer background"
        },
        "$:/language/Docs/PaletteColours/table-header-background": {
            "title": "$:/language/Docs/PaletteColours/table-header-background",
            "text": "Table header background"
        },
        "$:/language/Docs/PaletteColours/tag-background": {
            "title": "$:/language/Docs/PaletteColours/tag-background",
            "text": "Tag background"
        },
        "$:/language/Docs/PaletteColours/tag-foreground": {
            "title": "$:/language/Docs/PaletteColours/tag-foreground",
            "text": "Tag foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-background",
            "text": "Tiddler background"
        },
        "$:/language/Docs/PaletteColours/tiddler-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-border",
            "text": "Tiddler border"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
            "text": "Tiddler controls foreground hover"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
            "text": "Tiddler controls foreground for selected controls"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
            "text": "Tiddler controls foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
            "text": "Tiddler editor background"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
            "text": "Tiddler editor border image"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
            "text": "Tiddler editor border"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
            "text": "Tiddler editor background for even fields"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
            "text": "Tiddler editor background for odd fields"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-background",
            "text": "Tiddler info panel background"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-border",
            "text": "Tiddler info panel border"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
            "text": "Tiddler info panel tab background"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-background",
            "text": "Tiddler link background"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
            "text": "Tiddler link foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
            "text": "Tiddler subtitle foreground"
        },
        "$:/language/Docs/PaletteColours/tiddler-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
            "text": "Tiddler title foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-new-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-new-button",
            "text": "Toolbar 'new tiddler' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-options-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-options-button",
            "text": "Toolbar 'options' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-save-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-save-button",
            "text": "Toolbar 'save' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-info-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-info-button",
            "text": "Toolbar 'info' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-edit-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
            "text": "Toolbar 'edit' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-close-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-close-button",
            "text": "Toolbar 'close' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-delete-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
            "text": "Toolbar 'delete' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-cancel-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
            "text": "Toolbar 'cancel' button foreground"
        },
        "$:/language/Docs/PaletteColours/toolbar-done-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-done-button",
            "text": "Toolbar 'done' button foreground"
        },
        "$:/language/Docs/PaletteColours/untagged-background": {
            "title": "$:/language/Docs/PaletteColours/untagged-background",
            "text": "Untagged pill background"
        },
        "$:/language/Docs/PaletteColours/very-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/very-muted-foreground",
            "text": "Very muted foreground"
        },
        "$:/language/EditTemplate/Body/External/Hint": {
            "title": "$:/language/EditTemplate/Body/External/Hint",
            "text": "This tiddler shows content stored outside of the main TiddlyWiki file. You can edit the tags and fields but cannot directly edit the content itself"
        },
        "$:/language/EditTemplate/Body/Placeholder": {
            "title": "$:/language/EditTemplate/Body/Placeholder",
            "text": "Type the text for this tiddler"
        },
        "$:/language/EditTemplate/Body/Preview/Type/Output": {
            "title": "$:/language/EditTemplate/Body/Preview/Type/Output",
            "text": "output"
        },
        "$:/language/EditTemplate/Field/Remove/Caption": {
            "title": "$:/language/EditTemplate/Field/Remove/Caption",
            "text": "remove field"
        },
        "$:/language/EditTemplate/Field/Remove/Hint": {
            "title": "$:/language/EditTemplate/Field/Remove/Hint",
            "text": "Remove field"
        },
        "$:/language/EditTemplate/Field/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Field/Dropdown/Caption",
            "text": "field list"
        },
        "$:/language/EditTemplate/Field/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Field/Dropdown/Hint",
            "text": "Show field list"
        },
        "$:/language/EditTemplate/Fields/Add/Button": {
            "title": "$:/language/EditTemplate/Fields/Add/Button",
            "text": "add"
        },
        "$:/language/EditTemplate/Fields/Add/Button/Hint": {
            "title": "$:/language/EditTemplate/Fields/Add/Button/Hint",
            "text": "Add the new field to the tiddler"
        },
        "$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
            "text": "field name"
        },
        "$:/language/EditTemplate/Fields/Add/Prompt": {
            "title": "$:/language/EditTemplate/Fields/Add/Prompt",
            "text": "Add a new field:"
        },
        "$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
            "text": "field value"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/System": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
            "text": "System fields"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/User": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
            "text": "User fields"
        },
        "$:/language/EditTemplate/Shadow/Warning": {
            "title": "$:/language/EditTemplate/Shadow/Warning",
            "text": "This is a shadow tiddler. Any changes you make will override the default version from the plugin <<pluginLink>>"
        },
        "$:/language/EditTemplate/Shadow/OverriddenWarning": {
            "title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
            "text": "This is a modified shadow tiddler. You can revert to the default version in the plugin <<pluginLink>> by deleting this tiddler"
        },
        "$:/language/EditTemplate/Tags/Add/Button": {
            "title": "$:/language/EditTemplate/Tags/Add/Button",
            "text": "add"
        },
        "$:/language/EditTemplate/Tags/Add/Button/Hint": {
            "title": "$:/language/EditTemplate/Tags/Add/Button/Hint",
            "text": "add tag"
        },
        "$:/language/EditTemplate/Tags/Add/Placeholder": {
            "title": "$:/language/EditTemplate/Tags/Add/Placeholder",
            "text": "tag name"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
            "text": "tag list"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
            "text": "Show tag list"
        },
        "$:/language/EditTemplate/Title/BadCharacterWarning": {
            "title": "$:/language/EditTemplate/Title/BadCharacterWarning",
            "text": "Warning: avoid using any of the characters <<bad-chars>> in tiddler titles"
        },
        "$:/language/EditTemplate/Title/Exists/Prompt": {
            "title": "$:/language/EditTemplate/Title/Exists/Prompt",
            "text": "Target tiddler already exists"
        },
        "$:/language/EditTemplate/Title/Relink/Prompt": {
            "title": "$:/language/EditTemplate/Title/Relink/Prompt",
            "text": "Update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' in the //tags// and //list// fields of other tiddlers"
        },
        "$:/language/EditTemplate/Title/References/Prompt": {
            "title": "$:/language/EditTemplate/Title/References/Prompt",
            "text": "The following references to this tiddler will not be automatically updated:"
        },
        "$:/language/EditTemplate/Type/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Caption",
            "text": "content type list"
        },
        "$:/language/EditTemplate/Type/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Hint",
            "text": "Show content type list"
        },
        "$:/language/EditTemplate/Type/Delete/Caption": {
            "title": "$:/language/EditTemplate/Type/Delete/Caption",
            "text": "delete content type"
        },
        "$:/language/EditTemplate/Type/Delete/Hint": {
            "title": "$:/language/EditTemplate/Type/Delete/Hint",
            "text": "Delete content type"
        },
        "$:/language/EditTemplate/Type/Placeholder": {
            "title": "$:/language/EditTemplate/Type/Placeholder",
            "text": "content type"
        },
        "$:/language/EditTemplate/Type/Prompt": {
            "title": "$:/language/EditTemplate/Type/Prompt",
            "text": "Type:"
        },
        "$:/language/Exporters/StaticRiver": {
            "title": "$:/language/Exporters/StaticRiver",
            "text": "Static HTML"
        },
        "$:/language/Exporters/JsonFile": {
            "title": "$:/language/Exporters/JsonFile",
            "text": "JSON file"
        },
        "$:/language/Exporters/CsvFile": {
            "title": "$:/language/Exporters/CsvFile",
            "text": "CSV file"
        },
        "$:/language/Exporters/TidFile": {
            "title": "$:/language/Exporters/TidFile",
            "text": "\".tid\" file"
        },
        "$:/language/Docs/Fields/_canonical_uri": {
            "title": "$:/language/Docs/Fields/_canonical_uri",
            "text": "The full URI of an external image tiddler"
        },
        "$:/language/Docs/Fields/bag": {
            "title": "$:/language/Docs/Fields/bag",
            "text": "The name of the bag from which a tiddler came"
        },
        "$:/language/Docs/Fields/caption": {
            "title": "$:/language/Docs/Fields/caption",
            "text": "The text to be displayed on a tab or button"
        },
        "$:/language/Docs/Fields/color": {
            "title": "$:/language/Docs/Fields/color",
            "text": "The CSS color value associated with a tiddler"
        },
        "$:/language/Docs/Fields/component": {
            "title": "$:/language/Docs/Fields/component",
            "text": "The name of the component responsible for an [[alert tiddler|AlertMechanism]]"
        },
        "$:/language/Docs/Fields/current-tiddler": {
            "title": "$:/language/Docs/Fields/current-tiddler",
            "text": "Used to cache the top tiddler in a [[history list|HistoryMechanism]]"
        },
        "$:/language/Docs/Fields/created": {
            "title": "$:/language/Docs/Fields/created",
            "text": "The date a tiddler was created"
        },
        "$:/language/Docs/Fields/creator": {
            "title": "$:/language/Docs/Fields/creator",
            "text": "The name of the person who created a tiddler"
        },
        "$:/language/Docs/Fields/dependents": {
            "title": "$:/language/Docs/Fields/dependents",
            "text": "For a plugin, lists the dependent plugin titles"
        },
        "$:/language/Docs/Fields/description": {
            "title": "$:/language/Docs/Fields/description",
            "text": "The descriptive text for a plugin, or a modal dialogue"
        },
        "$:/language/Docs/Fields/draft.of": {
            "title": "$:/language/Docs/Fields/draft.of",
            "text": "For draft tiddlers, contains the title of the tiddler of which this is a draft"
        },
        "$:/language/Docs/Fields/draft.title": {
            "title": "$:/language/Docs/Fields/draft.title",
            "text": "For draft tiddlers, contains the proposed new title of the tiddler"
        },
        "$:/language/Docs/Fields/footer": {
            "title": "$:/language/Docs/Fields/footer",
            "text": "The footer text for a wizard"
        },
        "$:/language/Docs/Fields/hide-body": {
            "title": "$:/language/Docs/Fields/hide-body",
            "text": "The view template will hide bodies of tiddlers if set to: ''yes''"
        },
        "$:/language/Docs/Fields/icon": {
            "title": "$:/language/Docs/Fields/icon",
            "text": "The title of the tiddler containing the icon associated with a tiddler"
        },
        "$:/language/Docs/Fields/library": {
            "title": "$:/language/Docs/Fields/library",
            "text": "Indicates that a tiddler should be saved as a JavaScript library if set to: ''yes''"
        },
        "$:/language/Docs/Fields/list": {
            "title": "$:/language/Docs/Fields/list",
            "text": "An ordered list of tiddler titles associated with a tiddler"
        },
        "$:/language/Docs/Fields/list-before": {
            "title": "$:/language/Docs/Fields/list-before",
            "text": "If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty"
        },
        "$:/language/Docs/Fields/list-after": {
            "title": "$:/language/Docs/Fields/list-after",
            "text": "If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty"
        },
        "$:/language/Docs/Fields/modified": {
            "title": "$:/language/Docs/Fields/modified",
            "text": "The date and time at which a tiddler was last modified"
        },
        "$:/language/Docs/Fields/modifier": {
            "title": "$:/language/Docs/Fields/modifier",
            "text": "The tiddler title associated with the person who last modified a tiddler"
        },
        "$:/language/Docs/Fields/name": {
            "title": "$:/language/Docs/Fields/name",
            "text": "The human readable name associated with a plugin tiddler"
        },
        "$:/language/Docs/Fields/plugin-priority": {
            "title": "$:/language/Docs/Fields/plugin-priority",
            "text": "A numerical value indicating the priority of a plugin tiddler"
        },
        "$:/language/Docs/Fields/plugin-type": {
            "title": "$:/language/Docs/Fields/plugin-type",
            "text": "The type of plugin in a plugin tiddler"
        },
        "$:/language/Docs/Fields/revision": {
            "title": "$:/language/Docs/Fields/revision",
            "text": "The revision of the tiddler held at the server"
        },
        "$:/language/Docs/Fields/released": {
            "title": "$:/language/Docs/Fields/released",
            "text": "Date of a TiddlyWiki release"
        },
        "$:/language/Docs/Fields/source": {
            "title": "$:/language/Docs/Fields/source",
            "text": "The source URL associated with a tiddler"
        },
        "$:/language/Docs/Fields/subtitle": {
            "title": "$:/language/Docs/Fields/subtitle",
            "text": "The subtitle text for a wizard"
        },
        "$:/language/Docs/Fields/tags": {
            "title": "$:/language/Docs/Fields/tags",
            "text": "A list of tags associated with a tiddler"
        },
        "$:/language/Docs/Fields/text": {
            "title": "$:/language/Docs/Fields/text",
            "text": "The body text of a tiddler"
        },
        "$:/language/Docs/Fields/throttle.refresh": {
            "title": "$:/language/Docs/Fields/throttle.refresh",
            "text": "If present, throttles refreshes of this tiddler"
        },
        "$:/language/Docs/Fields/title": {
            "title": "$:/language/Docs/Fields/title",
            "text": "The unique name of a tiddler"
        },
        "$:/language/Docs/Fields/toc-link": {
            "title": "$:/language/Docs/Fields/toc-link",
            "text": "Suppresses the tiddler's link in a Table of Contents tree if set to: ''no''"
        },
        "$:/language/Docs/Fields/type": {
            "title": "$:/language/Docs/Fields/type",
            "text": "The content type of a tiddler"
        },
        "$:/language/Docs/Fields/version": {
            "title": "$:/language/Docs/Fields/version",
            "text": "Version information for a plugin"
        },
        "$:/language/Docs/Fields/_is_skinny": {
            "title": "$:/language/Docs/Fields/_is_skinny",
            "text": "If present, indicates that the tiddler text field must be loaded from the server"
        },
        "$:/language/Filters/AllTiddlers": {
            "title": "$:/language/Filters/AllTiddlers",
            "text": "All tiddlers except system tiddlers"
        },
        "$:/language/Filters/RecentSystemTiddlers": {
            "title": "$:/language/Filters/RecentSystemTiddlers",
            "text": "Recently modified tiddlers, including system tiddlers"
        },
        "$:/language/Filters/RecentTiddlers": {
            "title": "$:/language/Filters/RecentTiddlers",
            "text": "Recently modified tiddlers"
        },
        "$:/language/Filters/AllTags": {
            "title": "$:/language/Filters/AllTags",
            "text": "All tags except system tags"
        },
        "$:/language/Filters/Missing": {
            "title": "$:/language/Filters/Missing",
            "text": "Missing tiddlers"
        },
        "$:/language/Filters/Drafts": {
            "title": "$:/language/Filters/Drafts",
            "text": "Draft tiddlers"
        },
        "$:/language/Filters/Orphans": {
            "title": "$:/language/Filters/Orphans",
            "text": "Orphan tiddlers"
        },
        "$:/language/Filters/SystemTiddlers": {
            "title": "$:/language/Filters/SystemTiddlers",
            "text": "System tiddlers"
        },
        "$:/language/Filters/ShadowTiddlers": {
            "title": "$:/language/Filters/ShadowTiddlers",
            "text": "Shadow tiddlers"
        },
        "$:/language/Filters/OverriddenShadowTiddlers": {
            "title": "$:/language/Filters/OverriddenShadowTiddlers",
            "text": "Overridden shadow tiddlers"
        },
        "$:/language/Filters/SessionTiddlers": {
            "title": "$:/language/Filters/SessionTiddlers",
            "text": "Tiddlers modified since the wiki was loaded"
        },
        "$:/language/Filters/SystemTags": {
            "title": "$:/language/Filters/SystemTags",
            "text": "System tags"
        },
        "$:/language/Filters/StoryList": {
            "title": "$:/language/Filters/StoryList",
            "text": "Tiddlers in the story river, excluding <$text text=\"$:/AdvancedSearch\"/>"
        },
        "$:/language/Filters/TypedTiddlers": {
            "title": "$:/language/Filters/TypedTiddlers",
            "text": "Non wiki-text tiddlers"
        },
        "GettingStarted": {
            "title": "GettingStarted",
            "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\nWelcome to ~TiddlyWiki and the ~TiddlyWiki community\n\nBefore you start storing important information in ~TiddlyWiki it is vital to make sure that you can reliably save changes. See https://tiddlywiki.com/#GettingStarted for details\n\n!! Set up this ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\nSee the [[control panel|$:/ControlPanel]] for more options.\n"
        },
        "$:/language/Help/build": {
            "title": "$:/language/Help/build",
            "description": "Automatically run configured commands",
            "text": "Build the specified build targets for the current wiki. If no build targets are specified then all available targets will be built.\n\n```\n--build <target> [<target> ...]\n```\n\nBuild targets are defined in the `tiddlywiki.info` file of a wiki folder.\n\n"
        },
        "$:/language/Help/clearpassword": {
            "title": "$:/language/Help/clearpassword",
            "description": "Clear a password for subsequent crypto operations",
            "text": "Clear the password for subsequent crypto operations\n\n```\n--clearpassword\n```\n"
        },
        "$:/language/Help/default": {
            "title": "$:/language/Help/default",
            "text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\nusage: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\nAvailable commands:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\nTo get detailed help on a command:\n\n```\ntiddlywiki --help <command>\n```\n"
        },
        "$:/language/Help/deletetiddlers": {
            "title": "$:/language/Help/deletetiddlers",
            "description": "Deletes a group of tiddlers",
            "text": "<<.from-version \"5.1.20\">> Deletes a group of tiddlers identified by a filter.\n\n```\n--deletetiddlers <filter>\n```\n"
        },
        "$:/language/Help/editions": {
            "title": "$:/language/Help/editions",
            "description": "Lists the available editions of TiddlyWiki",
            "text": "Lists the names and descriptions of the available editions. You can create a new wiki of a specified edition with the `--init` command.\n\n```\n--editions\n```\n"
        },
        "$:/language/Help/fetch": {
            "title": "$:/language/Help/fetch",
            "description": "Fetch tiddlers from wiki by URL",
            "text": "Fetch one or more files over HTTP/HTTPS, and import the tiddlers matching a filter, optionally transforming the incoming titles.\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n--fetch raw-file <url> <transform-filter>\n--fetch raw-files <url-filter> <transform-filter>\n```\n\nThe \"file\" and \"files\" variants fetch the specified files and attempt to import the tiddlers within them (the same processing as if the files were dragged into the browser window). The \"raw-file\" and \"raw-files\" variants fetch the specified files and then store the raw file data in tiddlers, without applying the import logic.\n\nWith the \"file\" and \"raw-file\" variants only a single file is fetched and the first parameter is the URL of the file to read.\n\nWith the \"files\" and \"raw-files\" variants, multiple files are fetched and the first parameter is a filter yielding a list of URLs of the files to read. For example, given a set of tiddlers tagged \"remote-server\" that have a field \"url\" the filter `[tag[remote-server]get[url]]` will retrieve all the available URLs.\n\nFor the \"file\" and \"files\" variants, the `<import-filter>` parameter specifies a filter determining which tiddlers are imported. It defaults to `[all[tiddlers]]` if not provided.\n\nFor all variants, the `<transform-filter>` parameter specifies an optional filter that transforms the titles of the imported tiddlers. For example, `[addprefix[$:/myimports/]]` would add the prefix `$:/myimports/` to each title.\n\nPreceding the `--fetch` command with `--verbose` will output progress information during the import.\n\nNote that TiddlyWiki will not fetch an older version of an already loaded plugin.\n\nThe following example retrieves all the non-system tiddlers from https://tiddlywiki.com and saves them to a JSON file:\n\n```\ntiddlywiki --verbose --fetch file \"https://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\nThe following example retrieves the \"favicon\" file from tiddlywiki.com and saves it in a file called \"output.ico\". Note that the intermediate tiddler \"Icon Tiddler\" is quoted in the \"--fetch\" command because it is being used as a transformation filter to replace the default title, while there are no quotes for the \"--savetiddler\" command because it is being used directly as a title.\n\n```\ntiddlywiki --verbose --fetch raw-file \"https://tiddlywiki.com/favicon.ico\" \"[[Icon Tiddler]]\" --savetiddler \"Icon Tiddler\" output.ico\n```\n\n"
        },
        "$:/language/Help/help": {
            "title": "$:/language/Help/help",
            "description": "Display help for TiddlyWiki commands",
            "text": "Displays help text for a command:\n\n```\n--help [<command>]\n```\n\nIf the command name is omitted then a list of available commands is displayed.\n"
        },
        "$:/language/Help/import": {
            "title": "$:/language/Help/import",
            "description": "Import tiddlers from a file",
            "text": "Import tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The deserializer must be explicitly specified, unlike the `load` command which infers the deserializer from the file extension.\n\n```\n--import <filepath> <deserializer> [<title>] [<encoding>]\n```\n\nThe deserializers in the core include:\n\n* application/javascript\n* application/json\n* application/x-tiddler\n* application/x-tiddler-html-div\n* application/x-tiddlers\n* text/html\n* text/plain\n\nThe title of the imported tiddler defaults to the filename.\n\nThe encoding defaults to \"utf8\", but can be \"base64\" for importing binary files.\n\nNote that TiddlyWiki will not import an older version of an already loaded plugin.\n"
        },
        "$:/language/Help/init": {
            "title": "$:/language/Help/init",
            "description": "Initialise a new wiki folder",
            "text": "Initialise an empty [[WikiFolder|WikiFolders]] with a copy of the specified edition.\n\n```\n--init <edition> [<edition> ...]\n```\n\nFor example:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\nNote:\n\n* The wiki folder directory will be created if necessary\n* The \"edition\" defaults to ''empty''\n* The init command will fail if the wiki folder is not empty\n* The init command removes any `includeWikis` definitions in the edition's `tiddlywiki.info` file\n* When multiple editions are specified, editions initialised later will overwrite any files shared with earlier editions (so, the final `tiddlywiki.info` file will be copied from the last edition)\n* `--editions` returns a list of available editions\n"
        },
        "$:/language/Help/listen": {
            "title": "$:/language/Help/listen",
            "description": "Provides an HTTP server interface to TiddlyWiki",
            "text": "Serves a wiki over HTTP.\n\nThe listen command uses NamedCommandParameters:\n\n```\n--listen [<name>=<value>]...\n```\n\nAll parameters are optional with safe defaults, and can be specified in any order. The recognised parameters are:\n\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''credentials'' - pathname of credentials CSV file (relative to wiki folder)\n* ''anon-username'' - the username for signing edits for anonymous users\n* ''username'' - optional username for basic authentication\n* ''password'' - optional password for basic authentication\n* ''authenticated-user-header'' - optional name of header to be used for trusted authentication\n* ''readers'' - comma separated list of principals allowed to read from this wiki\n* ''writers'' - comma separated list of principals allowed to write to this wiki\n* ''csrf-disable'' - set to \"yes\" to disable CSRF checks (defaults to \"no\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''tls-cert'' - pathname of TLS certificate file (relative to wiki folder)\n* ''tls-key'' - pathname of TLS key file (relative to wiki folder)\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n* ''gzip'' - set to \"yes\" to enable gzip compression for some http endpoints (defaults to \"no\")\n\nFor information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\n"
        },
        "$:/language/Help/load": {
            "title": "$:/language/Help/load",
            "description": "Load tiddlers from a file",
            "text": "Load tiddlers from TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` or other local files. The processing applied to incoming files is determined by the file extension. Use the alternative `import` command if you need to specify the deserializer and encoding explicitly.\n\n```\n--load <filepath> [noerror]\n--load <dirpath> [noerror]\n```\n\nBy default, the load command raises an error if no tiddlers are found. The error can be suppressed by providing the optional \"noerror\" parameter.\n\nTo load tiddlers from an encrypted TiddlyWiki file you should first specify the password with the PasswordCommand. For example:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\nNote that TiddlyWiki will not load an older version of an already loaded plugin.\n"
        },
        "$:/language/Help/makelibrary": {
            "title": "$:/language/Help/makelibrary",
            "description": "Construct library plugin required by upgrade process",
            "text": "Constructs the `$:/UpgradeLibrary` tiddler for the upgrade process.\n\nThe upgrade library is formatted as an ordinary plugin tiddler with the plugin type `library`. It contains a copy of each of the plugins, themes and language packs available within the TiddlyWiki5 repository.\n\nThis command is intended for internal use; it is only relevant to users constructing a custom upgrade procedure.\n\n```\n--makelibrary <title>\n```\n\nThe title argument defaults to `$:/UpgradeLibrary`.\n"
        },
        "$:/language/Help/notfound": {
            "title": "$:/language/Help/notfound",
            "text": "No such help item"
        },
        "$:/language/Help/output": {
            "title": "$:/language/Help/output",
            "description": "Set the base output directory for subsequent commands",
            "text": "Sets the base output directory for subsequent commands. The default output directory is the `output` subdirectory of the edition directory.\n\n```\n--output <pathname>\n```\n\nIf the specified pathname is relative then it is resolved relative to the current working directory. For example `--output .` sets the output directory to the current working directory.\n\n"
        },
        "$:/language/Help/password": {
            "title": "$:/language/Help/password",
            "description": "Set a password for subsequent crypto operations",
            "text": "Set a password for subsequent crypto operations\n\n```\n--password <password>\n```\n\n''Note'': This should not be used for serving TiddlyWiki with password protection. Instead, see the password option under the [[ServerCommand]].\n"
        },
        "$:/language/Help/render": {
            "title": "$:/language/Help/render",
            "description": "Renders individual tiddlers to files",
            "text": "Render individual tiddlers identified by a filter and save the results to the specified files.\n\nOptionally, the title of a template tiddler can be specified. In this case, instead of directly rendering each tiddler, the template tiddler is rendered with the \"currentTiddler\" variable set to the title of the tiddler that is being rendered.\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>]\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be rendered\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]addsuffix[.html]]`, which uses the unchanged tiddler title as the filename\n* ''render-type'': Optional render type: `text/html` (the default) returns the full HTML text and `text/plain` just returns the text content (ie it ignores HTML tags and other unprintable material)\n* ''template'': Optional template through which each tiddler is rendered\n* ''name'': Name of optional variable\n* ''value'': Value of optional variable\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When referring to a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--render \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being rendered, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--render` command is a more flexible replacement for both the `--rendertiddler` and `--rendertiddlers` commands, which are deprecated\n\nExamples:\n\n* `--render \"[!is[system]]\" \"[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]\"` -- renders all non-system tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles and the extension HTML\n\n"
        },
        "$:/language/Help/rendertiddler": {
            "title": "$:/language/Help/rendertiddler",
            "description": "Render an individual tiddler as a specified ContentType",
            "text": "(Note: The `--rendertiddler` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender an individual tiddler as a specified ContentType, defaulting to `text/html` and save it to the specified filename.\n\nOptionally the title of a template tiddler can be specified, in which case the template tiddler is rendered with the \"currentTiddler\" variable set to the tiddler that is being rendered (the first parameter value).\n\nA name and value for an additional variable may optionally also be specified.\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>] [<name>] [<value>]\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n\nFor example, the following command saves all tiddlers matching the filter `[tag[done]]` to a JSON file titled `output.json` by employing the core template `$:/core/templates/exporters/JsonFile`.\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```\n"
        },
        "$:/language/Help/rendertiddlers": {
            "title": "$:/language/Help/rendertiddlers",
            "description": "Render tiddlers matching a filter to a specified ContentType",
            "text": "(Note: The `--rendertiddlers` command is deprecated in favour of the new, more flexible `--render` command)\n\nRender a set of tiddlers matching a filter to separate files of a specified ContentType (defaults to `text/html`) and extension (defaults to `.html`).\n\n```\n--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\nFor example:\n\n```\n--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny files in the target directory are deleted unless the ''noclean'' flag is specified. The target directory is recursively created if it is missing.\n"
        },
        "$:/language/Help/save": {
            "title": "$:/language/Help/save",
            "description": "Saves individual raw tiddlers to files",
            "text": "Saves individual tiddlers identified by a filter in their raw text or binary format to the specified files.\n\n```\n--save <tiddler-filter> <filename-filter>\n```\n\n* ''tiddler-filter'': A filter identifying the tiddler(s) to be saved\n* ''filename-filter'': Optional filter transforming tiddler titles into pathnames. If omitted, defaults to `[is[tiddler]]`, which uses the unchanged tiddler title as the filename\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nNotes:\n\n* The output directory is not cleared of any existing files\n* Any missing directories in the path to the filename are automatically created.\n* When saving a tiddler with spaces in its title, take care to use both the quotes required by your shell and also TiddlyWiki's double square brackets : `--save \"[[Motovun Jack.jpg]]\"`\n* The filename filter is evaluated with the selected items being set to the title of the tiddler currently being saved, allowing the title to be used as the basis for computing the filename. For example `[encodeuricomponent[]addprefix[static/]]` applies URI encoding to each title, and then adds the prefix `static/`\n* The `--save` command is a more flexible replacement for both the `--savetiddler` and `--savetiddlers` commands, which are deprecated\n\nExamples:\n\n* `--save \"[!is[system]is[image]]\" \"[encodeuricomponent[]addprefix[tiddlers/]]\"` -- saves all non-system image tiddlers as files in the subdirectory \"tiddlers\" with URL-encoded titles\n"
        },
        "$:/language/Help/savetiddler": {
            "title": "$:/language/Help/savetiddler",
            "description": "Saves a raw tiddler to a file",
            "text": "(Note: The `--savetiddler` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves an individual tiddler in its raw text or binary format to the specified filename.\n\n```\n--savetiddler <title> <filename>\n```\n\nBy default, the filename is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nAny missing directories in the path to the filename are automatically created.\n"
        },
        "$:/language/Help/savetiddlers": {
            "title": "$:/language/Help/savetiddlers",
            "description": "Saves a group of raw tiddlers to a directory",
            "text": "(Note: The `--savetiddlers` command is deprecated in favour of the new, more flexible `--save` command)\n\nSaves a group of tiddlers in their raw text or binary format to the specified directory.\n\n```\n--savetiddlers <filter> <pathname> [\"noclean\"]\n```\n\nBy default, the pathname is resolved relative to the `output` subdirectory of the edition directory. The `--output` command can be used to direct output to a different directory.\n\nThe output directory is cleared of existing files before saving the specified files. The deletion can be disabled by specifying the ''noclean'' flag.\n\nAny missing directories in the pathname are automatically created.\n"
        },
        "$:/language/Help/savewikifolder": {
            "title": "$:/language/Help/savewikifolder",
            "description": "Saves a wiki to a new wiki folder",
            "text": "<<.from-version \"5.1.20\">> Saves the current wiki as a wiki folder, including tiddlers, plugins and configuration:\n\n```\n--savewikifolder <wikifolderpath> [<filter>]\n```\n\n* The target wiki folder must be empty or non-existent\n* The filter specifies which tiddlers should be included. It is optional, defaulting to `[all[tiddlers]]`\n* Plugins from the official plugin library are replaced with references to those plugins in the `tiddlywiki.info` file\n* Custom plugins are unpacked into their own folder\n\nA common usage is to convert a TiddlyWiki HTML file into a wiki folder:\n\n```\ntiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder\n```\n"
        },
        "$:/language/Help/server": {
            "title": "$:/language/Help/server",
            "description": "Provides an HTTP server interface to TiddlyWiki (deprecated in favour of the new listen command)",
            "text": "Legacy command to serve a wiki over HTTP.\n\n```\n--server <port> <root-tiddler> <root-render-type> <root-serve-type> <username> <password> <host> <path-prefix> <debug-level>\n```\n\nThe parameters are:\n\n* ''port'' - port number on which to listen; non-numeric values are interpreted as a system environment variable from which the port number is extracted (defaults to \"8080\")\n* ''root-tiddler'' - the tiddler to serve at the root (defaults to \"$:/core/save/all\")\n* ''root-render-type'' - the content type to which the root tiddler should be rendered (defaults to \"text/plain\")\n* ''root-serve-type'' - the content type with which the root tiddler should be served (defaults to \"text/html\")\n* ''username'' - the default username for signing edits\n* ''password'' - optional password for basic authentication\n* ''host'' - optional hostname to serve from (defaults to \"127.0.0.1\" aka \"localhost\")\n* ''path-prefix'' - optional prefix for paths\n* ''debug-level'' - optional debug level; set to \"debug\" to view request details (defaults to \"none\")\n\nIf the password parameter is specified then the browser will prompt the user for the username and password. Note that the password is transmitted in plain text so this implementation should only be used on a trusted network or over HTTPS.\n\nFor example:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\nThe username and password can be specified as empty strings if you need to set the hostname or pathprefix and don't want to require a password.\n\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\nUsing an address like this exposes your system to the local network. For information on opening up your instance to the entire local network, and possible security concerns, see the WebServer tiddler at TiddlyWiki.com.\n\nTo run multiple TiddlyWiki servers at the same time you'll need to put each one on a different port. It can be useful to use an environment variable to pass the port number to the Node.js process. This example references an environment variable called \"MY_PORT_NUMBER\":\n\n```\n--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n"
        },
        "$:/language/Help/setfield": {
            "title": "$:/language/Help/setfield",
            "description": "Prepares external tiddlers for use",
            "text": "//Note that this command is experimental and may change or be replaced before being finalised//\n\nSets the specified field of a group of tiddlers to the result of wikifying a template tiddler with the `currentTiddler` variable set to the tiddler.\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\nThe parameters are:\n\n* ''filter'' - filter identifying the tiddlers to be affected\n* ''fieldname'' - the field to modify (defaults to \"text\")\n* ''templatetitle'' - the tiddler to wikify into the specified field. If blank or missing then the specified field is deleted\n* ''rendertype'' - the text type to render (defaults to \"text/plain\"; \"text/html\" can be used to include HTML tags)\n"
        },
        "$:/language/Help/unpackplugin": {
            "title": "$:/language/Help/unpackplugin",
            "description": "Unpack the payload tiddlers from a plugin",
            "text": "Extract the payload tiddlers from a plugin, creating them as ordinary tiddlers:\n\n```\n--unpackplugin <title>\n```\n"
        },
        "$:/language/Help/verbose": {
            "title": "$:/language/Help/verbose",
            "description": "Triggers verbose output mode",
            "text": "Triggers verbose output, useful for debugging\n\n```\n--verbose\n```\n"
        },
        "$:/language/Help/version": {
            "title": "$:/language/Help/version",
            "description": "Displays the version number of TiddlyWiki",
            "text": "Displays the version number of TiddlyWiki.\n\n```\n--version\n```\n"
        },
        "$:/language/Import/Imported/Hint": {
            "title": "$:/language/Import/Imported/Hint",
            "text": "The following tiddlers were imported:"
        },
        "$:/language/Import/Listing/Cancel/Caption": {
            "title": "$:/language/Import/Listing/Cancel/Caption",
            "text": "Cancel"
        },
        "$:/language/Import/Listing/Hint": {
            "title": "$:/language/Import/Listing/Hint",
            "text": "These tiddlers are ready to import:"
        },
        "$:/language/Import/Listing/Import/Caption": {
            "title": "$:/language/Import/Listing/Import/Caption",
            "text": "Import"
        },
        "$:/language/Import/Listing/Select/Caption": {
            "title": "$:/language/Import/Listing/Select/Caption",
            "text": "Select"
        },
        "$:/language/Import/Listing/Status/Caption": {
            "title": "$:/language/Import/Listing/Status/Caption",
            "text": "Status"
        },
        "$:/language/Import/Listing/Title/Caption": {
            "title": "$:/language/Import/Listing/Title/Caption",
            "text": "Title"
        },
        "$:/language/Import/Listing/Preview": {
            "title": "$:/language/Import/Listing/Preview",
            "text": "Preview:"
        },
        "$:/language/Import/Listing/Preview/Text": {
            "title": "$:/language/Import/Listing/Preview/Text",
            "text": "Text"
        },
        "$:/language/Import/Listing/Preview/TextRaw": {
            "title": "$:/language/Import/Listing/Preview/TextRaw",
            "text": "Text (Raw)"
        },
        "$:/language/Import/Listing/Preview/Fields": {
            "title": "$:/language/Import/Listing/Preview/Fields",
            "text": "Fields"
        },
        "$:/language/Import/Listing/Preview/Diff": {
            "title": "$:/language/Import/Listing/Preview/Diff",
            "text": "Diff"
        },
        "$:/language/Import/Listing/Preview/DiffFields": {
            "title": "$:/language/Import/Listing/Preview/DiffFields",
            "text": "Diff (Fields)"
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
            "text": "Blocked incompatible or obsolete plugin"
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
            "text": "Blocked plugin (due to incoming <<incoming>> being older than existing <<existing>>)"
        },
        "$:/language/Import/Upgrader/Plugins/Upgraded": {
            "title": "$:/language/Import/Upgrader/Plugins/Upgraded",
            "text": "Upgraded plugin from <<incoming>> to <<upgraded>>"
        },
        "$:/language/Import/Upgrader/State/Suppressed": {
            "title": "$:/language/Import/Upgrader/State/Suppressed",
            "text": "Blocked temporary state tiddler"
        },
        "$:/language/Import/Upgrader/System/Suppressed": {
            "title": "$:/language/Import/Upgrader/System/Suppressed",
            "text": "Blocked system tiddler"
        },
        "$:/language/Import/Upgrader/System/Warning": {
            "title": "$:/language/Import/Upgrader/System/Warning",
            "text": "Core module tiddler"
        },
        "$:/language/Import/Upgrader/System/Alert": {
            "title": "$:/language/Import/Upgrader/System/Alert",
            "text": "You are about to import a tiddler that will overwrite a core module tiddler. This is not recommended as it may make the system unstable"
        },
        "$:/language/Import/Upgrader/ThemeTweaks/Created": {
            "title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
            "text": "Migrated theme tweak from <$text text=<<from>>/>"
        },
        "$:/language/AboveStory/ClassicPlugin/Warning": {
            "title": "$:/language/AboveStory/ClassicPlugin/Warning",
            "text": "It looks like you are trying to load a plugin designed for ~TiddlyWiki Classic. Please note that [[these plugins do not work with TiddlyWiki version 5.x.x|https://tiddlywiki.com/#TiddlyWikiClassic]]. ~TiddlyWiki Classic plugins detected:"
        },
        "$:/language/BinaryWarning/Prompt": {
            "title": "$:/language/BinaryWarning/Prompt",
            "text": "This tiddler contains binary data"
        },
        "$:/language/ClassicWarning/Hint": {
            "title": "$:/language/ClassicWarning/Hint",
            "text": "This tiddler is written in TiddlyWiki Classic wiki text format, which is not fully compatible with TiddlyWiki version 5. See https://tiddlywiki.com/static/Upgrading.html for more details."
        },
        "$:/language/ClassicWarning/Upgrade/Caption": {
            "title": "$:/language/ClassicWarning/Upgrade/Caption",
            "text": "upgrade"
        },
        "$:/language/CloseAll/Button": {
            "title": "$:/language/CloseAll/Button",
            "text": "close all"
        },
        "$:/language/ColourPicker/Recent": {
            "title": "$:/language/ColourPicker/Recent",
            "text": "Recent:"
        },
        "$:/language/ConfirmCancelTiddler": {
            "title": "$:/language/ConfirmCancelTiddler",
            "text": "Do you wish to discard changes to the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmDeleteTiddler": {
            "title": "$:/language/ConfirmDeleteTiddler",
            "text": "Do you wish to delete the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmOverwriteTiddler": {
            "title": "$:/language/ConfirmOverwriteTiddler",
            "text": "Do you wish to overwrite the tiddler \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmEditShadowTiddler": {
            "title": "$:/language/ConfirmEditShadowTiddler",
            "text": "You are about to edit a ShadowTiddler. Any changes will override the default system making future upgrades non-trivial. Are you sure you want to edit \"<$text text=<<title>>/>\"?"
        },
        "$:/language/Count": {
            "title": "$:/language/Count",
            "text": "count"
        },
        "$:/language/DefaultNewTiddlerTitle": {
            "title": "$:/language/DefaultNewTiddlerTitle",
            "text": "New Tiddler"
        },
        "$:/language/Diffs/CountMessage": {
            "title": "$:/language/Diffs/CountMessage",
            "text": "<<diff-count>> differences"
        },
        "$:/language/DropMessage": {
            "title": "$:/language/DropMessage",
            "text": "Drop here (or use the 'Escape' key to cancel)"
        },
        "$:/language/Encryption/Cancel": {
            "title": "$:/language/Encryption/Cancel",
            "text": "Cancel"
        },
        "$:/language/Encryption/ConfirmClearPassword": {
            "title": "$:/language/Encryption/ConfirmClearPassword",
            "text": "Do you wish to clear the password? This will remove the encryption applied when saving this wiki"
        },
        "$:/language/Encryption/PromptSetPassword": {
            "title": "$:/language/Encryption/PromptSetPassword",
            "text": "Set a new password for this TiddlyWiki"
        },
        "$:/language/Encryption/Username": {
            "title": "$:/language/Encryption/Username",
            "text": "Username"
        },
        "$:/language/Encryption/Password": {
            "title": "$:/language/Encryption/Password",
            "text": "Password"
        },
        "$:/language/Encryption/RepeatPassword": {
            "title": "$:/language/Encryption/RepeatPassword",
            "text": "Repeat password"
        },
        "$:/language/Encryption/PasswordNoMatch": {
            "title": "$:/language/Encryption/PasswordNoMatch",
            "text": "Passwords do not match"
        },
        "$:/language/Encryption/SetPassword": {
            "title": "$:/language/Encryption/SetPassword",
            "text": "Set password"
        },
        "$:/language/Error/Caption": {
            "title": "$:/language/Error/Caption",
            "text": "Error"
        },
        "$:/language/Error/EditConflict": {
            "title": "$:/language/Error/EditConflict",
            "text": "File changed on server"
        },
        "$:/language/Error/Filter": {
            "title": "$:/language/Error/Filter",
            "text": "Filter error"
        },
        "$:/language/Error/FilterSyntax": {
            "title": "$:/language/Error/FilterSyntax",
            "text": "Syntax error in filter expression"
        },
        "$:/language/Error/IsFilterOperator": {
            "title": "$:/language/Error/IsFilterOperator",
            "text": "Filter Error: Unknown operand for the 'is' filter operator"
        },
        "$:/language/Error/LoadingPluginLibrary": {
            "title": "$:/language/Error/LoadingPluginLibrary",
            "text": "Error loading plugin library"
        },
        "$:/language/Error/NetworkErrorAlert": {
            "title": "$:/language/Error/NetworkErrorAlert",
            "text": "`<h2>''Network Error''</h2>It looks like the connection to the server has been lost. This may indicate a problem with your network connection. Please attempt to restore network connectivity before continuing.<br><br>''Any unsaved changes will be automatically synchronised when connectivity is restored''.`"
        },
        "$:/language/Error/RecursiveTransclusion": {
            "title": "$:/language/Error/RecursiveTransclusion",
            "text": "Recursive transclusion error in transclude widget"
        },
        "$:/language/Error/RetrievingSkinny": {
            "title": "$:/language/Error/RetrievingSkinny",
            "text": "Error retrieving skinny tiddler list"
        },
        "$:/language/Error/SavingToTWEdit": {
            "title": "$:/language/Error/SavingToTWEdit",
            "text": "Error saving to TWEdit"
        },
        "$:/language/Error/WhileSaving": {
            "title": "$:/language/Error/WhileSaving",
            "text": "Error while saving"
        },
        "$:/language/Error/XMLHttpRequest": {
            "title": "$:/language/Error/XMLHttpRequest",
            "text": "XMLHttpRequest error code"
        },
        "$:/language/InternalJavaScriptError/Title": {
            "title": "$:/language/InternalJavaScriptError/Title",
            "text": "Internal JavaScript Error"
        },
        "$:/language/InternalJavaScriptError/Hint": {
            "title": "$:/language/InternalJavaScriptError/Hint",
            "text": "Well, this is embarrassing. It is recommended that you restart TiddlyWiki by refreshing your browser"
        },
        "$:/language/InvalidFieldName": {
            "title": "$:/language/InvalidFieldName",
            "text": "Illegal characters in field name \"<$text text=<<fieldName>>/>\". Fields can only contain lowercase letters, digits and the characters underscore (`_`), hyphen (`-`) and period (`.`)"
        },
        "$:/language/LazyLoadingWarning": {
            "title": "$:/language/LazyLoadingWarning",
            "text": "<p>Trying to load external content from ''<$text text={{!!_canonical_uri}}/>''</p><p>If this message doesn't disappear, either the tiddler content type doesn't match the type of the external content, or you may be using a browser that doesn't support external content for wikis loaded as standalone files. See https://tiddlywiki.com/#ExternalText</p>"
        },
        "$:/language/LoginToTiddlySpace": {
            "title": "$:/language/LoginToTiddlySpace",
            "text": "Login to TiddlySpace"
        },
        "$:/language/Manager/Controls/FilterByTag/None": {
            "title": "$:/language/Manager/Controls/FilterByTag/None",
            "text": "(none)"
        },
        "$:/language/Manager/Controls/FilterByTag/Prompt": {
            "title": "$:/language/Manager/Controls/FilterByTag/Prompt",
            "text": "Filter by tag:"
        },
        "$:/language/Manager/Controls/Order/Prompt": {
            "title": "$:/language/Manager/Controls/Order/Prompt",
            "text": "Reverse order"
        },
        "$:/language/Manager/Controls/Search/Placeholder": {
            "title": "$:/language/Manager/Controls/Search/Placeholder",
            "text": "Search"
        },
        "$:/language/Manager/Controls/Search/Prompt": {
            "title": "$:/language/Manager/Controls/Search/Prompt",
            "text": "Search:"
        },
        "$:/language/Manager/Controls/Show/Option/Tags": {
            "title": "$:/language/Manager/Controls/Show/Option/Tags",
            "text": "tags"
        },
        "$:/language/Manager/Controls/Show/Option/Tiddlers": {
            "title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
            "text": "tiddlers"
        },
        "$:/language/Manager/Controls/Show/Prompt": {
            "title": "$:/language/Manager/Controls/Show/Prompt",
            "text": "Show:"
        },
        "$:/language/Manager/Controls/Sort/Prompt": {
            "title": "$:/language/Manager/Controls/Sort/Prompt",
            "text": "Sort by:"
        },
        "$:/language/Manager/Item/Colour": {
            "title": "$:/language/Manager/Item/Colour",
            "text": "Colour"
        },
        "$:/language/Manager/Item/Fields": {
            "title": "$:/language/Manager/Item/Fields",
            "text": "Fields"
        },
        "$:/language/Manager/Item/Icon/None": {
            "title": "$:/language/Manager/Item/Icon/None",
            "text": "(none)"
        },
        "$:/language/Manager/Item/Icon": {
            "title": "$:/language/Manager/Item/Icon",
            "text": "Icon"
        },
        "$:/language/Manager/Item/RawText": {
            "title": "$:/language/Manager/Item/RawText",
            "text": "Raw text"
        },
        "$:/language/Manager/Item/Tags": {
            "title": "$:/language/Manager/Item/Tags",
            "text": "Tags"
        },
        "$:/language/Manager/Item/Tools": {
            "title": "$:/language/Manager/Item/Tools",
            "text": "Tools"
        },
        "$:/language/Manager/Item/WikifiedText": {
            "title": "$:/language/Manager/Item/WikifiedText",
            "text": "Wikified text"
        },
        "$:/language/MissingTiddler/Hint": {
            "title": "$:/language/MissingTiddler/Hint",
            "text": "Missing tiddler \"<$text text=<<currentTiddler>>/>\" -- click {{||$:/core/ui/Buttons/edit}} to create"
        },
        "$:/language/No": {
            "title": "$:/language/No",
            "text": "No"
        },
        "$:/language/OfficialPluginLibrary": {
            "title": "$:/language/OfficialPluginLibrary",
            "text": "Official ~TiddlyWiki Plugin Library"
        },
        "$:/language/OfficialPluginLibrary/Hint": {
            "title": "$:/language/OfficialPluginLibrary/Hint",
            "text": "The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team."
        },
        "$:/language/PluginReloadWarning": {
            "title": "$:/language/PluginReloadWarning",
            "text": "Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to ~JavaScript plugins to take effect"
        },
        "$:/language/RecentChanges/DateFormat": {
            "title": "$:/language/RecentChanges/DateFormat",
            "text": "DDth MMM YYYY"
        },
        "$:/language/SystemTiddler/Tooltip": {
            "title": "$:/language/SystemTiddler/Tooltip",
            "text": "This is a system tiddler"
        },
        "$:/language/SystemTiddlers/Include/Prompt": {
            "title": "$:/language/SystemTiddlers/Include/Prompt",
            "text": "Include system tiddlers"
        },
        "$:/language/TagManager/Colour/Heading": {
            "title": "$:/language/TagManager/Colour/Heading",
            "text": "Colour"
        },
        "$:/language/TagManager/Count/Heading": {
            "title": "$:/language/TagManager/Count/Heading",
            "text": "Count"
        },
        "$:/language/TagManager/Icon/Heading": {
            "title": "$:/language/TagManager/Icon/Heading",
            "text": "Icon"
        },
        "$:/language/TagManager/Icons/None": {
            "title": "$:/language/TagManager/Icons/None",
            "text": "None"
        },
        "$:/language/TagManager/Info/Heading": {
            "title": "$:/language/TagManager/Info/Heading",
            "text": "Info"
        },
        "$:/language/TagManager/Tag/Heading": {
            "title": "$:/language/TagManager/Tag/Heading",
            "text": "Tag"
        },
        "$:/language/Tiddler/DateFormat": {
            "title": "$:/language/Tiddler/DateFormat",
            "text": "DDth MMM YYYY at hh12:0mmam"
        },
        "$:/language/UnsavedChangesWarning": {
            "title": "$:/language/UnsavedChangesWarning",
            "text": "You have unsaved changes in TiddlyWiki"
        },
        "$:/language/Yes": {
            "title": "$:/language/Yes",
            "text": "Yes"
        },
        "$:/language/Modals/Download": {
            "title": "$:/language/Modals/Download",
            "subtitle": "Download changes",
            "footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
            "help": "https://tiddlywiki.com/static/DownloadingChanges.html",
            "text": "Your browser only supports manual saving.\n\nTo save your modified wiki, right click on the download link below and select \"Download file\" or \"Save file\", and then choose the folder and filename.\n\n//You can marginally speed things up by clicking the link with the control key (Windows) or the options/alt key (Mac OS X). You will not be prompted for the folder or filename, but your browser is likely to give it an unrecognisable name -- you may need to rename the file to include an `.html` extension before you can do anything useful with it.//\n\nOn smartphones that do not allow files to be downloaded you can instead bookmark the link, and then sync your bookmarks to a desktop computer from where the wiki can be saved normally.\n"
        },
        "$:/language/Modals/SaveInstructions": {
            "title": "$:/language/Modals/SaveInstructions",
            "subtitle": "Save your work",
            "footer": "<$button message=\"tm-close-tiddler\">Close</$button>",
            "help": "https://tiddlywiki.com/static/SavingChanges.html",
            "text": "Your changes to this wiki need to be saved as a ~TiddlyWiki HTML file.\n\n!!! Desktop browsers\n\n# Select ''Save As'' from the ''File'' menu\n# Choose a filename and location\n#* Some browsers also require you to explicitly specify the file saving format as ''Webpage, HTML only'' or similar\n# Close this tab\n\n!!! Smartphone browsers\n\n# Create a bookmark to this page\n#* If you've got iCloud or Google Sync set up then the bookmark will automatically sync to your desktop where you can open it and save it as above\n# Close this tab\n\n//If you open the bookmark again in Mobile Safari you will see this message again. If you want to go ahead and use the file, just click the ''close'' button below//\n"
        },
        "$:/config/NewJournal/Title": {
            "title": "$:/config/NewJournal/Title",
            "text": "DDth MMM YYYY"
        },
        "$:/config/NewJournal/Text": {
            "title": "$:/config/NewJournal/Text",
            "text": ""
        },
        "$:/config/NewJournal/Tags": {
            "title": "$:/config/NewJournal/Tags",
            "tags": "Journal"
        },
        "$:/language/Notifications/Save/Done": {
            "title": "$:/language/Notifications/Save/Done",
            "text": "Saved wiki"
        },
        "$:/language/Notifications/Save/Starting": {
            "title": "$:/language/Notifications/Save/Starting",
            "text": "Starting to save wiki"
        },
        "$:/language/Notifications/CopiedToClipboard/Succeeded": {
            "title": "$:/language/Notifications/CopiedToClipboard/Succeeded",
            "text": "Copied to clipboard!"
        },
        "$:/language/Notifications/CopiedToClipboard/Failed": {
            "title": "$:/language/Notifications/CopiedToClipboard/Failed",
            "text": "Failed to copy to clipboard!"
        },
        "$:/language/Search/DefaultResults/Caption": {
            "title": "$:/language/Search/DefaultResults/Caption",
            "text": "List"
        },
        "$:/language/Search/Filter/Caption": {
            "title": "$:/language/Search/Filter/Caption",
            "text": "Filter"
        },
        "$:/language/Search/Filter/Hint": {
            "title": "$:/language/Search/Filter/Hint",
            "text": "Search via a [[filter expression|https://tiddlywiki.com/static/Filters.html]]"
        },
        "$:/language/Search/Filter/Matches": {
            "title": "$:/language/Search/Filter/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Matches": {
            "title": "$:/language/Search/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Matches/All": {
            "title": "$:/language/Search/Matches/All",
            "text": "All matches:"
        },
        "$:/language/Search/Matches/Title": {
            "title": "$:/language/Search/Matches/Title",
            "text": "Title matches:"
        },
        "$:/language/Search/Search": {
            "title": "$:/language/Search/Search",
            "text": "Search"
        },
        "$:/language/Search/Search/TooShort": {
            "title": "$:/language/Search/Search/TooShort",
            "text": "Search text too short"
        },
        "$:/language/Search/Shadows/Caption": {
            "title": "$:/language/Search/Shadows/Caption",
            "text": "Shadows"
        },
        "$:/language/Search/Shadows/Hint": {
            "title": "$:/language/Search/Shadows/Hint",
            "text": "Search for shadow tiddlers"
        },
        "$:/language/Search/Shadows/Matches": {
            "title": "$:/language/Search/Shadows/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/Standard/Caption": {
            "title": "$:/language/Search/Standard/Caption",
            "text": "Standard"
        },
        "$:/language/Search/Standard/Hint": {
            "title": "$:/language/Search/Standard/Hint",
            "text": "Search for standard tiddlers"
        },
        "$:/language/Search/Standard/Matches": {
            "title": "$:/language/Search/Standard/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/Search/System/Caption": {
            "title": "$:/language/Search/System/Caption",
            "text": "System"
        },
        "$:/language/Search/System/Hint": {
            "title": "$:/language/Search/System/Hint",
            "text": "Search for system tiddlers"
        },
        "$:/language/Search/System/Matches": {
            "title": "$:/language/Search/System/Matches",
            "text": "//<small><<resultCount>> matches</small>//"
        },
        "$:/language/SideBar/All/Caption": {
            "title": "$:/language/SideBar/All/Caption",
            "text": "All"
        },
        "$:/language/SideBar/Contents/Caption": {
            "title": "$:/language/SideBar/Contents/Caption",
            "text": "Contents"
        },
        "$:/language/SideBar/Drafts/Caption": {
            "title": "$:/language/SideBar/Drafts/Caption",
            "text": "Drafts"
        },
        "$:/language/SideBar/Explorer/Caption": {
            "title": "$:/language/SideBar/Explorer/Caption",
            "text": "Explorer"
        },
        "$:/language/SideBar/Missing/Caption": {
            "title": "$:/language/SideBar/Missing/Caption",
            "text": "Missing"
        },
        "$:/language/SideBar/More/Caption": {
            "title": "$:/language/SideBar/More/Caption",
            "text": "More"
        },
        "$:/language/SideBar/Open/Caption": {
            "title": "$:/language/SideBar/Open/Caption",
            "text": "Open"
        },
        "$:/language/SideBar/Orphans/Caption": {
            "title": "$:/language/SideBar/Orphans/Caption",
            "text": "Orphans"
        },
        "$:/language/SideBar/Recent/Caption": {
            "title": "$:/language/SideBar/Recent/Caption",
            "text": "Recent"
        },
        "$:/language/SideBar/Shadows/Caption": {
            "title": "$:/language/SideBar/Shadows/Caption",
            "text": "Shadows"
        },
        "$:/language/SideBar/System/Caption": {
            "title": "$:/language/SideBar/System/Caption",
            "text": "System"
        },
        "$:/language/SideBar/Tags/Caption": {
            "title": "$:/language/SideBar/Tags/Caption",
            "text": "Tags"
        },
        "$:/language/SideBar/Tags/Untagged/Caption": {
            "title": "$:/language/SideBar/Tags/Untagged/Caption",
            "text": "untagged"
        },
        "$:/language/SideBar/Tools/Caption": {
            "title": "$:/language/SideBar/Tools/Caption",
            "text": "Tools"
        },
        "$:/language/SideBar/Types/Caption": {
            "title": "$:/language/SideBar/Types/Caption",
            "text": "Types"
        },
        "$:/SiteSubtitle": {
            "title": "$:/SiteSubtitle",
            "text": "a non-linear personal web notebook"
        },
        "$:/SiteTitle": {
            "title": "$:/SiteTitle",
            "text": "My ~TiddlyWiki"
        },
        "$:/language/Snippets/ListByTag": {
            "title": "$:/language/Snippets/ListByTag",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "List of tiddlers by tag",
            "text": "<<list-links \"[tag[task]sort[title]]\">>\n"
        },
        "$:/language/Snippets/MacroDefinition": {
            "title": "$:/language/Snippets/MacroDefinition",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Macro definition",
            "text": "\\define macroName(param1:\"default value\",param2)\nText of the macro\n\\end\n"
        },
        "$:/language/Snippets/Table4x3": {
            "title": "$:/language/Snippets/Table4x3",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Table with 4 columns by 3 rows",
            "text": "|! |!Alpha |!Beta |!Gamma |!Delta |\n|!One | | | | |\n|!Two | | | | |\n|!Three | | | | |\n"
        },
        "$:/language/Snippets/TableOfContents": {
            "title": "$:/language/Snippets/TableOfContents",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "Table of Contents",
            "text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
        },
        "$:/language/ThemeTweaks/ThemeTweaks": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks",
            "text": "Theme Tweaks"
        },
        "$:/language/ThemeTweaks/ThemeTweaks/Hint": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
            "text": "You can tweak certain aspects of the ''Vanilla'' theme."
        },
        "$:/language/ThemeTweaks/Options": {
            "title": "$:/language/ThemeTweaks/Options",
            "text": "Options"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout",
            "text": "Sidebar layout"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
            "text": "Fixed story, fluid sidebar"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
            "text": "Fluid story, fixed sidebar"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles",
            "text": "Sticky titles"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
            "text": "Causes tiddler titles to \"stick\" to the top of the browser window"
        },
        "$:/language/ThemeTweaks/Options/CodeWrapping": {
            "title": "$:/language/ThemeTweaks/Options/CodeWrapping",
            "text": "Wrap long lines in code blocks"
        },
        "$:/language/ThemeTweaks/Settings": {
            "title": "$:/language/ThemeTweaks/Settings",
            "text": "Settings"
        },
        "$:/language/ThemeTweaks/Settings/FontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/FontFamily",
            "text": "Font family"
        },
        "$:/language/ThemeTweaks/Settings/CodeFontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
            "text": "Code font family"
        },
        "$:/language/ThemeTweaks/Settings/EditorFontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/EditorFontFamily",
            "text": "Editor font family"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImage": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
            "text": "Page background image"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
            "text": "Page background image attachment"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
            "text": "Scroll with tiddlers"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
            "text": "Fixed to window"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
            "text": "Page background image size"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
            "text": "Auto"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
            "text": "Cover"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
            "text": "Contain"
        },
        "$:/language/ThemeTweaks/Metrics": {
            "title": "$:/language/ThemeTweaks/Metrics",
            "text": "Sizes"
        },
        "$:/language/ThemeTweaks/Metrics/FontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/FontSize",
            "text": "Font size"
        },
        "$:/language/ThemeTweaks/Metrics/LineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/LineHeight",
            "text": "Line height"
        },
        "$:/language/ThemeTweaks/Metrics/BodyFontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
            "text": "Font size for tiddler body"
        },
        "$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
            "text": "Line height for tiddler body"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
            "text": "Story left position"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
            "text": "how far the left margin of the story river<br>(tiddler area) is from the left of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop",
            "text": "Story top position"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
            "text": "how far the top margin of the story river<br>is from the top of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight",
            "text": "Story right"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
            "text": "how far the left margin of the sidebar <br>is from the left of the page"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
            "text": "Story width"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
            "text": "the overall width of the story river"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
            "text": "Tiddler width"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
            "text": "within the story river"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
            "text": "Sidebar breakpoint"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
            "text": "the minimum page width at which the story<br>river and sidebar will appear side by side"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
            "text": "Sidebar width"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
            "text": "the width of the sidebar in fluid-fixed layout"
        },
        "$:/language/TiddlerInfo/Advanced/Caption": {
            "title": "$:/language/TiddlerInfo/Advanced/Caption",
            "text": "Advanced"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
            "text": "none"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
            "text": "Plugin Details"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
            "text": "This plugin contains the following shadow tiddlers:"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
            "text": "Shadow Status"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
            "text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is not a shadow tiddler"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
            "text": "The tiddler <$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> is a shadow tiddler"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
            "text": "It is defined in the plugin <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
            "text": "It is overridden by an ordinary tiddler"
        },
        "$:/language/TiddlerInfo/Fields/Caption": {
            "title": "$:/language/TiddlerInfo/Fields/Caption",
            "text": "Fields"
        },
        "$:/language/TiddlerInfo/List/Caption": {
            "title": "$:/language/TiddlerInfo/List/Caption",
            "text": "List"
        },
        "$:/language/TiddlerInfo/List/Empty": {
            "title": "$:/language/TiddlerInfo/List/Empty",
            "text": "This tiddler does not have a list"
        },
        "$:/language/TiddlerInfo/Listed/Caption": {
            "title": "$:/language/TiddlerInfo/Listed/Caption",
            "text": "Listed"
        },
        "$:/language/TiddlerInfo/Listed/Empty": {
            "title": "$:/language/TiddlerInfo/Listed/Empty",
            "text": "This tiddler is not listed by any others"
        },
        "$:/language/TiddlerInfo/References/Caption": {
            "title": "$:/language/TiddlerInfo/References/Caption",
            "text": "References"
        },
        "$:/language/TiddlerInfo/References/Empty": {
            "title": "$:/language/TiddlerInfo/References/Empty",
            "text": "No tiddlers link to this one"
        },
        "$:/language/TiddlerInfo/Tagging/Caption": {
            "title": "$:/language/TiddlerInfo/Tagging/Caption",
            "text": "Tagging"
        },
        "$:/language/TiddlerInfo/Tagging/Empty": {
            "title": "$:/language/TiddlerInfo/Tagging/Empty",
            "text": "No tiddlers are tagged with this one"
        },
        "$:/language/TiddlerInfo/Tools/Caption": {
            "title": "$:/language/TiddlerInfo/Tools/Caption",
            "text": "Tools"
        },
        "$:/language/Docs/Types/application/javascript": {
            "title": "$:/language/Docs/Types/application/javascript",
            "description": "JavaScript code",
            "name": "application/javascript",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/application/json": {
            "title": "$:/language/Docs/Types/application/json",
            "description": "JSON data",
            "name": "application/json",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/application/x-tiddler-dictionary": {
            "title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
            "description": "Data dictionary",
            "name": "application/x-tiddler-dictionary",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/image/gif": {
            "title": "$:/language/Docs/Types/image/gif",
            "description": "GIF image",
            "name": "image/gif",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/jpeg": {
            "title": "$:/language/Docs/Types/image/jpeg",
            "description": "JPEG image",
            "name": "image/jpeg",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/png": {
            "title": "$:/language/Docs/Types/image/png",
            "description": "PNG image",
            "name": "image/png",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/svg+xml": {
            "title": "$:/language/Docs/Types/image/svg+xml",
            "description": "Structured Vector Graphics image",
            "name": "image/svg+xml",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/image/x-icon": {
            "title": "$:/language/Docs/Types/image/x-icon",
            "description": "ICO format icon file",
            "name": "image/x-icon",
            "group": "Image",
            "group-sort": "1"
        },
        "$:/language/Docs/Types/text/css": {
            "title": "$:/language/Docs/Types/text/css",
            "description": "Static stylesheet",
            "name": "text/css",
            "group": "Developer",
            "group-sort": "2"
        },
        "$:/language/Docs/Types/text/html": {
            "title": "$:/language/Docs/Types/text/html",
            "description": "HTML markup",
            "name": "text/html",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/plain": {
            "title": "$:/language/Docs/Types/text/plain",
            "description": "Plain text",
            "name": "text/plain",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/vnd.tiddlywiki": {
            "title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
            "description": "TiddlyWiki 5",
            "name": "text/vnd.tiddlywiki",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/language/Docs/Types/text/x-tiddlywiki": {
            "title": "$:/language/Docs/Types/text/x-tiddlywiki",
            "description": "TiddlyWiki Classic",
            "name": "text/x-tiddlywiki",
            "group": "Text",
            "group-sort": "0"
        },
        "$:/languages/en-GB/icon": {
            "title": "$:/languages/en-GB/icon",
            "type": "image/svg+xml",
            "text": "<svg xmlns=\"http://www.w3.org/2000/svg\" viewBox=\"0 0 60 30\" width=\"1200\" height=\"600\">\n<clipPath id=\"t\">\n\t<path d=\"M30,15 h30 v15 z v15 h-30 z h-30 v-15 z v-15 h30 z\"/>\n</clipPath>\n<path d=\"M0,0 v30 h60 v-30 z\" fill=\"#00247d\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" stroke=\"#fff\" stroke-width=\"6\"/>\n<path d=\"M0,0 L60,30 M60,0 L0,30\" clip-path=\"url(#t)\" stroke=\"#cf142b\" stroke-width=\"4\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#fff\" stroke-width=\"10\"/>\n<path d=\"M30,0 v30 M0,15 h60\" stroke=\"#cf142b\" stroke-width=\"6\"/>\n</svg>\n"
        },
        "$:/languages/en-GB": {
            "title": "$:/languages/en-GB",
            "name": "en-GB",
            "description": "English (British)",
            "author": "JeremyRuston",
            "core-version": ">=5.0.0\"",
            "text": "Stub pseudo-plugin for the default language"
        },
        "$:/core/modules/commander.js": {
            "title": "$:/core/modules/commander.js",
            "text": "/*\\\ntitle: $:/core/modules/commander.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Commander class is a command interpreter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a sequence of commands\n\tcommandTokens: an array of command string tokens\n\twiki: reference to the wiki store object\n\tstreams: {output:, error:}, each of which has a write(string) method\n\tcallback: a callback invoked as callback(err) where err is null if there was no error\n*/\nvar Commander = function(commandTokens,callback,wiki,streams) {\n\tvar path = require(\"path\");\n\tthis.commandTokens = commandTokens;\n\tthis.nextToken = 0;\n\tthis.callback = callback;\n\tthis.wiki = wiki;\n\tthis.streams = streams;\n\tthis.outputPath = path.resolve($tw.boot.wikiPath,$tw.config.wikiOutputSubDir);\n};\n\n/*\nLog a string if verbose flag is set\n*/\nCommander.prototype.log = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str + \"\\n\");\n\t}\n};\n\n/*\nWrite a string if verbose flag is set\n*/\nCommander.prototype.write = function(str) {\n\tif(this.verbose) {\n\t\tthis.streams.output.write(str);\n\t}\n};\n\n/*\nAdd a string of tokens to the command queue\n*/\nCommander.prototype.addCommandTokens = function(commandTokens) {\n\tvar params = commandTokens.slice(0);\n\tparams.unshift(0);\n\tparams.unshift(this.nextToken);\n\tArray.prototype.splice.apply(this.commandTokens,params);\n};\n\n/*\nExecute the sequence of commands and invoke a callback on completion\n*/\nCommander.prototype.execute = function() {\n\tthis.executeNextCommand();\n};\n\n/*\nExecute the next command in the sequence\n*/\nCommander.prototype.executeNextCommand = function() {\n\tvar self = this;\n\t// Invoke the callback if there are no more commands\n\tif(this.nextToken >= this.commandTokens.length) {\n\t\tthis.callback(null);\n\t} else {\n\t\t// Get and check the command token\n\t\tvar commandName = this.commandTokens[this.nextToken++];\n\t\tif(commandName.substr(0,2) !== \"--\") {\n\t\t\tthis.callback(\"Missing command: \" + commandName);\n\t\t} else {\n\t\t\tcommandName = commandName.substr(2); // Trim off the --\n\t\t\t// Accumulate the parameters to the command\n\t\t\tvar params = [];\n\t\t\twhile(this.nextToken < this.commandTokens.length && \n\t\t\t\tthis.commandTokens[this.nextToken].substr(0,2) !== \"--\") {\n\t\t\t\tparams.push(this.commandTokens[this.nextToken++]);\n\t\t\t}\n\t\t\t// Get the command info\n\t\t\tvar command = $tw.commands[commandName],\n\t\t\t\tc,err;\n\t\t\tif(!command) {\n\t\t\t\tthis.callback(\"Unknown command: \" + commandName);\n\t\t\t} else {\n\t\t\t\tif(this.verbose) {\n\t\t\t\t\tthis.streams.output.write(\"Executing command: \" + commandName + \" \" + params.join(\" \") + \"\\n\");\n\t\t\t\t}\n\t\t\t\t// Parse named parameters if required\n\t\t\t\tif(command.info.namedParameterMode) {\n\t\t\t\t\tparams = this.extractNamedParameters(params,command.info.mandatoryParameters);\n\t\t\t\t\tif(typeof params === \"string\") {\n\t\t\t\t\t\treturn this.callback(params);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(command.info.synchronous) {\n\t\t\t\t\t// Synchronous command\n\t\t\t\t\tc = new command.Command(params,this);\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tthis.executeNextCommand();\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// Asynchronous command\n\t\t\t\t\tc = new command.Command(params,this,function(err) {\n\t\t\t\t\t\tif(err) {\n\t\t\t\t\t\t\tself.callback(err);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tself.executeNextCommand();\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t\terr = c.execute();\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\tthis.callback(err);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nGiven an array of parameter strings `params` in name:value format, and an array of mandatory parameter names in `mandatoryParameters`, returns a hashmap of values or a string if error\n*/\nCommander.prototype.extractNamedParameters = function(params,mandatoryParameters) {\n\tmandatoryParameters = mandatoryParameters || [];\n\tvar errors = [],\n\t\tparamsByName = Object.create(null);\n\t// Extract the parameters\n\t$tw.utils.each(params,function(param) {\n\t\tvar index = param.indexOf(\"=\");\n\t\tif(index < 1) {\n\t\t\terrors.push(\"malformed named parameter: '\" + param + \"'\");\n\t\t}\n\t\tparamsByName[param.slice(0,index)] = $tw.utils.trim(param.slice(index+1));\n\t});\n\t// Check the mandatory parameters are present\n\t$tw.utils.each(mandatoryParameters,function(mandatoryParameter) {\n\t\tif(!$tw.utils.hop(paramsByName,mandatoryParameter)) {\n\t\t\terrors.push(\"missing mandatory parameter: '\" + mandatoryParameter + \"'\");\n\t\t}\n\t});\n\t// Return any errors\n\tif(errors.length > 0) {\n\t\treturn errors.join(\" and\\n\");\n\t} else {\n\t\treturn paramsByName;\t\t\n\t}\n};\n\nCommander.initCommands = function(moduleType) {\n\tmoduleType = moduleType || \"command\";\n\t$tw.commands = {};\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tvar c = $tw.commands[module.info.name] = {};\n\t\t// Add the methods defined by the module\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\tc[f] = module[f];\n\t\t\t}\n\t\t}\n\t});\n};\n\nexports.Commander = Commander;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/commands/build.js": {
            "title": "$:/core/modules/commands/build.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/build.js\ntype: application/javascript\nmodule-type: command\n\nCommand to build a build target\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"build\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\t// Get the build targets defined in the wiki\n\tvar buildTargets = $tw.boot.wikiInfo.build;\n\tif(!buildTargets) {\n\t\treturn \"No build targets defined\";\n\t}\n\t// Loop through each of the specified targets\n\tvar targets;\n\tif(this.params.length > 0) {\n\t\ttargets = this.params;\n\t} else {\n\t\ttargets = Object.keys(buildTargets);\n\t}\n\tfor(var targetIndex=0; targetIndex<targets.length; targetIndex++) {\n\t\tvar target = targets[targetIndex],\n\t\t\tcommands = buildTargets[target];\n\t\tif(!commands) {\n\t\t\treturn \"Build target '\" + target + \"' not found\";\n\t\t}\n\t\t// Add the commands to the queue\n\t\tthis.commander.addCommandTokens(commands);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/clearpassword.js": {
            "title": "$:/core/modules/commands/clearpassword.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/clearpassword.js\ntype: application/javascript\nmodule-type: command\n\nClear password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"clearpassword\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\t$tw.crypto.setPassword(null);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/deletetiddlers.js": {
            "title": "$:/core/modules/commands/deletetiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/deletetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to delete tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"deletetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filter\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\twiki.deleteTiddler(title);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/editions.js": {
            "title": "$:/core/modules/commands/editions.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/editions.js\ntype: application/javascript\nmodule-type: command\n\nCommand to list the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"editions\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\t// Output the list\n\tthis.commander.streams.output.write(\"Available editions:\\n\\n\");\n\tvar editionInfo = $tw.utils.getEditionInfo();\n\t$tw.utils.each(editionInfo,function(info,name) {\n\t\tself.commander.streams.output.write(\"    \" + name + \": \" + info.description + \"\\n\");\n\t});\n\tthis.commander.streams.output.write(\"\\n\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/fetch.js": {
            "title": "$:/core/modules/commands/fetch.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/fetch.js\ntype: application/javascript\nmodule-type: command\n\nCommands to fetch external tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"fetch\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing subcommand and url\";\n\t}\n\tswitch(this.params[0]) {\n\t\tcase \"raw-file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turl: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"file\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turl: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"raw-files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\traw: true,\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\ttransformFilter: this.params[2] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t\tcase \"files\":\n\t\t\treturn this.fetchFiles({\n\t\t\t\turlFilter: this.params[1],\n\t\t\t\timportFilter: this.params[2],\n\t\t\t\ttransformFilter: this.params[3] || \"\",\n\t\t\t\tcallback: this.callback\n\t\t\t});\n\t\t\tbreak;\n\t}\n\treturn null;\n};\n\nCommand.prototype.fetchFiles = function(options) {\n\tvar self = this;\n\t// Get the list of URLs\n\tvar urls;\n\tif(options.url) {\n\t\turls = [options.url]\n\t} else if(options.urlFilter) {\n\t\turls = $tw.wiki.filterTiddlers(options.urlFilter);\n\t} else {\n\t\treturn \"Missing URL\";\n\t}\n\t// Process each URL in turn\n\tvar next = 0;\n\tvar getNextFile = function(err) {\n\t\tif(err) {\n\t\t\treturn options.callback(err);\n\t\t}\n\t\tif(next < urls.length) {\n\t\t\tself.fetchFile(urls[next++],options,getNextFile);\n\t\t} else {\n\t\t\toptions.callback(null);\n\t\t}\n\t};\n\tgetNextFile(null);\n\t// Success\n\treturn null;\n};\n\nCommand.prototype.fetchFile = function(url,options,callback,redirectCount) {\n\tif(redirectCount > 10) {\n\t\treturn callback(\"Error too many redirects retrieving \" + url);\n\t}\n\tvar self = this,\n\t\tlib = url.substr(0,8) === \"https://\" ? require(\"https\") : require(\"http\");\n\tlib.get(url).on(\"response\",function(response) {\n\t    var type = (response.headers[\"content-type\"] || \"\").split(\";\")[0],\n\t    \tdata = [];\n\t    self.commander.write(\"Reading \" + url + \": \");\n\t    response.on(\"data\",function(chunk) {\n\t        data.push(chunk);\n\t        self.commander.write(\".\");\n\t    });\n\t    response.on(\"end\",function() {\n\t        self.commander.write(\"\\n\");\n\t        if(response.statusCode === 200) {\n\t\t        self.processBody(Buffer.concat(data),type,options,url);\n\t\t        callback(null);\n\t        } else {\n\t        \tif(response.statusCode === 302 || response.statusCode === 303 || response.statusCode === 307) {\n\t        \t\treturn self.fetchFile(response.headers.location,options,callback,redirectCount + 1);\n\t        \t} else {\n\t\t        \treturn callback(\"Error \" + response.statusCode + \" retrieving \" + url)\t        \t\t\n\t        \t}\n\t        }\n\t   \t});\n\t   \tresponse.on(\"error\",function(e) {\n\t\t\tconsole.log(\"Error on GET request: \" + e);\n\t\t\tcallback(e);\n\t   \t});\n\t});\n\treturn null;\n};\n\nCommand.prototype.processBody = function(body,type,options,url) {\n\tvar self = this;\n\t// Collect the tiddlers in a wiki\n\tvar incomingWiki = new $tw.Wiki();\n\tif(options.raw) {\n\t\tvar typeInfo = type ? $tw.config.contentTypeInfo[type] : null,\n\t\t\tencoding = typeInfo ? typeInfo.encoding : \"utf8\";\n\t\tincomingWiki.addTiddler(new $tw.Tiddler({\n\t\t\ttitle: url,\n\t\t\ttype: type,\n\t\t\ttext: body.toString(encoding)\n\t\t}));\n\t} else {\n\t\t// Deserialise the file to extract the tiddlers\n\t\tvar tiddlers = this.commander.wiki.deserializeTiddlers(type || \"text/html\",body.toString(\"utf8\"),{});\n\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\tincomingWiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t});\n\t}\n\t// Filter the tiddlers to select the ones we want\n\tvar filteredTitles = incomingWiki.filterTiddlers(options.importFilter || \"[all[tiddlers]]\");\n\t// Import the selected tiddlers\n\tvar count = 0;\n\tincomingWiki.each(function(tiddler,title) {\n\t\tif(filteredTitles.indexOf(title) !== -1) {\n\t\t\tvar newTiddler;\n\t\t\tif(options.transformFilter) {\n\t\t\t\tvar transformedTitle = (incomingWiki.filterTiddlers(options.transformFilter,null,self.commander.wiki.makeTiddlerIterator([title])) || [\"\"])[0];\n\t\t\t\tif(transformedTitle) {\n\t\t\t\t\tself.commander.log(\"Importing \" + title + \" as \" + transformedTitle)\n\t\t\t\t\tnewTiddler = new $tw.Tiddler(tiddler,{title: transformedTitle});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.commander.log(\"Importing \" + title)\n\t\t\t\tnewTiddler = tiddler;\n\t\t\t}\n\t\t\tself.commander.wiki.importTiddler(newTiddler);\n\t\t\tcount++;\n\t\t}\n\t});\n\tself.commander.log(\"Imported \" + count + \" tiddlers\")\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/help.js": {
            "title": "$:/core/modules/commands/help.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/help.js\ntype: application/javascript\nmodule-type: command\n\nHelp command\n\n\\*/\n(function(){\n\n/*jshint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"help\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar subhelp = this.params[0] || \"default\",\n\t\thelpBase = \"$:/language/Help/\",\n\t\ttext;\n\tif(!this.commander.wiki.getTiddler(helpBase + subhelp)) {\n\t\tsubhelp = \"notfound\";\n\t}\n\t// Wikify the help as formatted text (ie block elements generate newlines)\n\ttext = this.commander.wiki.renderTiddler(\"text/plain-formatted\",helpBase + subhelp);\n\t// Remove any leading linebreaks\n\ttext = text.replace(/^(\\r?\\n)*/g,\"\");\n\tthis.commander.streams.output.write(text);\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/import.js": {
            "title": "$:/core/modules/commands/import.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/import.js\ntype: application/javascript\nmodule-type: command\n\nCommand to import tiddlers from a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"import\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 2) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar filename = self.params[0],\n\t\tdeserializer = self.params[1],\n\t\ttitle = self.params[2] || filename,\n\t\tencoding = self.params[3] || \"utf8\",\n\t\ttext = fs.readFileSync(filename,encoding),\n\t\ttiddlers = this.commander.wiki.deserializeTiddlers(null,text,{title: title},{deserializer: deserializer});\n\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t});\n\tthis.commander.log(tiddlers.length + \" tiddler(s) imported\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/init.js": {
            "title": "$:/core/modules/commands/init.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/init.js\ntype: application/javascript\nmodule-type: command\n\nCommand to initialise an empty wiki folder\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"init\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\t// Check that we don't already have a valid wiki folder\n\tif($tw.boot.wikiTiddlersPath || ($tw.utils.isDirectory($tw.boot.wikiPath) && !$tw.utils.isDirectoryEmpty($tw.boot.wikiPath))) {\n\t\treturn \"Wiki folder is not empty\";\n\t}\n\t// Loop through each of the specified editions\n\tvar editions = this.params.length > 0 ? this.params : [\"empty\"];\n\tfor(var editionIndex=0; editionIndex<editions.length; editionIndex++) {\n\t\tvar editionName = editions[editionIndex];\n\t\t// Check the edition exists\n\t\tvar editionPath = $tw.findLibraryItem(editionName,$tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar));\n\t\tif(!$tw.utils.isDirectory(editionPath)) {\n\t\t\treturn \"Edition '\" + editionName + \"' not found\";\n\t\t}\n\t\t// Copy the edition content\n\t\tvar err = $tw.utils.copyDirectory(editionPath,$tw.boot.wikiPath);\n\t\tif(!err) {\n\t\t\tthis.commander.streams.output.write(\"Copied edition '\" + editionName + \"' to \" + $tw.boot.wikiPath + \"\\n\");\n\t\t} else {\n\t\t\treturn err;\n\t\t}\n\t}\n\t// Tweak the tiddlywiki.info to remove any included wikis\n\tvar packagePath = $tw.boot.wikiPath + \"/tiddlywiki.info\",\n\t\tpackageJson = JSON.parse(fs.readFileSync(packagePath));\n\tdelete packageJson.includeWikis;\n\tfs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/listen.js": {
            "title": "$:/core/modules/commands/listen.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/listen.js\ntype: application/javascript\nmodule-type: command\n\nListen for HTTP requests and serve tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"listen\",\n\tsynchronous: true,\n\tnamedParameterMode: true,\n\tmandatoryParameters: [],\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this;\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: self.params\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/load.js": {
            "title": "$:/core/modules/commands/load.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/load.js\ntype: application/javascript\nmodule-type: command\n\nCommand to load tiddlers from a file or directory\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"load\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar tiddlers = $tw.loadTiddlersFromPath(self.params[0]),\n\t\tcount = 0;\n\t$tw.utils.each(tiddlers,function(tiddlerInfo) {\n\t\t$tw.utils.each(tiddlerInfo.tiddlers,function(tiddler) {\n\t\t\tself.commander.wiki.importTiddler(new $tw.Tiddler(tiddler));\n\t\t\tcount++;\n\t\t});\n\t});\n\tif(!count && self.params[1] !== \"noerror\") {\n\t\tself.callback(\"No tiddlers found in file \\\"\" + self.params[0] + \"\\\"\");\n\t} else {\n\t\tself.callback(null);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/makelibrary.js": {
            "title": "$:/core/modules/commands/makelibrary.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/makelibrary.js\ntype: application/javascript\nmodule-type: command\n\nCommand to pack all of the plugins in the library into a plugin tiddler of type \"library\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"makelibrary\",\n\tsynchronous: true\n};\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar wiki = this.commander.wiki,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tupgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,\n\t\ttiddlers = {};\n\t// Collect up the library plugins\n\tvar collectPlugins = function(folder) {\n\t\t\tvar pluginFolders = fs.readdirSync(folder);\n\t\t\tfor(var p=0; p<pluginFolders.length; p++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {\n\t\t\t\t\tpluginFields = $tw.loadPluginFolder(path.resolve(folder,\"./\" + pluginFolders[p]));\n\t\t\t\t\tif(pluginFields && pluginFields.title) {\n\t\t\t\t\t\ttiddlers[pluginFields.title] = pluginFields;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\t\tcollectPublisherPlugins = function(folder) {\n\t\t\tvar publisherFolders = fs.readdirSync(folder);\n\t\t\tfor(var t=0; t<publisherFolders.length; t++) {\n\t\t\t\tif(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {\n\t\t\t\t\tcollectPlugins(path.resolve(folder,\"./\" + publisherFolders[t]));\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.pluginsPath,$tw.config.pluginsEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.themesPath,$tw.config.themesEnvVar),collectPublisherPlugins);\n\t$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.languagesPath,$tw.config.languagesEnvVar),collectPlugins);\n\t// Save the upgrade library tiddler\n\tvar pluginFields = {\n\t\ttitle: upgradeLibraryTitle,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"library\",\n\t\t\"text\": JSON.stringify({tiddlers: tiddlers})\n\t};\n\twiki.addTiddler(new $tw.Tiddler(pluginFields));\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/output.js": {
            "title": "$:/core/modules/commands/output.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/output.js\ntype: application/javascript\nmodule-type: command\n\nCommand to set the default output location (defaults to current working directory)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"output\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tvar fs = require(\"fs\"),\n\t\tpath = require(\"path\");\n\tif(this.params.length < 1) {\n\t\treturn \"Missing output path\";\n\t}\n\tthis.commander.outputPath = path.resolve(process.cwd(),this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/password.js": {
            "title": "$:/core/modules/commands/password.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/password.js\ntype: application/javascript\nmodule-type: command\n\nSave password for crypto operations\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"password\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing password\";\n\t}\n\t$tw.crypto.setPassword(this.params[0]);\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/render.js": {
            "title": "$:/core/modules/commands/render.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/render.js\ntype: application/javascript\nmodule-type: command\n\nRender individual tiddlers and save the results to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"render\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing tiddler filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]addsuffix[.html]]\",\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tvarName = this.params[4],\n\t\tvarValue = this.params[5],\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template || title),\n\t\t\tvariables = {currentTiddler: title};\n\t\tif(varName) {\n\t\t\tvariables[varName] = varValue || \"\";\n\t\t}\n\t\tvar widgetNode = wiki.makeWidget(parser,{variables: variables}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Rendering \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/rendertiddler.js": {
            "title": "$:/core/modules/commands/rendertiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/rendertiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render a tiddler and save it to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"rendertiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttype = this.params[2] || \"text/html\",\n\t\ttemplate = this.params[3],\n\t\tname = this.params[4],\n\t\tvalue = this.params[5],\n\t\tvariables = {};\n\t$tw.utils.createFileDirectories(filename);\n\tif(template) {\n\t\tvariables.currentTiddler = title;\n\t\ttitle = template;\n\t}\n\tif(name && value) {\n\t\tvariables[name] = value;\n\t}\n\tfs.writeFile(filename,this.commander.wiki.renderTiddler(type,title,{variables: variables}),\"utf8\",function(err) {\n\t\tself.callback(err);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/rendertiddlers.js": {
            "title": "$:/core/modules/commands/rendertiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/rendertiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to render several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"rendertiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\ttemplate = this.params[1],\n\t\toutputPath = this.commander.outputPath,\n\t\tpathname = path.resolve(outputPath,this.params[2]),\t\t\n\t\ttype = this.params[3] || \"text/html\",\n\t\textension = this.params[4] || \".html\",\n\t\tdeleteDirectory = (this.params[5] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(template),\n\t\t\twidgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}}),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\tvar text = type === \"text/html\" ? container.innerHTML : container.textContent,\n\t\t\texportPath = null;\n\t\tif($tw.utils.hop($tw.macros,\"tv-get-export-path\")) {\n\t\t\tvar macroPath = $tw.macros[\"tv-get-export-path\"].run.apply(self,[title]);\n\t\t\tif(macroPath) {\n\t\t\t\texportPath = path.resolve(outputPath,macroPath + extension);\n\t\t\t}\n\t\t}\n\t\tvar finalPath = exportPath || path.resolve(pathname,encodeURIComponent(title) + extension);\n\t\t$tw.utils.createFileDirectories(finalPath);\n\t\tfs.writeFileSync(finalPath,text,\"utf8\");\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/save.js": {
            "title": "$:/core/modules/commands/save.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/save.js\ntype: application/javascript\nmodule-type: command\n\nSaves individual tiddlers in their raw text or binary format to the specified files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"save\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename filter\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\ttiddlerFilter = this.params[0],\n\t\tfilenameFilter = this.params[1] || \"[is[tiddler]]\",\n\t\ttiddlers = wiki.filterTiddlers(tiddlerFilter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilepath = path.resolve(self.commander.outputPath,wiki.filterTiddlers(filenameFilter,$tw.rootWidget,wiki.makeTiddlerIterator([title]))[0]);\n\t\tif(self.commander.verbose) {\n\t\t\tconsole.log(\"Saving \\\"\" + title + \"\\\" to \\\"\" + filepath + \"\\\"\");\n\t\t}\n\t\t$tw.utils.createFileDirectories(filepath);\n\t\tfs.writeFileSync(filepath,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savelibrarytiddlers.js": {
            "title": "$:/core/modules/commands/savelibrarytiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savelibrarytiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the subtiddlers of a bundle tiddler as a series of JSON files\n\n--savelibrarytiddlers <tiddler> <pathname> <skinnylisting>\n\nThe tiddler identifies the bundle tiddler that contains the subtiddlers.\n\nThe pathname specifies the pathname to the folder in which the JSON files should be saved. The filename is the URL encoded title of the subtiddler.\n\nThe skinnylisting specifies the title of the tiddler to which a JSON catalogue of the subtiddlers will be saved. The JSON file contains the same data as the bundle tiddler but with the `text` field removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savelibrarytiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\tcontainerTitle = this.params[0],\n\t\tfilter = this.params[1],\n\t\tbasepath = this.params[2],\n\t\tskinnyListTitle = this.params[3];\n\t// Get the container tiddler as data\n\tvar containerData = self.commander.wiki.getTiddlerDataCached(containerTitle,undefined);\n\tif(!containerData) {\n\t\treturn \"'\" + containerTitle + \"' is not a tiddler bundle\";\n\t}\n\t// Filter the list of plugins\n\tvar pluginList = [];\n\t$tw.utils.each(containerData.tiddlers,function(tiddler,title) {\n\t\tpluginList.push(title);\n\t});\n\tvar filteredPluginList;\n\tif(filter) {\n\t\tfilteredPluginList = self.commander.wiki.filterTiddlers(filter,null,self.commander.wiki.makeTiddlerIterator(pluginList));\n\t} else {\n\t\tfilteredPluginList = pluginList;\n\t}\n\t// Iterate through the plugins\n\tvar skinnyList = [];\n\t$tw.utils.each(filteredPluginList,function(title) {\n\t\tvar tiddler = containerData.tiddlers[title];\n\t\t// Save each JSON file and collect the skinny data\n\t\tvar pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + \".json\");\n\t\t$tw.utils.createFileDirectories(pathname);\n\t\tfs.writeFileSync(pathname,JSON.stringify(tiddler),\"utf8\");\n\t\t// Collect the skinny list data\n\t\tvar pluginTiddlers = JSON.parse(tiddler.text),\n\t\t\treadmeContent = (pluginTiddlers.tiddlers[title + \"/readme\"] || {}).text,\n\t\t\tdoesRequireReload = !!$tw.wiki.doesPluginInfoRequireReload(pluginTiddlers),\n\t\t\ticonTiddler = pluginTiddlers.tiddlers[title + \"/icon\"] || {},\n\t\t\ticonType = iconTiddler.type,\n\t\t\ticonText = iconTiddler.text,\n\t\t\ticonContent;\n\t\tif(iconType && iconText) {\n\t\t\ticonContent = $tw.utils.makeDataUri(iconText,iconType);\n\t\t}\n\t\tskinnyList.push($tw.utils.extend({},tiddler,{\n\t\t\ttext: undefined,\n\t\t\treadme: readmeContent,\n\t\t\t\"requires-reload\": doesRequireReload ? \"yes\" : \"no\",\n\t\t\ticon: iconContent\n\t\t}));\n\t});\n\t// Save the catalogue tiddler\n\tif(skinnyListTitle) {\n\t\tself.commander.wiki.setTiddlerData(skinnyListTitle,skinnyList);\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savetiddler.js": {
            "title": "$:/core/modules/commands/savetiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savetiddler.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the content of a tiddler to a file\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savetiddler\",\n\tsynchronous: false\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 2) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\ttitle = this.params[0],\n\t\tfilename = path.resolve(this.commander.outputPath,this.params[1]),\n\t\ttiddler = this.commander.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar type = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"};\n\t\t$tw.utils.createFileDirectories(filename);\n\t\tfs.writeFile(filename,tiddler.fields.text,contentTypeInfo.encoding,function(err) {\n\t\t\tself.callback(err);\n\t\t});\n\t} else {\n\t\treturn \"Missing tiddler: \" + title;\n\t}\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savetiddlers.js": {
            "title": "$:/core/modules/commands/savetiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savetiddlers.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save several tiddlers to a folder of files\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"savetiddlers\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing filename\";\n\t}\n\tvar self = this,\n\t\tfs = require(\"fs\"),\n\t\tpath = require(\"path\"),\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tpathname = path.resolve(this.commander.outputPath,this.params[1]),\n\t\tdeleteDirectory = (this.params[2] || \"\").toLowerCase() !== \"noclean\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\tif(deleteDirectory) {\n\t\t$tw.utils.deleteDirectory(pathname);\n\t}\n\t$tw.utils.createDirectory(pathname);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.commander.wiki.getTiddler(title),\n\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\",\n\t\t\tcontentTypeInfo = $tw.config.contentTypeInfo[type] || {encoding: \"utf8\"},\n\t\t\tfilename = path.resolve(pathname,encodeURIComponent(title));\n\t\tfs.writeFileSync(filename,tiddler.fields.text,contentTypeInfo.encoding);\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/savewikifolder.js": {
            "title": "$:/core/modules/commands/savewikifolder.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/savewikifolder.js\ntype: application/javascript\nmodule-type: command\n\nCommand to save the current wiki as a wiki folder\n\n--savewikifolder <wikifolderpath> [<filter>]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"savewikifolder\",\n\tsynchronous: true\n};\n\nvar fs,path;\nif($tw.node) {\n\tfs = require(\"fs\");\n\tpath = require(\"path\");\n}\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing wiki folder path\";\n\t}\n\tvar wikifoldermaker = new WikiFolderMaker(this.params[0],this.params[1],this.commander);\n\treturn wikifoldermaker.save();\n};\n\nfunction WikiFolderMaker(wikiFolderPath,wikiFilter,commander) {\n\tthis.wikiFolderPath = wikiFolderPath;\n\tthis.wikiFilter = wikiFilter || \"[all[tiddlers]]\";\n\tthis.commander = commander;\n\tthis.wiki = commander.wiki;\n\tthis.savedPaths = []; // So that we can detect filename clashes\n}\n\nWikiFolderMaker.prototype.log = function(str) {\n\tif(this.commander.verbose) {\n\t\tconsole.log(str);\n\t}\n};\n\nWikiFolderMaker.prototype.tiddlersToIgnore = [\n\t\"$:/boot/boot.css\",\n\t\"$:/boot/boot.js\",\n\t\"$:/boot/bootprefix.js\",\n\t\"$:/core\",\n\t\"$:/library/sjcl.js\",\n\t\"$:/temp/info-plugin\"\n];\n\n/*\nReturns null if successful, or an error string if there was an error\n*/\nWikiFolderMaker.prototype.save = function() {\n\tvar self = this;\n\t// Check that the output directory doesn't exist\n\tif(fs.existsSync(this.wikiFolderPath) && !$tw.utils.isDirectoryEmpty(this.wikiFolderPath)) {\n\t\treturn \"The unpackwiki command requires that the output wiki folder be empty\";\n\t}\n\t// Get the tiddlers from the source wiki\n\tvar tiddlerTitles = this.wiki.filterTiddlers(this.wikiFilter);\n\t// Initialise a new tiddlwiki.info file\n\tvar newWikiInfo = {};\n\t// Process each incoming tiddler in turn\n\t$tw.utils.each(tiddlerTitles,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tif(self.tiddlersToIgnore.indexOf(title) !== -1) {\n\t\t\t\t// Ignore the core plugin and the ephemeral info plugin\n\t\t\t\tself.log(\"Ignoring tiddler: \" + title);\n\t\t\t} else {\n\t\t\t\tvar type = tiddler.fields.type,\n\t\t\t\t\tpluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif(type === \"application/json\" && pluginType) {\n\t\t\t\t\t// Plugin tiddler\n\t\t\t\t\tvar libraryDetails = self.findPluginInLibrary(title);\n\t\t\t\t\tif(libraryDetails) {\n\t\t\t\t\t\t// A plugin from the core library\n\t\t\t\t\t\tself.log(\"Adding built-in plugin: \" + libraryDetails.name);\n\t\t\t\t\t\tnewWikiInfo[libraryDetails.type] = newWikiInfo[libraryDetails.type]  || [];\n\t\t\t\t\t\t$tw.utils.pushTop(newWikiInfo[libraryDetails.type],libraryDetails.name);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// A custom plugin\n\t\t\t\t\t\tself.log(\"Processing custom plugin: \" + title);\n\t\t\t\t\t\tself.saveCustomPlugin(tiddler);\n\t\t\t\t\t}\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\t// Ordinary tiddler\n\t\t\t\t\tself.saveTiddler(\"tiddlers\",tiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Save the tiddlywiki.info file\n\tthis.saveJSONFile(\"tiddlywiki.info\",newWikiInfo);\n\tself.log(\"Writing tiddlywiki.info: \" + JSON.stringify(newWikiInfo,null,$tw.config.preferences.jsonSpaces));\n\treturn null;\n};\n\n/*\nTest whether the specified tiddler is a plugin in the plugin library\n*/\nWikiFolderMaker.prototype.findPluginInLibrary = function(title) {\n\tvar parts = title.split(\"/\"),\n\t\tpluginPath, type, name;\n\tif(parts[0] === \"$:\") {\n\t\tif(parts[1] === \"languages\" && parts.length === 3) {\n\t\t\tpluginPath = \"languages\" + path.sep + parts[2];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2];\n\t\t} else if(parts[1] === \"plugins\" || parts[1] === \"themes\" && parts.length === 4) {\n\t\t\tpluginPath = parts[1] + path.sep + parts[2] + path.sep + parts[3];\n\t\t\ttype = parts[1];\n\t\t\tname = parts[2] + \"/\" + parts[3];\n\t\t}\n\t}\n\tif(pluginPath && type && name) {\n\t\tpluginPath = path.resolve($tw.boot.bootPath,\"..\",pluginPath);\n\t\tif(fs.existsSync(pluginPath)) {\n\t\t\treturn {\n\t\t\t\tpluginPath: pluginPath,\n\t\t\t\ttype: type,\n\t\t\t\tname: name\n\t\t\t};\n\t\t}\n\t}\n\treturn false;\n};\n\nWikiFolderMaker.prototype.saveCustomPlugin = function(pluginTiddler) {\n\tvar self = this,\n\t\tpluginTitle = pluginTiddler.fields.title,\n\t\ttitleParts = pluginTitle.split(\"/\"),\n\t\tdirectory = $tw.utils.generateTiddlerFilepath(titleParts[titleParts.length - 1],{\n\t\t\tdirectory: path.resolve(this.wikiFolderPath,pluginTiddler.fields[\"plugin-type\"] + \"s\")\n\t\t}),\n\t\tpluginInfo = pluginTiddler.getFieldStrings({exclude: [\"text\",\"type\"]});\n\tthis.saveJSONFile(directory + path.sep + \"plugin.info\",pluginInfo);\n\tself.log(\"Writing \" + directory + path.sep + \"plugin.info: \" + JSON.stringify(pluginInfo,null,$tw.config.preferences.jsonSpaces));\n\tvar pluginTiddlers = JSON.parse(pluginTiddler.fields.text).tiddlers; // A hashmap of tiddlers in the plugin\n\t$tw.utils.each(pluginTiddlers,function(tiddler) {\n\t\tself.saveTiddler(directory,new $tw.Tiddler(tiddler));\n\t});\n};\n\nWikiFolderMaker.prototype.saveTiddler = function(directory,tiddler) {\n\tvar fileInfo = $tw.utils.generateTiddlerFileInfo(tiddler,{\n\t\tdirectory: path.resolve(this.wikiFolderPath,directory),\n\t\twiki: this.wiki\n\t});\n\t$tw.utils.saveTiddlerToFileSync(tiddler,fileInfo);\n};\n\nWikiFolderMaker.prototype.saveJSONFile = function(filename,json) {\n\tthis.saveTextFile(filename,JSON.stringify(json,null,$tw.config.preferences.jsonSpaces));\n};\n\nWikiFolderMaker.prototype.saveTextFile = function(filename,data) {\n\tthis.saveFile(filename,\"utf8\",data);\n};\n\nWikiFolderMaker.prototype.saveFile = function(filename,encoding,data) {\n\tvar filepath = path.resolve(this.wikiFolderPath,filename);\n\t$tw.utils.createFileDirectories(filepath);\n\tfs.writeFileSync(filepath,data,encoding);\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/server.js": {
            "title": "$:/core/modules/commands/server.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/server.js\ntype: application/javascript\nmodule-type: command\n\nDeprecated legacy command for serving tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Server = require(\"$:/core/modules/server/server.js\").Server;\n\nexports.info = {\n\tname: \"server\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tvar self = this;\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(!$tw.boot.wikiTiddlersPath) {\n\t\t$tw.utils.warning(\"Warning: Wiki folder '\" + $tw.boot.wikiPath + \"' does not exist or is missing a tiddlywiki.info file\");\n\t}\n\t// Set up server\n\tthis.server = new Server({\n\t\twiki: this.commander.wiki,\n\t\tvariables: {\n\t\t\tport: this.params[0],\n\t\t\thost: this.params[6],\n\t\t\t\"root-tiddler\": this.params[1],\n\t\t\t\"root-render-type\": this.params[2],\n\t\t\t\"root-serve-type\": this.params[3],\n\t\t\tusername: this.params[4],\n\t\t\tpassword: this.params[5],\n\t\t\t\"path-prefix\": this.params[7],\n\t\t\t\"debug-level\": this.params[8]\n\t\t}\n\t});\n\tvar nodeServer = this.server.listen();\n\t$tw.hooks.invokeHook(\"th-server-command-post-start\",this.server,nodeServer,\"tiddlywiki\");\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/setfield.js": {
            "title": "$:/core/modules/commands/setfield.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/setfield.js\ntype: application/javascript\nmodule-type: command\n\nCommand to modify selected tiddlers to set a field to the text of a template tiddler that has been wikified with the selected tiddler as the current tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.info = {\n\tname: \"setfield\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 4) {\n\t\treturn \"Missing parameters\";\n\t}\n\tvar self = this,\n\t\twiki = this.commander.wiki,\n\t\tfilter = this.params[0],\n\t\tfieldname = this.params[1] || \"text\",\n\t\ttemplatetitle = this.params[2],\n\t\trendertype = this.params[3] || \"text/plain\",\n\t\ttiddlers = wiki.filterTiddlers(filter);\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar parser = wiki.parseTiddler(templatetitle),\n\t\t\tnewFields = {},\n\t\t\ttiddler = wiki.getTiddler(title);\n\t\tif(parser) {\n\t\t\tvar widgetNode = wiki.makeWidget(parser,{variables: {currentTiddler: title}});\n\t\t\tvar container = $tw.fakeDocument.createElement(\"div\");\n\t\t\twidgetNode.render(container,null);\n\t\t\tnewFields[fieldname] = rendertype === \"text/html\" ? container.innerHTML : container.textContent;\n\t\t} else {\n\t\t\tnewFields[fieldname] = undefined;\n\t\t}\n\t\twiki.addTiddler(new $tw.Tiddler(tiddler,newFields));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/unpackplugin.js": {
            "title": "$:/core/modules/commands/unpackplugin.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/unpackplugin.js\ntype: application/javascript\nmodule-type: command\n\nCommand to extract the shadow tiddlers from within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"unpackplugin\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander,callback) {\n\tthis.params = params;\n\tthis.commander = commander;\n\tthis.callback = callback;\n};\n\nCommand.prototype.execute = function() {\n\tif(this.params.length < 1) {\n\t\treturn \"Missing plugin name\";\n\t}\n\tvar self = this,\n\t\ttitle = this.params[0],\n\t\tpluginData = this.commander.wiki.getTiddlerDataCached(title);\n\tif(!pluginData) {\n\t\treturn \"Plugin '\" + title + \"' not found\";\n\t}\n\t$tw.utils.each(pluginData.tiddlers,function(tiddler) {\n\t\tself.commander.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t});\n\treturn null;\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/verbose.js": {
            "title": "$:/core/modules/commands/verbose.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/verbose.js\ntype: application/javascript\nmodule-type: command\n\nVerbose command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"verbose\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.verbose = true;\n\t// Output the boot message log\n\tthis.commander.streams.output.write(\"Boot log:\\n  \" + $tw.boot.logMessages.join(\"\\n  \") + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/commands/version.js": {
            "title": "$:/core/modules/commands/version.js",
            "text": "/*\\\ntitle: $:/core/modules/commands/version.js\ntype: application/javascript\nmodule-type: command\n\nVersion command\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.info = {\n\tname: \"version\",\n\tsynchronous: true\n};\n\nvar Command = function(params,commander) {\n\tthis.params = params;\n\tthis.commander = commander;\n};\n\nCommand.prototype.execute = function() {\n\tthis.commander.streams.output.write($tw.version + \"\\n\");\n\treturn null; // No error\n};\n\nexports.Command = Command;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "command"
        },
        "$:/core/modules/config.js": {
            "title": "$:/core/modules/config.js",
            "text": "/*\\\ntitle: $:/core/modules/config.js\ntype: application/javascript\nmodule-type: config\n\nCore configuration constants\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.preferences = {};\n\nexports.preferences.notificationDuration = 3 * 1000;\nexports.preferences.jsonSpaces = 4;\n\nexports.textPrimitives = {\n\tupperLetter: \"[A-Z\\u00c0-\\u00d6\\u00d8-\\u00de\\u0150\\u0170]\",\n\tlowerLetter: \"[a-z\\u00df-\\u00f6\\u00f8-\\u00ff\\u0151\\u0171]\",\n\tanyLetter:   \"[A-Za-z0-9\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\",\n\tblockPrefixLetters:\t\"[A-Za-z0-9-_\\u00c0-\\u00d6\\u00d8-\\u00de\\u00df-\\u00f6\\u00f8-\\u00ff\\u0150\\u0170\\u0151\\u0171]\"\n};\n\nexports.textPrimitives.unWikiLink = \"~\";\nexports.textPrimitives.wikiLink = exports.textPrimitives.upperLetter + \"+\" +\n\texports.textPrimitives.lowerLetter + \"+\" +\n\texports.textPrimitives.upperLetter +\n\texports.textPrimitives.anyLetter + \"*\";\n\nexports.htmlEntities = {quot:34, amp:38, apos:39, lt:60, gt:62, nbsp:160, iexcl:161, cent:162, pound:163, curren:164, yen:165, brvbar:166, sect:167, uml:168, copy:169, ordf:170, laquo:171, not:172, shy:173, reg:174, macr:175, deg:176, plusmn:177, sup2:178, sup3:179, acute:180, micro:181, para:182, middot:183, cedil:184, sup1:185, ordm:186, raquo:187, frac14:188, frac12:189, frac34:190, iquest:191, Agrave:192, Aacute:193, Acirc:194, Atilde:195, Auml:196, Aring:197, AElig:198, Ccedil:199, Egrave:200, Eacute:201, Ecirc:202, Euml:203, Igrave:204, Iacute:205, Icirc:206, Iuml:207, ETH:208, Ntilde:209, Ograve:210, Oacute:211, Ocirc:212, Otilde:213, Ouml:214, times:215, Oslash:216, Ugrave:217, Uacute:218, Ucirc:219, Uuml:220, Yacute:221, THORN:222, szlig:223, agrave:224, aacute:225, acirc:226, atilde:227, auml:228, aring:229, aelig:230, ccedil:231, egrave:232, eacute:233, ecirc:234, euml:235, igrave:236, iacute:237, icirc:238, iuml:239, eth:240, ntilde:241, ograve:242, oacute:243, ocirc:244, otilde:245, ouml:246, divide:247, oslash:248, ugrave:249, uacute:250, ucirc:251, uuml:252, yacute:253, thorn:254, yuml:255, OElig:338, oelig:339, Scaron:352, scaron:353, Yuml:376, fnof:402, circ:710, tilde:732, Alpha:913, Beta:914, Gamma:915, Delta:916, Epsilon:917, Zeta:918, Eta:919, Theta:920, Iota:921, Kappa:922, Lambda:923, Mu:924, Nu:925, Xi:926, Omicron:927, Pi:928, Rho:929, Sigma:931, Tau:932, Upsilon:933, Phi:934, Chi:935, Psi:936, Omega:937, alpha:945, beta:946, gamma:947, delta:948, epsilon:949, zeta:950, eta:951, theta:952, iota:953, kappa:954, lambda:955, mu:956, nu:957, xi:958, omicron:959, pi:960, rho:961, sigmaf:962, sigma:963, tau:964, upsilon:965, phi:966, chi:967, psi:968, omega:969, thetasym:977, upsih:978, piv:982, ensp:8194, emsp:8195, thinsp:8201, zwnj:8204, zwj:8205, lrm:8206, rlm:8207, ndash:8211, mdash:8212, lsquo:8216, rsquo:8217, sbquo:8218, ldquo:8220, rdquo:8221, bdquo:8222, dagger:8224, Dagger:8225, bull:8226, hellip:8230, permil:8240, prime:8242, Prime:8243, lsaquo:8249, rsaquo:8250, oline:8254, frasl:8260, euro:8364, image:8465, weierp:8472, real:8476, trade:8482, alefsym:8501, larr:8592, uarr:8593, rarr:8594, darr:8595, harr:8596, crarr:8629, lArr:8656, uArr:8657, rArr:8658, dArr:8659, hArr:8660, forall:8704, part:8706, exist:8707, empty:8709, nabla:8711, isin:8712, notin:8713, ni:8715, prod:8719, sum:8721, minus:8722, lowast:8727, radic:8730, prop:8733, infin:8734, ang:8736, and:8743, or:8744, cap:8745, cup:8746, int:8747, there4:8756, sim:8764, cong:8773, asymp:8776, ne:8800, equiv:8801, le:8804, ge:8805, sub:8834, sup:8835, nsub:8836, sube:8838, supe:8839, oplus:8853, otimes:8855, perp:8869, sdot:8901, lceil:8968, rceil:8969, lfloor:8970, rfloor:8971, lang:9001, rang:9002, loz:9674, spades:9824, clubs:9827, hearts:9829, diams:9830 };\n\nexports.htmlVoidElements = \"area,base,br,col,command,embed,hr,img,input,keygen,link,meta,param,source,track,wbr\".split(\",\");\n\nexports.htmlBlockElements = \"address,article,aside,audio,blockquote,canvas,dd,div,dl,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,hr,li,noscript,ol,output,p,pre,section,table,tfoot,ul,video\".split(\",\");\n\nexports.htmlUnsafeElements = \"script\".split(\",\");\n\n})();\n",
            "type": "application/javascript",
            "module-type": "config"
        },
        "$:/core/modules/deserializers.js": {
            "title": "$:/core/modules/deserializers.js",
            "text": "/*\\\ntitle: $:/core/modules/deserializers.js\ntype: application/javascript\nmodule-type: tiddlerdeserializer\n\nFunctions to deserialise tiddlers from a block of text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nUtility function to parse an old-style tiddler DIV in a *.tid file. It looks like this:\n\n<div title=\"Title\" creator=\"JoeBloggs\" modifier=\"JoeBloggs\" created=\"201102111106\" modified=\"201102111310\" tags=\"myTag [[my long tag]]\">\n<pre>The text of the tiddler (without the expected HTML encoding).\n</pre>\n</div>\n\nNote that the field attributes are HTML encoded, but that the body of the <PRE> tag is not encoded.\n\nWhen these tiddler DIVs are encountered within a TiddlyWiki HTML file then the body is encoded in the usual way.\n*/\nvar parseTiddlerDiv = function(text /* [,fields] */) {\n\t// Slot together the default results\n\tvar result = {};\n\tif(arguments.length > 1) {\n\t\tfor(var f=1; f<arguments.length; f++) {\n\t\t\tvar fields = arguments[f];\n\t\t\tfor(var t in fields) {\n\t\t\t\tresult[t] = fields[t];\t\t\n\t\t\t}\n\t\t}\n\t}\n\t// Parse the DIV body\n\tvar startRegExp = /^\\s*<div\\s+([^>]*)>(\\s*<pre>)?/gi,\n\t\tendRegExp,\n\t\tmatch = startRegExp.exec(text);\n\tif(match) {\n\t\t// Old-style DIVs don't have the <pre> tag\n\t\tif(match[2]) {\n\t\t\tendRegExp = /<\\/pre>\\s*<\\/div>\\s*$/gi;\n\t\t} else {\n\t\t\tendRegExp = /<\\/div>\\s*$/gi;\n\t\t}\n\t\tvar endMatch = endRegExp.exec(text);\n\t\tif(endMatch) {\n\t\t\t// Extract the text\n\t\t\tresult.text = text.substring(match.index + match[0].length,endMatch.index);\n\t\t\t// Process the attributes\n\t\t\tvar attrRegExp = /\\s*([^=\\s]+)\\s*=\\s*(?:\"([^\"]*)\"|'([^']*)')/gi,\n\t\t\t\tattrMatch;\n\t\t\tdo {\n\t\t\t\tattrMatch = attrRegExp.exec(match[1]);\n\t\t\t\tif(attrMatch) {\n\t\t\t\t\tvar name = attrMatch[1];\n\t\t\t\t\tvar value = attrMatch[2] !== undefined ? attrMatch[2] : attrMatch[3];\n\t\t\t\t\tresult[name] = value;\n\t\t\t\t}\n\t\t\t} while(attrMatch);\n\t\t\treturn result;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports[\"application/x-tiddler-html-div\"] = function(text,fields) {\n\treturn [parseTiddlerDiv(text,fields)];\n};\n\nexports[\"application/json\"] = function(text,fields) {\n\tvar incoming,\n\t\tresults = [];\n\ttry {\n\t\tincoming = JSON.parse(text);\n\t} catch(e) {\n\t\tincoming = [{\n\t\t\ttitle: \"JSON error: \" + e,\n\t\t\ttext: \"\"\n\t\t}]\n\t}\n\tif(!$tw.utils.isArray(incoming)) {\n\t\tincoming = [incoming];\n\t}\n\tfor(var t=0; t<incoming.length; t++) {\n\t\tvar incomingFields = incoming[t],\n\t\t\tfields = {};\n\t\tfor(var f in incomingFields) {\n\t\t\tif(typeof incomingFields[f] === \"string\") {\n\t\t\t\tfields[f] = incomingFields[f];\n\t\t\t}\n\t\t}\n\t\tresults.push(fields);\n\t}\n\treturn results;\n};\n\n/*\nParse an HTML file into tiddlers. There are three possibilities:\n# A TiddlyWiki classic HTML file containing `text/x-tiddlywiki` tiddlers\n# A TiddlyWiki5 HTML file containing `text/vnd.tiddlywiki` tiddlers\n# An ordinary HTML file\n*/\nexports[\"text/html\"] = function(text,fields) {\n\t// Check if we've got a store area\n\tvar storeAreaMarkerRegExp = /<div id=[\"']?storeArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\tmatch = storeAreaMarkerRegExp.exec(text);\n\tif(match) {\n\t\t// If so, it's either a classic TiddlyWiki file or an unencrypted TW5 file\n\t\t// First read the normal tiddlers\n\t\tvar results = deserializeTiddlyWikiFile(text,storeAreaMarkerRegExp.lastIndex,!!match[1],fields);\n\t\t// Then any system tiddlers\n\t\tvar systemAreaMarkerRegExp = /<div id=[\"']?systemArea['\"]?( style=[\"']?display:none;[\"']?)?>/gi,\n\t\t\tsysMatch = systemAreaMarkerRegExp.exec(text);\n\t\tif(sysMatch) {\n\t\t\tresults.push.apply(results,deserializeTiddlyWikiFile(text,systemAreaMarkerRegExp.lastIndex,!!sysMatch[1],fields));\n\t\t}\n\t\treturn results;\n\t} else {\n\t\t// Check whether we've got an encrypted file\n\t\tvar encryptedStoreArea = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedStoreArea) {\n\t\t\t// If so, attempt to decrypt it using the current password\n\t\t\treturn $tw.utils.decryptStoreArea(encryptedStoreArea);\n\t\t} else {\n\t\t\t// It's not a TiddlyWiki so we'll return the entire HTML file as a tiddler\n\t\t\treturn deserializeHtmlFile(text,fields);\n\t\t}\n\t}\n};\n\nfunction deserializeHtmlFile(text,fields) {\n\tvar result = {};\n\t$tw.utils.each(fields,function(value,name) {\n\t\tresult[name] = value;\n\t});\n\tresult.text = text;\n\tresult.type = \"text/html\";\n\treturn [result];\n}\n\nfunction deserializeTiddlyWikiFile(text,storeAreaEnd,isTiddlyWiki5,fields) {\n\tvar results = [],\n\t\tendOfDivRegExp = /(<\\/div>\\s*)/gi,\n\t\tstartPos = storeAreaEnd,\n\t\tdefaultType = isTiddlyWiki5 ? undefined : \"text/x-tiddlywiki\";\n\tendOfDivRegExp.lastIndex = startPos;\n\tvar match = endOfDivRegExp.exec(text);\n\twhile(match) {\n\t\tvar endPos = endOfDivRegExp.lastIndex,\n\t\t\ttiddlerFields = parseTiddlerDiv(text.substring(startPos,endPos),fields,{type: defaultType});\n\t\tif(!tiddlerFields) {\n\t\t\tbreak;\n\t\t}\n\t\t$tw.utils.each(tiddlerFields,function(value,name) {\n\t\t\tif(typeof value === \"string\") {\n\t\t\t\ttiddlerFields[name] = $tw.utils.htmlDecode(value);\n\t\t\t}\n\t\t});\n\t\tif(tiddlerFields.text !== null) {\n\t\t\tresults.push(tiddlerFields);\n\t\t}\n\t\tstartPos = endPos;\n\t\tmatch = endOfDivRegExp.exec(text);\n\t}\n\treturn results;\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "tiddlerdeserializer"
        },
        "$:/core/modules/editor/engines/framed.js": {
            "title": "$:/core/modules/editor/engines/framed.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/engines/framed.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea within an iframe. This is done so that the selection is preserved even when clicking away from the textarea\n\n\\*/\n(function(){\n\n/*jslint node: true,browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction FramedEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Create our hidden dummy text area for reading styles\n\tthis.dummyTextArea = this.widget.document.createElement(\"textarea\");\n\tif(this.widget.editClass) {\n\t\tthis.dummyTextArea.className = this.widget.editClass;\n\t}\n\tthis.dummyTextArea.setAttribute(\"hidden\",\"true\");\n\tthis.parentNode.insertBefore(this.dummyTextArea,this.nextSibling);\n\tthis.widget.domNodes.push(this.dummyTextArea);\n\t// Create the iframe\n\tthis.iframeNode = this.widget.document.createElement(\"iframe\");\n\tthis.parentNode.insertBefore(this.iframeNode,this.nextSibling);\n\tthis.iframeDoc = this.iframeNode.contentWindow.document;\n\t// (Firefox requires us to put some empty content in the iframe)\n\tthis.iframeDoc.open();\n\tthis.iframeDoc.write(\"\");\n\tthis.iframeDoc.close();\n\t// Style the iframe\n\tthis.iframeNode.className = this.dummyTextArea.className;\n\tthis.iframeNode.style.border = \"none\";\n\tthis.iframeNode.style.padding = \"0\";\n\tthis.iframeNode.style.resize = \"none\";\n\tthis.iframeNode.style[\"background-color\"] = this.widget.wiki.extractTiddlerDataItem(this.widget.wiki.getTiddlerText(\"$:/palette\"),\"tiddler-editor-background\");\n\tthis.iframeDoc.body.style.margin = \"0\";\n\tthis.iframeDoc.body.style.padding = \"0\";\n\tthis.widget.domNodes.push(this.iframeNode);\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.iframeDoc.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.iframeDoc.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.iframeNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\t// Copy the styles from the dummy textarea\n\tthis.copyStyles();\n\t// Add event listeners\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"click\",handlerObject: this,handlerMethod: \"handleClickEvent\"},\n\t\t{name: \"input\",handlerObject: this,handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"keydown\",handlerObject: this.widget,handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.iframeDoc.body.appendChild(this.domNode);\n}\n\n/*\nCopy styles from the dummy text area to the textarea in the iframe\n*/\nFramedEngine.prototype.copyStyles = function() {\n\t// Copy all styles\n\t$tw.utils.copyStyles(this.dummyTextArea,this.domNode);\n\t// Override the ones that should not be set the same as the dummy textarea\n\tthis.domNode.style.display = \"block\";\n\tthis.domNode.style.width = \"100%\";\n\tthis.domNode.style.margin = \"0\";\n\tthis.domNode.style[\"background-color\"] = this.widget.wiki.extractTiddlerDataItem(this.widget.wiki.getTiddlerText(\"$:/palette\"),\"tiddler-editor-background\");\n\t// In Chrome setting -webkit-text-fill-color overrides the placeholder text colour\n\tthis.domNode.style[\"-webkit-text-fill-color\"] = \"currentcolor\";\n};\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nFramedEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode) {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nFramedEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nFramedEngine.prototype.fixHeight = function() {\n\t// Make sure styles are updated\n\tthis.copyStyles();\n\t// Adjust height\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\tvar newHeight = $tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t\tthis.iframeNode.style.height = (newHeight + 14) + \"px\"; // +14 for the border on the textarea\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t\tthis.iframeNode.style.height = (fixedHeight + 14) + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nFramedEngine.prototype.focus  = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a click\n*/\nFramedEngine.prototype.handleClickEvent = function(event) {\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nFramedEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nFramedEngine.prototype.createTextOperation = function() {\n\tvar operation = {\n\t\ttext: this.domNode.value,\n\t\tselStart: this.domNode.selectionStart,\n\t\tselEnd: this.domNode.selectionEnd,\n\t\tcutStart: null,\n\t\tcutEnd: null,\n\t\treplacement: null,\n\t\tnewSelStart: null,\n\t\tnewSelEnd: null\n\t};\n\toperation.selection = operation.text.substring(operation.selStart,operation.selEnd);\n\treturn operation;\n};\n\n/*\nExecute a text operation\n*/\nFramedEngine.prototype.executeTextOperation = function(operation) {\n\t// Perform the required changes to the text area and the underlying tiddler\n\tvar newText = operation.text;\n\tif(operation.replacement !== null) {\n\t\tnewText = operation.text.substring(0,operation.cutStart) + operation.replacement + operation.text.substring(operation.cutEnd);\n\t\t// Attempt to use a execCommand to modify the value of the control\n\t\tif(this.iframeDoc.queryCommandSupported(\"insertText\") && this.iframeDoc.queryCommandSupported(\"delete\") && !$tw.browser.isFirefox) {\n\t\t\tthis.domNode.focus();\n\t\t\tthis.domNode.setSelectionRange(operation.cutStart,operation.cutEnd);\n\t\t\tif(operation.replacement === \"\") {\n\t\t\t\tthis.iframeDoc.execCommand(\"delete\",false,\"\");\n\t\t\t} else {\n\t\t\t\tthis.iframeDoc.execCommand(\"insertText\",false,operation.replacement);\n\t\t\t}\n\t\t} else {\n\t\t\tthis.domNode.value = newText;\n\t\t}\n\t\tthis.domNode.focus();\n\t\tthis.domNode.setSelectionRange(operation.newSelStart,operation.newSelEnd);\n\t}\n\tthis.domNode.focus();\n\treturn newText;\n};\n\nexports.FramedEngine = FramedEngine;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/engines/simple.js": {
            "title": "$:/core/modules/editor/engines/simple.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/engines/simple.js\ntype: application/javascript\nmodule-type: library\n\nText editor engine based on a simple input or textarea tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HEIGHT_VALUE_TITLE = \"$:/config/TextEditor/EditorHeight/Height\";\n\nfunction SimpleEngine(options) {\n\t// Save our options\n\toptions = options || {};\n\tthis.widget = options.widget;\n\tthis.value = options.value;\n\tthis.parentNode = options.parentNode;\n\tthis.nextSibling = options.nextSibling;\n\t// Construct the textarea or input node\n\tvar tag = this.widget.editTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"input\";\n\t}\n\tthis.domNode = this.widget.document.createElement(tag);\n\t// Set the text\n\tif(this.widget.editTag === \"textarea\") {\n\t\tthis.domNode.appendChild(this.widget.document.createTextNode(this.value));\n\t} else {\n\t\tthis.domNode.value = this.value;\n\t}\n\t// Set the attributes\n\tif(this.widget.editType) {\n\t\tthis.domNode.setAttribute(\"type\",this.widget.editType);\n\t}\n\tif(this.widget.editPlaceholder) {\n\t\tthis.domNode.setAttribute(\"placeholder\",this.widget.editPlaceholder);\n\t}\n\tif(this.widget.editSize) {\n\t\tthis.domNode.setAttribute(\"size\",this.widget.editSize);\n\t}\n\tif(this.widget.editRows) {\n\t\tthis.domNode.setAttribute(\"rows\",this.widget.editRows);\n\t}\n\tif(this.widget.editClass) {\n\t\tthis.domNode.className = this.widget.editClass;\n\t}\n\tif(this.widget.editTabIndex) {\n\t\tthis.domNode.setAttribute(\"tabindex\",this.widget.editTabIndex);\n\t}\n\t// Add an input event handler\n\t$tw.utils.addEventListeners(this.domNode,[\n\t\t{name: \"focus\", handlerObject: this, handlerMethod: \"handleFocusEvent\"},\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\n\t]);\n\t// Insert the element into the DOM\n\tthis.parentNode.insertBefore(this.domNode,this.nextSibling);\n\tthis.widget.domNodes.push(this.domNode);\n}\n\n/*\nSet the text of the engine if it doesn't currently have focus\n*/\nSimpleEngine.prototype.setText = function(text,type) {\n\tif(!this.domNode.isTiddlyWikiFakeDom) {\n\t\tif(this.domNode.ownerDocument.activeElement !== this.domNode || text === \"\") {\n\t\t\tthis.domNode.value = text;\n\t\t}\n\t\t// Fix the height if needed\n\t\tthis.fixHeight();\n\t}\n};\n\n/*\nGet the text of the engine\n*/\nSimpleEngine.prototype.getText = function() {\n\treturn this.domNode.value;\n};\n\n/*\nFix the height of textarea to fit content\n*/\nSimpleEngine.prototype.fixHeight = function() {\n\tif(this.widget.editTag === \"textarea\") {\n\t\tif(this.widget.editAutoHeight) {\n\t\t\tif(this.domNode && !this.domNode.isTiddlyWikiFakeDom) {\n\t\t\t\t$tw.utils.resizeTextAreaToFit(this.domNode,this.widget.editMinHeight);\n\t\t\t}\n\t\t} else {\n\t\t\tvar fixedHeight = parseInt(this.widget.wiki.getTiddlerText(HEIGHT_VALUE_TITLE,\"400px\"),10);\n\t\t\tfixedHeight = Math.max(fixedHeight,20);\n\t\t\tthis.domNode.style.height = fixedHeight + \"px\";\n\t\t}\n\t}\n};\n\n/*\nFocus the engine node\n*/\nSimpleEngine.prototype.focus  = function() {\n\tif(this.domNode.focus && this.domNode.select) {\n\t\tthis.domNode.focus();\n\t\tthis.domNode.select();\n\t}\n};\n\n/*\nHandle a dom \"input\" event which occurs when the text has changed\n*/\nSimpleEngine.prototype.handleInputEvent = function(event) {\n\tthis.widget.saveChanges(this.getText());\n\tthis.fixHeight();\n\treturn true;\n};\n\n/*\nHandle a dom \"focus\" event\n*/\nSimpleEngine.prototype.handleFocusEvent = function(event) {\n\tif(this.widget.editFocusPopup) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNode,\n\t\t\ttitle: this.widget.editFocusPopup,\n\t\t\twiki: this.widget.wiki,\n\t\t\tforce: true\n\t\t});\n\t}\n\treturn true;\n};\n\n/*\nCreate a blank structure representing a text operation\n*/\nSimpleEngine.prototype.createTextOperation = function() {\n\treturn null;\n};\n\n/*\nExecute a text operation\n*/\nSimpleEngine.prototype.executeTextOperation = function(operation) {\n};\n\nexports.SimpleEngine = SimpleEngine;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/factory.js": {
            "title": "$:/core/modules/editor/factory.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/factory.js\ntype: application/javascript\nmodule-type: library\n\nFactory for constructing text editor widgets with specified engines for the toolbar and non-toolbar cases\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_MIN_TEXT_AREA_HEIGHT = \"100px\"; // Minimum height of textareas in pixels\n\n// Configuration tiddlers\nvar HEIGHT_MODE_TITLE = \"$:/config/TextEditor/EditorHeight/Mode\";\nvar ENABLE_TOOLBAR_TITLE = \"$:/config/TextEditor/EnableToolbar\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nfunction editTextWidgetFactory(toolbarEngine,nonToolbarEngine) {\n\n\tvar EditTextWidget = function(parseTreeNode,options) {\n\t\t// Initialise the editor operations if they've not been done already\n\t\tif(!this.editorOperations) {\n\t\t\tEditTextWidget.prototype.editorOperations = {};\n\t\t\t$tw.modules.applyMethods(\"texteditoroperation\",this.editorOperations);\n\t\t}\n\t\tthis.initialise(parseTreeNode,options);\n\t};\n\n\t/*\n\tInherit from the base widget class\n\t*/\n\tEditTextWidget.prototype = new Widget();\n\n\t/*\n\tRender this widget into the DOM\n\t*/\n\tEditTextWidget.prototype.render = function(parent,nextSibling) {\n\t\t// Save the parent dom node\n\t\tthis.parentDomNode = parent;\n\t\t// Compute our attributes\n\t\tthis.computeAttributes();\n\t\t// Execute our logic\n\t\tthis.execute();\n\t\t// Create the wrapper for the toolbar and render its content\n\t\tif(this.editShowToolbar) {\n\t\t\tthis.toolbarNode = this.document.createElement(\"div\");\n\t\t\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\t\t\tparent.insertBefore(this.toolbarNode,nextSibling);\n\t\t\tthis.renderChildren(this.toolbarNode,null);\n\t\t\tthis.domNodes.push(this.toolbarNode);\n\t\t}\n\t\t// Create our element\n\t\tvar editInfo = this.getEditInfo(),\n\t\t\tEngine = this.editShowToolbar ? toolbarEngine : nonToolbarEngine;\n\t\tthis.engine = new Engine({\n\t\t\t\twidget: this,\n\t\t\t\tvalue: editInfo.value,\n\t\t\t\ttype: editInfo.type,\n\t\t\t\tparentNode: parent,\n\t\t\t\tnextSibling: nextSibling\n\t\t\t});\n\t\t// Call the postRender hook\n\t\tif(this.postRender) {\n\t\t\tthis.postRender();\n\t\t}\n\t\t// Fix height\n\t\tthis.engine.fixHeight();\n\t\t// Focus if required\n\t\tif(this.editFocus === \"true\" || this.editFocus === \"yes\") {\n\t\t\tthis.engine.focus();\n\t\t}\n\t\t// Add widget message listeners\n\t\tthis.addEventListeners([\n\t\t\t{type: \"tm-edit-text-operation\", handler: \"handleEditTextOperationMessage\"}\n\t\t]);\n\t};\n\n\t/*\n\tGet the tiddler being edited and current value\n\t*/\n\tEditTextWidget.prototype.getEditInfo = function() {\n\t\t// Get the edit value\n\t\tvar self = this,\n\t\t\tvalue,\n\t\t\ttype = \"text/plain\",\n\t\t\tupdate;\n\t\tif(this.editIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.editTitle,this.editIndex,this.editDefault);\n\t\t\tupdate = function(value) {\n\t\t\t\tvar data = self.wiki.getTiddlerData(self.editTitle,{});\n\t\t\t\tif(data[self.editIndex] !== value) {\n\t\t\t\t\tdata[self.editIndex] = value;\n\t\t\t\t\tself.wiki.setTiddlerData(self.editTitle,data);\n\t\t\t\t}\n\t\t\t};\n\t\t} else {\n\t\t\t// Get the current tiddler and the field name\n\t\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\t\tif(tiddler) {\n\t\t\t\t// If we've got a tiddler, the value to display is the field string value\n\t\t\t\tvalue = tiddler.getFieldString(this.editField);\n\t\t\t\tif(this.editField === \"text\") {\n\t\t\t\t\ttype = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise, we need to construct a default value for the editor\n\t\t\t\tswitch(this.editField) {\n\t\t\t\t\tcase \"text\":\n\t\t\t\t\t\tvalue = \"Type the text for the tiddler '\" + this.editTitle + \"'\";\n\t\t\t\t\t\ttype = \"text/vnd.tiddlywiki\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"title\":\n\t\t\t\t\t\tvalue = this.editTitle;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tvalue = \"\";\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tif(this.editDefault !== undefined) {\n\t\t\t\t\tvalue = this.editDefault;\n\t\t\t\t}\n\t\t\t}\n\t\t\tupdate = function(value) {\n\t\t\t\tvar tiddler = self.wiki.getTiddler(self.editTitle),\n\t\t\t\t\tupdateFields = {\n\t\t\t\t\t\ttitle: self.editTitle\n\t\t\t\t\t};\n\t\t\t\tupdateFields[self.editField] = value;\n\t\t\t\tself.wiki.addTiddler(new $tw.Tiddler(self.wiki.getCreationFields(),tiddler,updateFields,self.wiki.getModificationFields()));\n\t\t\t};\n\t\t}\n\t\tif(this.editType) {\n\t\t\ttype = this.editType;\n\t\t}\n\t\treturn {value: value || \"\", type: type, update: update};\n\t};\n\n\t/*\n\tHandle an edit text operation message from the toolbar\n\t*/\n\tEditTextWidget.prototype.handleEditTextOperationMessage = function(event) {\n\t\t// Prepare information about the operation\n\t\tvar operation = this.engine.createTextOperation();\n\t\t// Invoke the handler for the selected operation\n\t\tvar handler = this.editorOperations[event.param];\n\t\tif(handler) {\n\t\t\thandler.call(this,event,operation);\n\t\t}\n\t\t// Execute the operation via the engine\n\t\tvar newText = this.engine.executeTextOperation(operation);\n\t\t// Fix the tiddler height and save changes\n\t\tthis.engine.fixHeight();\n\t\tthis.saveChanges(newText);\n\t};\n\n\t/*\n\tCompute the internal state of the widget\n\t*/\n\tEditTextWidget.prototype.execute = function() {\n\t\t// Get our parameters\n\t\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t\tthis.editField = this.getAttribute(\"field\",\"text\");\n\t\tthis.editIndex = this.getAttribute(\"index\");\n\t\tthis.editDefault = this.getAttribute(\"default\");\n\t\tthis.editClass = this.getAttribute(\"class\");\n\t\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\t\tthis.editSize = this.getAttribute(\"size\");\n\t\tthis.editRows = this.getAttribute(\"rows\");\n\t\tthis.editAutoHeight = this.wiki.getTiddlerText(HEIGHT_MODE_TITLE,\"auto\");\n\t\tthis.editAutoHeight = this.getAttribute(\"autoHeight\",this.editAutoHeight === \"auto\" ? \"yes\" : \"no\") === \"yes\";\n\t\tthis.editMinHeight = this.getAttribute(\"minHeight\",DEFAULT_MIN_TEXT_AREA_HEIGHT);\n\t\tthis.editFocusPopup = this.getAttribute(\"focusPopup\");\n\t\tthis.editFocus = this.getAttribute(\"focus\");\n\t\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\t\t// Get the default editor element tag and type\n\t\tvar tag,type;\n\t\tif(this.editField === \"text\") {\n\t\t\ttag = \"textarea\";\n\t\t} else {\n\t\t\ttag = \"input\";\n\t\t\tvar fieldModule = $tw.Tiddler.fieldModules[this.editField];\n\t\t\tif(fieldModule && fieldModule.editTag) {\n\t\t\t\ttag = fieldModule.editTag;\n\t\t\t}\n\t\t\tif(fieldModule && fieldModule.editType) {\n\t\t\t\ttype = fieldModule.editType;\n\t\t\t}\n\t\t\ttype = type || \"text\";\n\t\t}\n\t\t// Get the rest of our parameters\n\t\tthis.editTag = this.getAttribute(\"tag\",tag) || \"input\";\n\t\tthis.editType = this.getAttribute(\"type\",type);\n\t\t// Make the child widgets\n\t\tthis.makeChildWidgets();\n\t\t// Determine whether to show the toolbar\n\t\tthis.editShowToolbar = this.wiki.getTiddlerText(ENABLE_TOOLBAR_TITLE,\"yes\");\n\t\tthis.editShowToolbar = (this.editShowToolbar === \"yes\") && !!(this.children && this.children.length > 0) && (!this.document.isTiddlyWikiFakeDom);\n\t};\n\n\t/*\n\tSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n\t*/\n\tEditTextWidget.prototype.refresh = function(changedTiddlers) {\n\t\tvar changedAttributes = this.computeAttributes();\n\t\t// Completely rerender if any of our attributes have changed\n\t\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.placeholder || changedAttributes.size || changedAttributes.autoHeight || changedAttributes.minHeight || changedAttributes.focusPopup ||  changedAttributes.rows || changedAttributes.tabindex || changedTiddlers[HEIGHT_MODE_TITLE] || changedTiddlers[ENABLE_TOOLBAR_TITLE]) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t\t} else if(changedTiddlers[this.editTitle]) {\n\t\t\tvar editInfo = this.getEditInfo();\n\t\t\tthis.updateEditor(editInfo.value,editInfo.type);\n\t\t}\n\t\tthis.engine.fixHeight();\n\t\tif(this.editShowToolbar) {\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\t/*\n\tUpdate the editor with new text. This method is separate from updateEditorDomNode()\n\tso that subclasses can override updateEditor() and still use updateEditorDomNode()\n\t*/\n\tEditTextWidget.prototype.updateEditor = function(text,type) {\n\t\tthis.updateEditorDomNode(text,type);\n\t};\n\n\t/*\n\tUpdate the editor dom node with new text\n\t*/\n\tEditTextWidget.prototype.updateEditorDomNode = function(text,type) {\n\t\tthis.engine.setText(text,type);\n\t};\n\n\t/*\n\tSave changes back to the tiddler store\n\t*/\n\tEditTextWidget.prototype.saveChanges = function(text) {\n\t\tvar editInfo = this.getEditInfo();\n\t\tif(text !== editInfo.value) {\n\t\t\teditInfo.update(text);\n\t\t}\n\t};\n\n\t/*\n\tHandle a dom \"keydown\" event, which we'll bubble up to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.handleKeydownEvent = function(event) {\n\t\t// Check for a keyboard shortcut\n\t\tif(this.toolbarNode) {\n\t\t\tvar shortcutElements = this.toolbarNode.querySelectorAll(\"[data-tw-keyboard-shortcut]\");\n\t\t\tfor(var index=0; index<shortcutElements.length; index++) {\n\t\t\t\tvar el = shortcutElements[index],\n\t\t\t\t\tshortcutData = el.getAttribute(\"data-tw-keyboard-shortcut\"),\n\t\t\t\t\tkeyInfoArray = $tw.keyboardManager.parseKeyDescriptors(shortcutData,{\n\t\t\t\t\t\twiki: this.wiki\n\t\t\t\t\t});\n\t\t\t\tif($tw.keyboardManager.checkKeyDescriptors(event,keyInfoArray)) {\n\t\t\t\t\tvar clickEvent = this.document.createEvent(\"Events\");\n\t\t\t\t    clickEvent.initEvent(\"click\",true,false);\n\t\t\t\t    el.dispatchEvent(clickEvent);\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t// Propogate the event to the container\n\t\tif(this.propogateKeydownEvent(event)) {\n\t\t\t// Ignore the keydown if it was already handled\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\t// Otherwise, process the keydown normally\n\t\treturn false;\n\t};\n\n\t/*\n\tPropogate keydown events to our container for the keyboard widgets benefit\n\t*/\n\tEditTextWidget.prototype.propogateKeydownEvent = function(event) {\n\t\tvar newEvent = this.document.createEventObject ? this.document.createEventObject() : this.document.createEvent(\"Events\");\n\t\tif(newEvent.initEvent) {\n\t\t\tnewEvent.initEvent(\"keydown\", true, true);\n\t\t}\n\t\tnewEvent.keyCode = event.keyCode;\n\t\tnewEvent.which = event.which;\n\t\tnewEvent.metaKey = event.metaKey;\n\t\tnewEvent.ctrlKey = event.ctrlKey;\n\t\tnewEvent.altKey = event.altKey;\n\t\tnewEvent.shiftKey = event.shiftKey;\n\t\treturn !this.parentDomNode.dispatchEvent(newEvent);\n\t};\n\n\treturn EditTextWidget;\n\n}\n\nexports.editTextWidgetFactory = editTextWidgetFactory;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/editor/operations/bitmap/clear.js": {
            "title": "$:/core/modules/editor/operations/bitmap/clear.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/clear.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to clear the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"clear\"] = function(event) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.globalAlpha = 1;\n\tctx.fillStyle = event.paramObject.colour || \"white\";\n\tctx.fillRect(0,0,this.canvasDomNode.width,this.canvasDomNode.height);\n\t// Save changes\n\tthis.strokeEnd();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/bitmap/resize.js": {
            "title": "$:/core/modules/editor/operations/bitmap/resize.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/resize.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to resize the image\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"resize\"] = function(event) {\n\t// Get the new width\n\tvar newWidth = parseInt(event.paramObject.width || this.canvasDomNode.width,10),\n\t\tnewHeight = parseInt(event.paramObject.height || this.canvasDomNode.height,10);\n\t// Update if necessary\n\tif(newWidth > 0 && newHeight > 0 && !(newWidth === this.currCanvas.width && newHeight === this.currCanvas.height)) {\n\t\tthis.changeCanvasSize(newWidth,newHeight);\n\t}\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/bitmap/rotate-left.js": {
            "title": "$:/core/modules/editor/operations/bitmap/rotate-left.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/bitmap/rotate-left.js\ntype: application/javascript\nmodule-type: bitmapeditoroperation\n\nBitmap editor operation to rotate the image left by 90 degrees\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"rotate-left\"] = function(event) {\n\t// Rotate the canvas left by 90 degrees\n\tthis.rotateCanvasLeft();\n\t// Update the input controls\n\tthis.refreshToolbar();\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "bitmapeditoroperation"
        },
        "$:/core/modules/editor/operations/text/excise.js": {
            "title": "$:/core/modules/editor/operations/text/excise.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/excise.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to excise the selection to a new tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"excise\"] = function(event,operation) {\n\tvar editTiddler = this.wiki.getTiddler(this.editTitle),\n\t\teditTiddlerTitle = this.editTitle;\n\tif(editTiddler && editTiddler.fields[\"draft.of\"]) {\n\t\teditTiddlerTitle = editTiddler.fields[\"draft.of\"];\n\t}\n\tvar excisionTitle = event.paramObject.title || this.wiki.generateNewTitle(\"New Excision\");\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: excisionTitle,\n\t\t\ttext: operation.selection,\n\t\t\ttags: event.paramObject.tagnew === \"yes\" ?  [editTiddlerTitle] : []\n\t\t}\n\t));\n\toperation.replacement = excisionTitle;\n\tswitch(event.paramObject.type || \"transclude\") {\n\t\tcase \"transclude\":\n\t\t\toperation.replacement = \"{{\" + operation.replacement+ \"}}\";\n\t\t\tbreak;\n\t\tcase \"link\":\n\t\t\toperation.replacement = \"[[\" + operation.replacement+ \"]]\";\n\t\t\tbreak;\n\t\tcase \"macro\":\n\t\t\toperation.replacement = \"<<\" + (event.paramObject.macro || \"translink\") + \" \\\"\\\"\\\"\" + operation.replacement + \"\\\"\\\"\\\">>\";\n\t\t\tbreak;\n\t}\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/make-link.js": {
            "title": "$:/core/modules/editor/operations/text/make-link.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/make-link.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to make a link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"make-link\"] = function(event,operation) {\n\tif(operation.selection) {\n\t\toperation.replacement = \"[[\" + operation.selection + \"|\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t} else {\n\t\toperation.replacement = \"[[\" + event.paramObject.text + \"]]\";\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t}\n\toperation.newSelStart = operation.selStart + operation.replacement.length;\n\toperation.newSelEnd = operation.newSelStart;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/prefix-lines.js": {
            "title": "$:/core/modules/editor/operations/text/prefix-lines.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/prefix-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to add a prefix to the selected lines\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"prefix-lines\"] = function(event,operation) {\n\tvar targetCount = parseInt(event.paramObject.count + \"\",10);\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Compose the required prefix\n\tvar prefix = $tw.utils.repeat(event.paramObject.character,targetCount);\n\t// Process each line\n\tvar lines = operation.text.substring(operation.cutStart,operation.cutEnd).split(/\\r?\\n/mg);\n\t$tw.utils.each(lines,function(line,index) {\n\t\t// Remove and count any existing prefix characters\n\t\tvar count = 0;\n\t\twhile(line.charAt(0) === event.paramObject.character) {\n\t\t\tline = line.substring(1);\n\t\t\tcount++;\n\t\t}\n\t\t// Remove any whitespace\n\t\twhile(line.charAt(0) === \" \") {\n\t\t\tline = line.substring(1);\n\t\t}\n\t\t// We're done if we removed the exact required prefix, otherwise add it\n\t\tif(count !== targetCount) {\n\t\t\t// Apply the prefix\n\t\t\tline =  prefix + \" \" + line;\n\t\t}\n\t\t// Save the modified line\n\t\tlines[index] = line;\n\t});\n\t// Stitch the replacement text together and set the selection\n\toperation.replacement = lines.join(\"\\n\");\n\tif(lines.length === 1) {\n\t\toperation.newSelStart = operation.cutStart + operation.replacement.length;\n\t\toperation.newSelEnd = operation.newSelStart;\n\t} else {\n\t\toperation.newSelStart = operation.cutStart;\n\t\toperation.newSelEnd = operation.newSelStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/replace-all.js": {
            "title": "$:/core/modules/editor/operations/text/replace-all.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-all.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the entire text\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-all\"] = function(event,operation) {\n\toperation.cutStart = 0;\n\toperation.cutEnd = operation.text.length;\n\toperation.replacement = event.paramObject.text;\n\toperation.newSelStart = 0;\n\toperation.newSelEnd = operation.replacement.length;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/replace-selection.js": {
            "title": "$:/core/modules/editor/operations/text/replace-selection.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/replace-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to replace the selection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"replace-selection\"] = function(event,operation) {\n\toperation.replacement = event.paramObject.text;\n\toperation.cutStart = operation.selStart;\n\toperation.cutEnd = operation.selEnd;\n\toperation.newSelStart = operation.selStart;\n\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/save-selection.js": {
            "title": "$:/core/modules/editor/operations/text/save-selection.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/save-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to save the current selection in a specified tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"save-selection\"] = function(event,operation) {\n\tvar tiddler = event.paramObject.tiddler,\n\t\tfield = event.paramObject.field || \"text\";\n\tif(tiddler && field) {\n\t\tthis.wiki.setText(tiddler,field,null,operation.text.substring(operation.selStart,operation.selEnd));\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/wrap-lines.js": {
            "title": "$:/core/modules/editor/operations/text/wrap-lines.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-lines.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selected lines with a prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-lines\"] = function(event,operation) {\n\t// Cut just past the preceding line break, or the start of the text\n\toperation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);\n\t// Cut to just past the following line break, or to the end of the text\n\toperation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);\n\t// Add the prefix and suffix\n\toperation.replacement = event.paramObject.prefix + \"\\n\" +\n\t\t\t\toperation.text.substring(operation.cutStart,operation.cutEnd) + \"\\n\" +\n\t\t\t\tevent.paramObject.suffix + \"\\n\";\n\toperation.newSelStart = operation.cutStart + event.paramObject.prefix.length + 1;\n\toperation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/editor/operations/text/wrap-selection.js": {
            "title": "$:/core/modules/editor/operations/text/wrap-selection.js",
            "text": "/*\\\ntitle: $:/core/modules/editor/operations/text/wrap-selection.js\ntype: application/javascript\nmodule-type: texteditoroperation\n\nText editor operation to wrap the selection with the specified prefix and suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports[\"wrap-selection\"] = function(event,operation) {\n\tif(operation.selStart === operation.selEnd) {\n\t\t// No selection; check if we're within the prefix/suffix\n\t\tif(operation.text.substring(operation.selStart - event.paramObject.prefix.length,operation.selStart + event.paramObject.suffix.length) === event.paramObject.prefix + event.paramObject.suffix) {\n\t\t\t// Remove the prefix and suffix\n\t\t\toperation.cutStart = operation.selStart - event.paramObject.prefix.length;\n\t\t\toperation.cutEnd = operation.selEnd + event.paramObject.suffix.length;\n\t\t\toperation.replacement = \"\";\n\t\t\toperation.newSelStart = operation.cutStart;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t} else {\n\t\t\t// Wrap the cursor instead\n\t\t\toperation.cutStart = operation.selStart;\n\t\t\toperation.cutEnd = operation.selEnd;\n\t\t\toperation.replacement = event.paramObject.prefix + event.paramObject.suffix;\n\t\t\toperation.newSelStart = operation.selStart + event.paramObject.prefix.length;\n\t\t\toperation.newSelEnd = operation.newSelStart;\n\t\t}\n\t} else if(operation.text.substring(operation.selStart,operation.selStart + event.paramObject.prefix.length) === event.paramObject.prefix && operation.text.substring(operation.selEnd - event.paramObject.suffix.length,operation.selEnd) === event.paramObject.suffix) {\n\t\t// Prefix and suffix are already present, so remove them\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = operation.selection.substring(event.paramObject.prefix.length,operation.selection.length - event.paramObject.suffix.length);\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t} else {\n\t\t// Add the prefix and suffix\n\t\toperation.cutStart = operation.selStart;\n\t\toperation.cutEnd = operation.selEnd;\n\t\toperation.replacement = event.paramObject.prefix + operation.selection + event.paramObject.suffix;\n\t\toperation.newSelStart = operation.selStart;\n\t\toperation.newSelEnd = operation.selStart + operation.replacement.length;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "texteditoroperation"
        },
        "$:/core/modules/filters/addprefix.js": {
            "title": "$:/core/modules/filters/addprefix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/addprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a prefix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand + title);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/addsuffix.js": {
            "title": "$:/core/modules/filters/addsuffix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/addsuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for adding a suffix to each title in the list. This is\nespecially useful in contexts where only a filter expression is allowed\nand macro substitution isn't available.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.addsuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title + operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/after.js": {
            "title": "$:/core/modules/filters/after.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/after.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is after the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.after = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index === -1 || index > (results.length - 2)) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index + 1]];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/all/current.js": {
            "title": "$:/core/modules/filters/all/current.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/current.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar currTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(currTiddlerTitle) {\n\t\treturn [currTiddlerTitle];\n\t} else {\n\t\treturn [];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/missing.js": {
            "title": "$:/core/modules/filters/all/missing.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/missing.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\treturn options.wiki.getMissingTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/orphans.js": {
            "title": "$:/core/modules/filters/all/orphans.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/orphans.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[orphans]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphans = function(source,prefix,options) {\n\treturn options.wiki.getOrphanTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/shadows.js": {
            "title": "$:/core/modules/filters/all/shadows.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/shadows.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[shadows]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadows = function(source,prefix,options) {\n\treturn options.wiki.allShadowTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/tags.js": {
            "title": "$:/core/modules/filters/all/tags.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/tags.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tags]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,prefix,options) {\n\treturn Object.keys(options.wiki.getTagMap());\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all/tiddlers.js": {
            "title": "$:/core/modules/filters/all/tiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all/tiddlers.js\ntype: application/javascript\nmodule-type: allfilteroperator\n\nFilter function for [all[tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddlers = function(source,prefix,options) {\n\treturn options.wiki.allTitles();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "allfilteroperator"
        },
        "$:/core/modules/filters/all.js": {
            "title": "$:/core/modules/filters/all.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/all.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for selecting tiddlers\n\n[all[shadows+tiddlers]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar allFilterOperators;\n\nfunction getAllFilterOperators() {\n\tif(!allFilterOperators) {\n\t\tallFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"allfilteroperator\",allFilterOperators);\n\t}\n\treturn allFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.all = function(source,operator,options) {\n\t// Get our suboperators\n\tvar allFilterOperators = getAllFilterOperators();\n\t// Cycle through the suboperators accumulating their results\n\tvar results = [],\n\t\tsubops = operator.operand.split(\"+\");\n\t// Check for common optimisations\n\tif(subops.length === 1 && subops[0] === \"\") {\n\t\treturn source;\n\t} else if(subops.length === 1 && subops[0] === \"tiddlers\") {\n\t\treturn options.wiki.each;\n\t} else if(subops.length === 1 && subops[0] === \"shadows\") {\n\t\treturn options.wiki.eachShadow;\n\t} else if(subops.length === 2 && subops[0] === \"tiddlers\" && subops[1] === \"shadows\") {\n\t\treturn options.wiki.eachTiddlerPlusShadows;\n\t} else if(subops.length === 2 && subops[0] === \"shadows\" && subops[1] === \"tiddlers\") {\n\t\treturn options.wiki.eachShadowPlusTiddlers;\n\t}\n\t// Do it the hard way\n\tfor(var t=0; t<subops.length; t++) {\n\t\tvar subop = allFilterOperators[subops[t]];\n\t\tif(subop) {\n\t\t\t$tw.utils.pushTop(results,subop(source,operator.prefix,options));\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/backlinks.js": {
            "title": "$:/core/modules/filters/backlinks.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/backlinks.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the backlinks from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.backlinks = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerBacklinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/before.js": {
            "title": "$:/core/modules/filters/before.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/before.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler from the current list that is before the tiddler named in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.before = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar index = results.indexOf(operator.operand);\n\tif(index <= 0) {\n\t\treturn [];\n\t} else {\n\t\treturn [results[index - 1]];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/commands.js": {
            "title": "$:/core/modules/filters/commands.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/commands.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the commands available in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.commands = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.commands,function(commandInfo,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/compare.js": {
            "title": "$:/core/modules/filters/compare.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/compare.js\ntype: application/javascript\nmodule-type: filteroperator\n\nGeneral purpose comparison operator\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.compare = function(source,operator,options) {\n\tvar suffixes = operator.suffixes || [],\n\t\ttype = (suffixes[0] || [])[0],\n\t\tmode = (suffixes[1] || [])[0],\n\t\ttypeFn = types[type] || types.number,\n\t\tmodeFn = modes[mode] || modes.eq,\n\t\tinvert = operator.prefix === \"!\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tif(modeFn(typeFn(title,operator.operand)) !== invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\nvar types = {\n\t\"number\": function(a,b) {\n\t\treturn compare($tw.utils.parseNumber(a),$tw.utils.parseNumber(b));\n\t},\n\t\"integer\": function(a,b) {\n\t\treturn compare($tw.utils.parseInt(a),$tw.utils.parseInt(b));\n\t},\n\t\"string\": function(a,b) {\n\t\treturn compare(\"\" + a,\"\" +b);\n\t},\n\t\"date\": function(a,b) {\n\t\tvar dateA = $tw.utils.parseDate(a),\n\t\t\tdateB = $tw.utils.parseDate(b);\n\t\tif(!isFinite(dateA)) {\n\t\t\tdateA = new Date(0);\n\t\t}\n\t\tif(!isFinite(dateB)) {\n\t\t\tdateB = new Date(0);\n\t\t}\n\t\treturn compare(dateA,dateB);\n\t},\n\t\"version\": function(a,b) {\n\t\treturn $tw.utils.compareVersions(a,b);\n\t}\n};\n\nfunction compare(a,b) {\n\tif(a > b) {\n\t\treturn +1;\n\t} else if(a < b) {\n\t\treturn -1;\n\t} else {\n\t\treturn 0;\n\t}\n};\n\nvar modes = {\n\t\"eq\": function(value) {return value === 0;},\n\t\"ne\": function(value) {return value !== 0;},\n\t\"gteq\": function(value) {return value >= 0;},\n\t\"gt\": function(value) {return value > 0;},\n\t\"lteq\": function(value) {return value <= 0;},\n\t\"lt\": function(value) {return value < 0;}\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/contains.js": {
            "title": "$:/core/modules/filters/contains.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/contains.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for finding values in array fields\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.contains = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"list\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\tvar list = tiddler.getFieldList(fieldname);\n\t\t\t\tif(list.indexOf(operator.operand) !== -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/count.js": {
            "title": "$:/core/modules/filters/count.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/count.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the number of entries in the current list.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.count = function(source,operator,options) {\n\tvar count = 0;\n\tsource(function(tiddler,title) {\n\t\tcount++;\n\t});\n\treturn [count + \"\"];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/days.js": {
            "title": "$:/core/modules/filters/days.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/days.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a specified date field within a specified date interval.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.days = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\tdayInterval = (parseInt(operator.operand,10)||0),\n\t\tdayIntervalSign = $tw.utils.sign(dayInterval),\n\t\ttargetTimeStamp = (new Date()).setHours(0,0,0,0) + 1000*60*60*24*dayInterval,\n\t\tisWithinDays = function(dateField) {\n\t\t\tvar sign = $tw.utils.sign(targetTimeStamp - (new Date(dateField)).setHours(0,0,0,0));\n\t\t\treturn sign === 0 || sign === dayIntervalSign;\n\t\t};\n\n\tif(operator.prefix === \"!\") {\n\t\ttargetTimeStamp = targetTimeStamp - 1000*60*60*24*dayIntervalSign;\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(!isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\t\tif(isWithinDays($tw.utils.parseDate(tiddler.fields[fieldName]))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/each.js": {
            "title": "$:/core/modules/filters/each.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/each.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique value of the specified field.\nWith suffix \"list\", selects all tiddlers that are values in a specified list field.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.each = function(source,operator,options) {\n\tvar results =[] ,\n\tvalue,values = {},\n\tfield = operator.operand || \"title\";\n\tif(operator.suffix === \"value\" && field === \"title\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(values,title)) {\n\t\t\t\tvalues[title] = true;\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else if(operator.suffix !== \"list-item\") {\n\t\tif(field === \"title\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && !$tw.utils.hop(values,title)) {\n\t\t\t\t\tvalues[title] = true;\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvalue = tiddler.getFieldString(field);\n\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\t$tw.utils.each(\n\t\t\t\t\toptions.wiki.getTiddlerList(title,field),\n\t\t\t\t\tfunction(value) {\n\t\t\t\t\t\tif(!$tw.utils.hop(values,value)) {\n\t\t\t\t\t\t\tvalues[value] = true;\n\t\t\t\t\t\t\tresults.push(value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/eachday.js": {
            "title": "$:/core/modules/filters/eachday.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/eachday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects one tiddler for each unique day covered by the specified date field\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.eachday = function(source,operator,options) {\n\tvar results = [],\n\t\tvalues = [],\n\t\tfieldName = operator.operand || \"modified\";\n\t// Function to convert a date/time to a date integer\n\tvar toDate = function(value) {\n\t\tvalue = (new Date(value)).setHours(0,0,0,0);\n\t\treturn value+0;\n\t};\n\tsource(function(tiddler,title) {\n\t\tif(tiddler && tiddler.fields[fieldName]) {\n\t\t\tvar value = toDate($tw.utils.parseDate(tiddler.fields[fieldName]));\n\t\t\tif(values.indexOf(value) === -1) {\n\t\t\t\tvalues.push(value);\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/editiondescription.js": {
            "title": "$:/core/modules/filters/editiondescription.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/editiondescription.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the descriptions of the specified edition names\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editiondescription = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(editionInfo,title)) {\n\t\t\t\tresults.push(editionInfo[title].description || \"\");\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/editions.js": {
            "title": "$:/core/modules/filters/editions.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/editions.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the available editions in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.editions = function(source,operator,options) {\n\tvar results = [],\n\t\teditionInfo = $tw.utils.getEditionInfo();\n\tif(editionInfo) {\n\t\t$tw.utils.each(editionInfo,function(info,name) {\n\t\t\tresults.push(name);\n\t\t});\n\t}\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/else.js": {
            "title": "$:/core/modules/filters/else.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/else.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing an empty input list with a constant, passing a non-empty input list straight through\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.else = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tif(results.length === 0) {\n\t\treturn [operator.operand];\n\t} else {\n\t\treturn results;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/decodeuricomponent.js": {
            "title": "$:/core/modules/filters/decodeuricomponent.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/decodeuricomponent.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for applying decodeURIComponent() to each item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter functions\n*/\n\nexports.decodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURIComponent(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuricomponent = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURIComponent(title));\n\t});\n\treturn results;\n};\n\nexports.decodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar value = title;\n\t\ttry {\n\t\t\tvalue = decodeURI(title);\n\t\t} catch(e) {\n\t\t}\n\t\tresults.push(value);\n\t});\n\treturn results;\n};\n\nexports.encodeuri = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(encodeURI(title));\n\t});\n\treturn results;\n};\n\nexports.decodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlDecode(title));\n\t});\n\treturn results;\n};\n\nexports.encodehtml = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.htmlEncode(title));\n\t});\n\treturn results;\n};\n\nexports.stringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.stringify(title));\n\t});\n\treturn results;\n};\n\nexports.jsonstringify = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.jsonStringify(title));\n\t});\n\treturn results;\n};\n\nexports.escaperegexp = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push($tw.utils.escapeRegExp(title));\n\t});\n\treturn results;\n};\n\nexports.escapecss = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t// escape any character with a special meaning in CSS using CSS.escape()\n\t\tresults.push(CSS.escape(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/enlist.js": {
            "title": "$:/core/modules/filters/enlist.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/enlist.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand parsed as a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.enlist = function(source,operator,options) {\n\tvar allowDuplicates = false;\n\tswitch(operator.suffix) {\n\t\tcase \"raw\":\n\t\t\tallowDuplicates = true;\n\t\t\tbreak;\n\t\tcase \"dedupe\":\n\t\t\tallowDuplicates = false;\n\t\t\tbreak;\n\t}\n\tvar list = $tw.utils.parseStringArray(operator.operand,allowDuplicates);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/field.js": {
            "title": "$:/core/modules/filters/field.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/field.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.field = function(source,operator,options) {\n\tvar results = [],indexedResults,\n\t\tfieldname = (operator.suffix || operator.operator || \"title\").toLowerCase();\n\tif(operator.prefix === \"!\") {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text !== operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.regexp) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && !!operator.regexp.exec(text)) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tif(source.byField && operator.operand) {\n\t\t\t\tindexedResults = source.byField(fieldname,operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults\n\t\t\t\t}\n\t\t\t}\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler) {\n\t\t\t\t\tvar text = tiddler.getFieldString(fieldname);\n\t\t\t\t\tif(text !== null && text === operator.operand) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/fields.js": {
            "title": "$:/core/modules/filters/fields.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/fields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.fields = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName,\n\t\tsuffixes = (operator.suffixes || [])[0] || [],\n\t\toperand = $tw.utils.parseStringArray(operator.operand);\n\t\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(suffixes.indexOf(\"include\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? $tw.utils.pushTop(results,fieldName) : \"\";\n\t\t\t\t}\n\t\t\t} else if (suffixes.indexOf(\"exclude\") !== -1) {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t(operand.indexOf(fieldName) !== -1) ? \"\" : $tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else if\n\t\t\telse {\n\t\t\t\tfor(fieldName in tiddler.fields) {\n\t\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t\t}\n\t\t\t} // else\n\t\t} // if (tiddler)\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/get.js": {
            "title": "$:/core/modules/filters/get.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/get.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing tiddler titles by the value of the field specified in the operand.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.get = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tvar value = tiddler.getFieldString(operator.operand);\n\t\t\tif(value) {\n\t\t\t\tresults.push(value);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/getindex.js": {
            "title": "$:/core/modules/filters/getindex.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/getindex.js\ntype: application/javascript\nmodule-type: filteroperator\n\nreturns the value at a given index of datatiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getindex = function(source,operator,options) {\n\tvar data,title,results = [];\n\tif(operator.operand){\n\t\tsource(function(tiddler,title) {\n\t\t\ttitle = tiddler ? tiddler.fields.title : title;\n\t\t\tdata = options.wiki.extractTiddlerDataItem(tiddler,operator.operand);\n\t\t\tif(data) {\n\t\t\t\tresults.push(data);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/getvariable.js": {
            "title": "$:/core/modules/filters/getvariable.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/getvariable.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing input values by the value of the variable with the same name, or blank if the variable is missing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.getvariable = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.widget.getVariable(title) || \"\");\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/has.js": {
            "title": "$:/core/modules/filters/has.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/has.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a tiddler has the specified field or index\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.has = function(source,operator,options) {\n\tvar results = [],\n\t\tinvert = operator.prefix === \"!\";\n\n\tif(operator.suffix === \"field\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop(tiddler.fields,operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse if(operator.suffix === \"index\") {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || (tiddler && (!$tw.utils.hop($tw.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)))) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop($tw.wiki.getTiddlerDataCached(tiddler,Object.create(null)),operator.operand)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\telse {\n\t\tif(invert) {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(!tiddler || !$tw.utils.hop(tiddler.fields,operator.operand) || (tiddler.fields[operator.operand] === \"\")) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddler && $tw.utils.hop(tiddler.fields,operator.operand) && !(tiddler.fields[operator.operand] === \"\" || tiddler.fields[operator.operand].length === 0)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\t\t\t\t\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/haschanged.js": {
            "title": "$:/core/modules/filters/haschanged.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/haschanged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returns tiddlers from the list that have a non-zero changecount.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.haschanged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) === 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.getChangeCount(title) > 0) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/indexes.js": {
            "title": "$:/core/modules/filters/indexes.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/indexes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the indexes of a data tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.indexes = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar data = options.wiki.getTiddlerDataCached(title);\n\t\tif(data) {\n\t\t\t$tw.utils.pushTop(results,Object.keys(data));\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/insertbefore.js": {
            "title": "$:/core/modules/filters/insertbefore.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/insertbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nInsert an item before another item in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.insertbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\tvar target = options.widget && options.widget.getVariable(operator.suffix || \"currentTiddler\");\n\tif(target !== operator.operand) {\n\t\t// Remove the entry from the list if it is present\n\t\tvar pos = results.indexOf(operator.operand);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,1);\n\t\t}\n\t\t// Insert the entry before the target marker\n\t\tpos = results.indexOf(target);\n\t\tif(pos !== -1) {\n\t\t\tresults.splice(pos,0,operator.operand);\n\t\t} else {\n\t\t\tresults.push(operator.operand);\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/is/binary.js": {
            "title": "$:/core/modules/filters/is/binary.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/binary.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[binary]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.binary = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isBinaryTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/blank.js": {
            "title": "$:/core/modules/filters/is/blank.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/blank.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[blank]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.blank = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!title) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/current.js": {
            "title": "$:/core/modules/filters/is/current.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/current.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[current]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.current = function(source,prefix,options) {\n\tvar results = [],\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\");\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title !== currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title === currTiddlerTitle) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/image.js": {
            "title": "$:/core/modules/filters/is/image.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/image.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[image]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.image = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isImageTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/missing.js": {
            "title": "$:/core/modules/filters/is/missing.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/missing.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[missing]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.missing = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/orphan.js": {
            "title": "$:/core/modules/filters/is/orphan.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/orphan.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[orphan]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.orphan = function(source,prefix,options) {\n\tvar results = [],\n\t\torphanTitles = options.wiki.getOrphanTitles();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(orphanTitles.indexOf(title) !== -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/shadow.js": {
            "title": "$:/core/modules/filters/is/shadow.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/shadow.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[shadow]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadow = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isShadowTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/system.js": {
            "title": "$:/core/modules/filters/is/system.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/system.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[system]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.system = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.isSystemTiddler(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/tag.js": {
            "title": "$:/core/modules/filters/is/tag.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/tag.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tag]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,prefix,options) {\n\tvar results = [],\n\t\ttagMap = options.wiki.getTagMap();\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!$tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif($tw.utils.hop(tagMap,title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/tiddler.js": {
            "title": "$:/core/modules/filters/is/tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/tiddler.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[tiddler]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tiddler = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(options.wiki.tiddlerExists(title)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is/variable.js": {
            "title": "$:/core/modules/filters/is/variable.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is/variable.js\ntype: application/javascript\nmodule-type: isfilteroperator\n\nFilter function for [is[variable]]\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variable = function(source,prefix,options) {\n\tvar results = [];\n\tif(prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!(title in options.widget.variables)) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title in options.widget.variables) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "isfilteroperator"
        },
        "$:/core/modules/filters/is.js": {
            "title": "$:/core/modules/filters/is.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/is.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking tiddler properties\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar isFilterOperators;\n\nfunction getIsFilterOperators() {\n\tif(!isFilterOperators) {\n\t\tisFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"isfilteroperator\",isFilterOperators);\n\t}\n\treturn isFilterOperators;\n}\n\n/*\nExport our filter function\n*/\nexports.is = function(source,operator,options) {\n\t// Dispatch to the correct isfilteroperator\n\tvar isFilterOperators = getIsFilterOperators();\n\tif(operator.operand) {\n\t\tvar isFilterOperator = isFilterOperators[operator.operand];\n\t\tif(isFilterOperator) {\n\t\t\treturn isFilterOperator(source,operator.prefix,options);\n\t\t} else {\n\t\t\treturn [$tw.language.getString(\"Error/IsFilterOperator\")];\n\t\t}\n\t} else {\n\t\t// Return all tiddlers if the operand is missing\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t\treturn results;\n\t}\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/limit.js": {
            "title": "$:/core/modules/filters/limit.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/limit.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for chopping the results to a specified maximum number of entries\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.limit = function(source,operator,options) {\n\tvar results = [];\n\t// Convert to an array\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\t// Slice the array if necessary\n\tvar limit = Math.min(results.length,parseInt(operator.operand,10));\n\tif(operator.prefix === \"!\") {\n\t\tresults = results.slice(-limit);\n\t} else {\n\t\tresults = results.slice(0,limit);\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/links.js": {
            "title": "$:/core/modules/filters/links.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/links.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning all the links from a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.links = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlerLinks(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/list.js": {
            "title": "$:/core/modules/filters/list.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/list.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddlers whose title is listed in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.list = function(source,operator,options) {\n\tvar results = [],\n\t\ttr = $tw.utils.parseTextReference(operator.operand),\n\t\tcurrTiddlerTitle = options.widget && options.widget.getVariable(\"currentTiddler\"),\n\t\tlist = options.wiki.getTiddlerList(tr.title || currTiddlerTitle,tr.field,tr.index);\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults = list;\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/listed.js": {
            "title": "$:/core/modules/filters/listed.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/listed.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that have the selected tiddlers in a list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.listed = function(source,operator,options) {\n\tvar field = operator.operand || \"list\",\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.findListingsOfTiddler(title,field));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/listops.js": {
            "title": "$:/core/modules/filters/listops.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for manipulating the current selection list\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOrder a list\n*/\nexports.order = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.operand.toLowerCase() === \"reverse\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.unshift(title);\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nReverse list\n*/\nexports.reverse = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.unshift(title);\n\t});\n\treturn results;\n};\n\n/*\nFirst entry/entries in list\n*/\nexports.first = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,count);\n};\n\n/*\nLast entry/entries in list\n*/\nexports.last = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(-count);\n};\n\n/*\nAll but the first entry/entries of the list\n*/\nexports.rest = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count);\n};\nexports.butfirst = exports.rest;\nexports.bf = exports.rest;\n\n/*\nAll but the last entry/entries of the list\n*/\nexports.butlast = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(0,-count);\n};\nexports.bl = exports.butlast;\n\n/*\nThe nth member of the list\n*/\nexports.nth = function(source,operator,options) {\n\tvar count = $tw.utils.getInt(operator.operand,1),\n\t\tresults = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results.slice(count - 1,count);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/lookup.js": {
            "title": "$:/core/modules/filters/lookup.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/lookup.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that looks up values via a title prefix\n\n[lookup:<field>[<prefix>]]\n\nPrepends the prefix to the selected items and returns the specified field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.lookup = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(options.wiki.getTiddlerText(operator.operand + title) || options.wiki.getTiddlerText(operator.operand + operator.suffix));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/match.js": {
            "title": "$:/core/modules/filters/match.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/match.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title matches a string\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.match = function(source,operator,options) {\n\tvar results = [],\n\t\tsuffixes = (operator.suffixes || [])[0] || [];\n\tif(suffixes.indexOf(\"caseinsensitive\") !== -1) {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() !== (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title.toLowerCase() === (operator.operand || \"\").toLowerCase()) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t} else {\n\t\tif(operator.prefix === \"!\") {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title !== operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(title === operator.operand) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/math.js": {
            "title": "$:/core/modules/filters/math.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/math.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for math. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\nNote that strings are converted to numbers automatically. Trailing non-digits are ignored.\n\n* \"\" converts to 0\n* \"12kk\" converts to 12\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.negate = makeNumericBinaryOperator(\n\tfunction(a) {return -a}\n);\n\nexports.abs = makeNumericBinaryOperator(\n\tfunction(a) {return Math.abs(a)}\n);\n\nexports.ceil = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(a)}\n);\n\nexports.floor = makeNumericBinaryOperator(\n\tfunction(a) {return Math.floor(a)}\n);\n\nexports.round = makeNumericBinaryOperator(\n\tfunction(a) {return Math.round(a)}\n);\n\nexports.trunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.trunc(a)}\n);\n\nexports.untrunc = makeNumericBinaryOperator(\n\tfunction(a) {return Math.ceil(Math.abs(a)) * Math.sign(a)}\n);\n\nexports.sign = makeNumericBinaryOperator(\n\tfunction(a) {return Math.sign(a)}\n);\n\nexports.add = makeNumericBinaryOperator(\n\tfunction(a,b) {return a + b;}\n);\n\nexports.subtract = makeNumericBinaryOperator(\n\tfunction(a,b) {return a - b;}\n);\n\nexports.multiply = makeNumericBinaryOperator(\n\tfunction(a,b) {return a * b;}\n);\n\nexports.divide = makeNumericBinaryOperator(\n\tfunction(a,b) {return a / b;}\n);\n\nexports.remainder = makeNumericBinaryOperator(\n\tfunction(a,b) {return a % b;}\n);\n\nexports.max = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.max(a,b);}\n);\n\nexports.min = makeNumericBinaryOperator(\n\tfunction(a,b) {return Math.min(a,b);}\n);\n\nexports.fixed = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toFixed.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.precision = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toPrecision.call(a,Math.min(Math.max(b,1),100));}\n);\n\nexports.exponential = makeNumericBinaryOperator(\n\tfunction(a,b) {return Number.prototype.toExponential.call(a,Math.min(Math.max(b,0),100));}\n);\n\nexports.sum = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator + value},\n\t0 // Initial value\n);\n\nexports.product = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return accumulator * value},\n\t1 // Initial value\n);\n\nexports.maxall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.max(accumulator,value)},\n\t-Infinity // Initial value\n);\n\nexports.minall = makeNumericReducingOperator(\n\tfunction(accumulator,value) {return Math.min(accumulator,value)},\n\tInfinity // Initial value\n);\n\nfunction makeNumericBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [],\n\t\t\tnumOperand = $tw.utils.parseNumber(operator.operand);\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push($tw.utils.stringifyNumber(fnCalc($tw.utils.parseNumber(title),numOperand)));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeNumericReducingOperator(fnCalc,initialValue) {\n\tinitialValue = initialValue || 0;\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\treturn [$tw.utils.stringifyNumber(result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,$tw.utils.parseNumber(currentValue));\n\t\t},initialValue))];\n\t};\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/minlength.js": {
            "title": "$:/core/modules/filters/minlength.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/minlength.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for filtering out titles that don't meet the minimum length in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.minlength = function(source,operator,options) {\n\tvar results = [],\n\t\tminLength = parseInt(operator.operand || \"\",10) || 0;\n\tsource(function(tiddler,title) {\n\t\tif(title.length >= minLength) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/modules.js": {
            "title": "$:/core/modules/filters/modules.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/modules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the modules of a given type in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.modules = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.each($tw.modules.types[title],function(moduleInfo,moduleName) {\n\t\t\tresults.push(moduleName);\n\t\t});\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/moduletypes.js": {
            "title": "$:/core/modules/filters/moduletypes.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/moduletypes.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the module types in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.moduletypes = function(source,operator,options) {\n\tvar results = [];\n\t$tw.utils.each($tw.modules.types,function(moduleInfo,type) {\n\t\tresults.push(type);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/next.js": {
            "title": "$:/core/modules/filters/next.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/next.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs next in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.next = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch++;\n\t\tif(match > 0 && match < list.length) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/plugintiddlers.js": {
            "title": "$:/core/modules/filters/plugintiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/plugintiddlers.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the titles of the shadow tiddlers within a plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.plugintiddlers = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar pluginInfo = options.wiki.getPluginInfo(title) || options.wiki.getTiddlerDataCached(title,{tiddlers:[]});\n\t\tif(pluginInfo && pluginInfo.tiddlers) {\n\t\t\t$tw.utils.each(pluginInfo.tiddlers,function(fields,title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/prefix.js": {
            "title": "$:/core/modules/filters/prefix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/prefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title starts with a prefix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.prefix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/previous.js": {
            "title": "$:/core/modules/filters/previous.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/previous.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning the tiddler whose title occurs immediately prior in the list supplied in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.previous = function(source,operator,options) {\n\tvar results = [],\n\t\tlist = options.wiki.getTiddlerList(operator.operand);\n\tsource(function(tiddler,title) {\n\t\tvar match = list.indexOf(title);\n\t\t// increment match and then test if result is in range\n\t\tmatch--;\n\t\tif(match >= 0) {\n\t\t\tresults.push(list[match]);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/range.js": {
            "title": "$:/core/modules/filters/range.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/range.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for generating a numeric range.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.range = function(source,operator,options) {\n\tvar results = [];\n\t// Split the operand into numbers delimited by these symbols\n\tvar parts = operator.operand.split(/[,:;]/g),\n\t\tbeg, end, inc, i, fixed = 0;\n\tfor (i=0; i<parts.length; i++) {\n\t\t// Validate real number\n\t\tif(!/^\\s*[+-]?((\\d+(\\.\\d*)?)|(\\.\\d+))\\s*$/.test(parts[i])) {\n\t\t\treturn [\"range: bad number \\\"\" + parts[i] + \"\\\"\"];\n\t\t}\n\t\t// Count digits; the most precise number determines decimal places in output.\n\t\tvar frac = /\\.\\d+/.exec(parts[i]);\n\t\tif(frac) {\n\t\t\tfixed = Math.max(fixed,frac[0].length-1);\n\t\t}\n\t\tparts[i] = parseFloat(parts[i]);\n\t}\n\tswitch(parts.length) {\n\t\tcase 1:\n\t\t\tend = parts[0];\n\t\t\tif (end >= 1) {\n\t\t\t\tbeg = 1;\n\t\t\t}\n\t\t\telse if (end <= -1) {\n\t\t\t\tbeg = -1;\n\t\t\t}\n\t\t\telse {\n\t\t\t\treturn [];\n\t\t\t}\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 2:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = 1;\n\t\t\tbreak;\n\t\tcase 3:\n\t\t\tbeg = parts[0];\n\t\t\tend = parts[1];\n\t\t\tinc = Math.abs(parts[2]);\n\t\t\tbreak;\n\t}\n\tif(inc === 0) {\n\t\treturn [\"range: increment 0 causes infinite loop\"];\n\t}\n\t// May need to count backwards\n\tvar direction = ((end < beg) ? -1 : 1);\n\tinc *= direction;\n\t// Estimate number of resulting elements\n\tif((end - beg) / inc > 10000) {\n\t\treturn [\"range: too many steps (over 10K)\"];\n\t}\n\t// Avoid rounding error on last step\n\tend += direction * 0.5 * Math.pow(0.1,fixed);\n\tvar safety = 10010;\n\t// Enumerate the range\n\tif (end<beg) {\n\t\tfor(i=beg; i>end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tfor(i=beg; i<end; i+=inc) {\n\t\t\tresults.push(i.toFixed(fixed));\n\t\t\tif(--safety<0) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tif(safety<0) {\n\t\treturn [\"range: unexpectedly large output\"];\n\t}\n\t// Reverse?\n\tif(operator.prefix === \"!\") {\n\t\tresults.reverse();\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/regexp.js": {
            "title": "$:/core/modules/filters/regexp.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/regexp.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for regexp matching\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.regexp = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldname = (operator.suffix || \"title\").toLowerCase(),\n\t\tregexpString, regexp, flags = \"\", match,\n\t\tgetFieldString = function(tiddler,title) {\n\t\t\tif(tiddler) {\n\t\t\t\treturn tiddler.getFieldString(fieldname);\n\t\t\t} else if(fieldname === \"title\") {\n\t\t\t\treturn title;\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t};\n\t// Process flags and construct regexp\n\tregexpString = operator.operand;\n\tmatch = /^\\(\\?([gim]+)\\)/.exec(regexpString);\n\tif(match) {\n\t\tflags = match[1];\n\t\tregexpString = regexpString.substr(match[0].length);\n\t} else {\n\t\tmatch = /\\(\\?([gim]+)\\)$/.exec(regexpString);\n\t\tif(match) {\n\t\t\tflags = match[1];\n\t\t\tregexpString = regexpString.substr(0,regexpString.length - match[0].length);\n\t\t}\n\t}\n\ttry {\n\t\tregexp = new RegExp(regexpString,flags);\n\t} catch(e) {\n\t\treturn [\"\" + e];\n\t}\n\t// Process the incoming tiddlers\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tvar text = getFieldString(tiddler,title);\n\t\t\tif(text !== null) {\n\t\t\t\tif(!!regexp.exec(text)) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/removeprefix.js": {
            "title": "$:/core/modules/filters/removeprefix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/removeprefix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a prefix from each title in the list. Titles that do not start with the prefix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removeprefix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title.substr(0,operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/removesuffix.js": {
            "title": "$:/core/modules/filters/removesuffix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/removesuffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for removing a suffix from each title in the list. Titles that do not end with the suffix are removed.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.removesuffix = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tif(title && title.substr(-operator.operand.length) === operator.operand) {\n\t\t\tresults.push(title.substr(0,title.length - operator.operand.length));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/sameday.js": {
            "title": "$:/core/modules/filters/sameday.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/sameday.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that selects tiddlers with a modified date field on the same day as the provided value.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sameday = function(source,operator,options) {\n\tvar results = [],\n\t\tfieldName = operator.suffix || \"modified\",\n\t\ttargetDate = (new Date($tw.utils.parseDate(operator.operand))).setHours(0,0,0,0);\n\t// Function to convert a date/time to a date integer\n\tsource(function(tiddler,title) {\n\t\tif(tiddler) {\n\t\t\tif(tiddler.getFieldDay(fieldName) === targetDate) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/search.js": {
            "title": "$:/core/modules/filters/search.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/search.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for searching for the text in the operand tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.search = function(source,operator,options) {\n\tvar invert = operator.prefix === \"!\";\n\tif(operator.suffixes) {\n\t\tvar hasFlag = function(flag) {\n\t\t\t\treturn (operator.suffixes[1] || []).indexOf(flag) !== -1;\n\t\t\t},\n\t\t\texcludeFields = false,\n\t\t\tfieldList = operator.suffixes[0] || [],\n\t\t\tfirstField = fieldList[0] || \"\", \n\t\t\tfirstChar = firstField.charAt(0),\n\t\t\tfields;\n\t\tif(firstChar === \"-\") {\n\t\t\tfields = [firstField.slice(1)].concat(fieldList.slice(1));\n\t\t\texcludeFields = true;\n\t\t} else if(fieldList[0] === \"*\"){\n\t\t\tfields = [];\n\t\t\texcludeFields = true;\n\t\t} else {\n\t\t\tfields = fieldList.slice(0);\n\t\t}\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert,\n\t\t\tfield: fields,\n\t\t\texcludeField: excludeFields,\n\t\t\tcaseSensitive: hasFlag(\"casesensitive\"),\n\t\t\tliteral: hasFlag(\"literal\"),\n\t\t\twhitespace: hasFlag(\"whitespace\"),\n\t\t\tanchored: hasFlag(\"anchored\"),\n\t\t\tregexp: hasFlag(\"regexp\"),\n\t\t\twords: hasFlag(\"words\")\n\t\t});\n\t} else {\n\t\treturn options.wiki.search(operator.operand,{\n\t\t\tsource: source,\n\t\t\tinvert: invert\n\t\t});\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/shadowsource.js": {
            "title": "$:/core/modules/filters/shadowsource.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/shadowsource.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the source plugins for shadow tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.shadowsource = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar source = options.wiki.getShadowSource(title);\n\t\tif(source) {\n\t\t\t$tw.utils.pushTop(results,source);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/sort.js": {
            "title": "$:/core/modules/filters/sort.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/sort.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for sorting\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.sort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,false);\n\treturn results;\n};\n\nexports.nsort = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",false,true);\n\treturn results;\n};\n\nexports.sortan = function(source, operator, options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results, operator.operand || \"title\", operator.prefix === \"!\",false,false,true);\n\treturn results;\n};\n\nexports.sortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,false);\n\treturn results;\n};\n\nexports.nsortcs = function(source,operator,options) {\n\tvar results = prepare_results(source);\n\toptions.wiki.sortTiddlers(results,operator.operand || \"title\",operator.prefix === \"!\",true,true);\n\treturn results;\n};\n\nvar prepare_results = function (source) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(title);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/splitbefore.js": {
            "title": "$:/core/modules/filters/splitbefore.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator that splits each result on the first occurance of the specified separator and returns the unique values.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitbefore = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar parts = title.split(operator.operand);\n\t\tif(parts.length === 1) {\n\t\t\t$tw.utils.pushTop(results,parts[0]);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,parts[0] + operator.operand);\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/storyviews.js": {
            "title": "$:/core/modules/filters/storyviews.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/storyviews.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the story views in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.storyviews = function(source,operator,options) {\n\tvar results = [],\n\t\tstoryviews = {};\n\t$tw.modules.applyMethods(\"storyview\",storyviews);\n\t$tw.utils.each(storyviews,function(info,name) {\n\t\tresults.push(name);\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/strings.js": {
            "title": "$:/core/modules/filters/strings.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/strings.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operators for strings. Unary/binary operators work on each item in turn, and return a new item list.\n\nSum/product/maxall/minall operate on the entire list, returning a single item.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.length = makeStringBinaryOperator(\n\tfunction(a) {return [\"\" + (\"\" + a).length];}\n);\n\nexports.uppercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toUpperCase()];}\n);\n\nexports.lowercase = makeStringBinaryOperator(\n\tfunction(a) {return [(\"\" + a).toLowerCase()];}\n);\n\nexports.sentencecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toSentenceCase(a)];}\n);\n\nexports.titlecase = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.toTitleCase(a)];}\n);\n\nexports.trim = makeStringBinaryOperator(\n\tfunction(a) {return [$tw.utils.trim(a)];}\n);\n\nexports.split = makeStringBinaryOperator(\n\tfunction(a,b) {return (\"\" + a).split(b);}\n);\n\nexports.join = makeStringReducingOperator(\n\tfunction(accumulator,value,operand) {\n\t\tif(accumulator === null) {\n\t\t\treturn value;\n\t\t} else {\n\t\t\treturn accumulator + operand + value;\n\t\t}\n\t},null\n);\n\nfunction makeStringBinaryOperator(fnCalc) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tArray.prototype.push.apply(result,fnCalc(title,operator.operand || \"\"));\n\t\t});\n\t\treturn result;\n\t};\n}\n\nfunction makeStringReducingOperator(fnCalc,initialValue) {\n\treturn function(source,operator,options) {\n\t\tvar result = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tresult.push(title);\n\t\t});\n\t\treturn [result.reduce(function(accumulator,currentValue) {\n\t\t\treturn fnCalc(accumulator,currentValue,operator.operand || \"\");\n\t\t},initialValue) || \"\"];\n\t};\n}\n\nexports.splitregexp = function(source,operator,options) {\n\tvar result = [],\n\t\tsuffix = operator.suffix || \"\",\n\t\tflags = (suffix.indexOf(\"m\") !== -1 ? \"m\" : \"\") + (suffix.indexOf(\"i\") !== -1 ? \"i\" : \"\"),\n\t\tregExp;\n\ttry {\n\t\tregExp = new RegExp(operator.operand || \"\",flags);\t\t\n\t} catch(ex) {\n\t\treturn [\"RegExp error: \" + ex];\n\t}\n\tsource(function(tiddler,title) {\n\t\tArray.prototype.push.apply(result,title.split(regExp));\n\t});\t\t\n\treturn result;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/subfilter.js": {
            "title": "$:/core/modules/filters/subfilter.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/subfilter.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning its operand evaluated as a filter\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subfilter = function(source,operator,options) {\n\tvar list = options.wiki.filterTiddlers(operator.operand,options.widget,source);\n\tif(operator.prefix === \"!\") {\n\t\tvar results = [];\n\t\tsource(function(tiddler,title) {\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t\treturn results;\n\t} else {\n\t\treturn list;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/subtiddlerfields.js": {
            "title": "$:/core/modules/filters/subtiddlerfields.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/subtiddlerfields.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the fields on the selected subtiddlers of the plugin named in the operand\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.subtiddlerfields = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar subtiddler = options.wiki.getSubTiddler(operator.operand,title);\n\t\tif(subtiddler) {\n\t\t\tfor(var fieldName in subtiddler.fields) {\n\t\t\t\t$tw.utils.pushTop(results,fieldName);\n\t\t\t}\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/suffix.js": {
            "title": "$:/core/modules/filters/suffix.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/suffix.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking if a title ends with a suffix\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.suffix = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(title.substr(-operator.operand.length) === operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tag.js": {
            "title": "$:/core/modules/filters/tag.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/tag.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for checking for the presence of a tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tag = function(source,operator,options) {\n\tvar results = [],indexedResults;\n\tif((operator.suffix || \"\").toLowerCase() === \"strict\" && !operator.operand) {\n\t\t// New semantics:\n\t\t// Always return copy of input if operator.operand is missing\n\t\tsource(function(tiddler,title) {\n\t\t\tresults.push(title);\n\t\t});\n\t} else {\n\t\t// Old semantics:\n\t\tvar tiddlers;\n\t\tif(operator.prefix === \"!\") {\n\t\t\t// Returns a copy of the input if operator.operand is missing\n\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\tsource(function(tiddler,title) {\n\t\t\t\tif(tiddlers.indexOf(title) === -1) {\n\t\t\t\t\tresults.push(title);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// Returns empty results if operator.operand is missing\n\t\t\tif(source.byTag) {\n\t\t\t\tindexedResults = source.byTag(operator.operand);\n\t\t\t\tif(indexedResults) {\n\t\t\t\t\treturn indexedResults;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\ttiddlers = options.wiki.getTiddlersWithTag(operator.operand);\n\t\t\t\tsource(function(tiddler,title) {\n\t\t\t\t\tif(tiddlers.indexOf(title) !== -1) {\n\t\t\t\t\t\tresults.push(title);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tresults = options.wiki.sortByList(results,operator.operand);\n\t\t\t}\n\t\t}\t\t\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tagging.js": {
            "title": "$:/core/modules/filters/tagging.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/tagging.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all tiddlers that are tagged with the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tagging = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\t$tw.utils.pushTop(results,options.wiki.getTiddlersWithTag(title));\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/tags.js": {
            "title": "$:/core/modules/filters/tags.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/tags.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the tags of the selected tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.tags = function(source,operator,options) {\n\tvar tags = {};\n\tsource(function(tiddler,title) {\n\t\tvar t, length;\n\t\tif(tiddler && tiddler.fields.tags) {\n\t\t\tfor(t=0, length=tiddler.fields.tags.length; t<length; t++) {\n\t\t\t\ttags[tiddler.fields.tags[t]] = true;\n\t\t\t}\n\t\t}\n\t});\n\treturn Object.keys(tags);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/then.js": {
            "title": "$:/core/modules/filters/then.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/then.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for replacing any titles with a constant\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.then = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tresults.push(operator.operand);\n\t});\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/title.js": {
            "title": "$:/core/modules/filters/title.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/title.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for comparing title fields for equality\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.title = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && tiddler.fields.title !== operator.operand) {\n\t\t\t\tresults.push(title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tresults.push(operator.operand);\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/untagged.js": {
            "title": "$:/core/modules/filters/untagged.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/untagged.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator returning all the selected tiddlers that are untagged\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.untagged = function(source,operator,options) {\n\tvar results = [];\n\tif(operator.prefix === \"!\") {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(tiddler && $tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length > 0) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tsource(function(tiddler,title) {\n\t\t\tif(!tiddler || !tiddler.hasField(\"tags\") || ($tw.utils.isArray(tiddler.fields.tags) && tiddler.fields.tags.length === 0)) {\n\t\t\t\t$tw.utils.pushTop(results,title);\n\t\t\t}\n\t\t});\n\t}\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/variables.js": {
            "title": "$:/core/modules/filters/variables.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/variables.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the active variables\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.variables = function(source,operator,options) {\n\tvar names = [];\n\tfor(var variable in options.widget.variables) {\n\t\tnames.push(variable);\n\t}\n\treturn names.sort();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/wikiparserrules.js": {
            "title": "$:/core/modules/filters/wikiparserrules.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/wikiparserrules.js\ntype: application/javascript\nmodule-type: filteroperator\n\nFilter operator for returning the names of the wiki parser rules in this wiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.wikiparserrules = function(source,operator,options) {\n\tvar results = [],\n\t\toperand = operator.operand;\n\t$tw.utils.each($tw.modules.types.wikirule,function(mod) {\n\t\tvar exp = mod.exports;\n\t\tif(!operand || exp.types[operand]) {\n\t\t\tresults.push(exp.name);\n\t\t}\n\t});\n\tresults.sort();\n\treturn results;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters/x-listops.js": {
            "title": "$:/core/modules/filters/x-listops.js",
            "text": "/*\\\ntitle: $:/core/modules/filters/x-listops.js\ntype: application/javascript\nmodule-type: filteroperator\n\nExtended filter operators to manipulate the current list.\n\n\\*/\n(function () {\n\n    /*jslint node: true, browser: true */\n    /*global $tw: false */\n    \"use strict\";\n\n    /*\n    Fetch titles from the current list\n    */\n    var prepare_results = function (source) {\n    var results = [];\n        source(function (tiddler, title) {\n            results.push(title);\n        });\n        return results;\n    };\n\n    /*\n    Moves a number of items from the tail of the current list before the item named in the operand\n    */\n    exports.putbefore = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand),\n            count = $tw.utils.getInt(operator.suffix,1);\n        return (index === -1) ?\n            results.slice(0, -1) :\n            results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index, -count));\n    };\n\n    /*\n    Moves a number of items from the tail of the current list after the item named in the operand\n    */\n    exports.putafter = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand),\n            count = $tw.utils.getInt(operator.suffix,1);\n        return (index === -1) ?\n            results.slice(0, -1) :\n            results.slice(0, index + 1).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n    };\n\n    /*\n    Replaces the item named in the operand with a number of items from the tail of the current list\n    */\n    exports.replace = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand),\n            count = $tw.utils.getInt(operator.suffix,1);\n        return (index === -1) ?\n            results.slice(0, -count) :\n            results.slice(0, index).concat(results.slice(-count)).concat(results.slice(index + 1, -count));\n    };\n\n    /*\n    Moves a number of items from the tail of the current list to the head of the list\n    */\n    exports.putfirst = function (source, operator) {\n        var results = prepare_results(source),\n            count = $tw.utils.getInt(operator.suffix,1);\n        return results.slice(-count).concat(results.slice(0, -count));\n    };\n\n    /*\n    Moves a number of items from the head of the current list to the tail of the list\n    */\n    exports.putlast = function (source, operator) {\n        var results = prepare_results(source),\n            count = $tw.utils.getInt(operator.suffix,1);\n        return results.slice(count).concat(results.slice(0, count));\n    };\n\n    /*\n    Moves the item named in the operand a number of places forward or backward in the list\n    */\n    exports.move = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand),\n            count = $tw.utils.getInt(operator.suffix,1),\n            marker = results.splice(index, 1),\n            offset =  (index + count) > 0 ? index + count : 0;\n        return results.slice(0, offset).concat(marker).concat(results.slice(offset));\n    };\n\n    /*\n    Returns the items from the current list that are after the item named in the operand\n    */\n    exports.allafter = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand);\n        return (index === -1) ? [] :\n            (operator.suffix) ? results.slice(index) :\n            results.slice(index + 1);\n    };\n\n    /*\n    Returns the items from the current list that are before the item named in the operand\n    */\n    exports.allbefore = function (source, operator) {\n        var results = prepare_results(source),\n            index = results.indexOf(operator.operand);\n        return (index === -1) ? [] :\n            (operator.suffix) ? results.slice(0, index + 1) :\n            results.slice(0, index);\n    };\n\n    /*\n    Appends the items listed in the operand array to the tail of the current list\n    */\n    exports.append = function (source, operator) {\n        var append = $tw.utils.parseStringArray(operator.operand, \"true\"),\n            results = prepare_results(source),\n            count = parseInt(operator.suffix) || append.length;\n        return (append.length === 0) ? results :\n            (operator.prefix) ? results.concat(append.slice(-count)) :\n            results.concat(append.slice(0, count));\n    };\n\n    /*\n    Prepends the items listed in the operand array to the head of the current list\n    */\n    exports.prepend = function (source, operator) {\n        var prepend = $tw.utils.parseStringArray(operator.operand, \"true\"),\n            results = prepare_results(source),\n            count = $tw.utils.getInt(operator.suffix,prepend.length);\n        return (prepend.length === 0) ? results :\n            (operator.prefix) ? prepend.slice(-count).concat(results) :\n            prepend.slice(0, count).concat(results);\n    };\n\n    /*\n    Returns all items from the current list except the items listed in the operand array\n    */\n    exports.remove = function (source, operator) {\n        var array = $tw.utils.parseStringArray(operator.operand, \"true\"),\n            results = prepare_results(source),\n            count = parseInt(operator.suffix) || array.length,\n            p,\n            len,\n            index;\n        len = array.length - 1;\n        for (p = 0; p < count; ++p) {\n            if (operator.prefix) {\n                index = results.indexOf(array[len - p]);\n            } else {\n                index = results.indexOf(array[p]);\n            }\n            if (index !== -1) {\n                results.splice(index, 1);\n            }\n        }\n        return results;\n    };\n\n    /*\n    Returns all items from the current list sorted in the order of the items in the operand array\n    */\n    exports.sortby = function (source, operator) {\n        var results = prepare_results(source);\n        if (!results || results.length < 2) {\n            return results;\n        }\n        var lookup = $tw.utils.parseStringArray(operator.operand, \"true\");\n        results.sort(function (a, b) {\n            return lookup.indexOf(a) - lookup.indexOf(b);\n        });\n        return results;\n    };\n\n    /*\n    Removes all duplicate items from the current list\n    */\n    exports.unique = function (source, operator) {\n        var results = prepare_results(source);\n        var set = results.reduce(function (a, b) {\n            if (a.indexOf(b) < 0) {\n                a.push(b);\n            }\n            return a;\n        }, []);\n        return set;\n    };\n})();\n",
            "type": "application/javascript",
            "module-type": "filteroperator"
        },
        "$:/core/modules/filters.js": {
            "title": "$:/core/modules/filters.js",
            "text": "/*\\\ntitle: $:/core/modules/filters.js\ntype: application/javascript\nmodule-type: wikimethod\n\nAdds tiddler filtering methods to the $tw.Wiki object.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParses an operation (i.e. a run) within a filter string\n\toperators: Array of array of operator nodes into which results should be inserted\n\tfilterString: filter string\n\tp: start position within the string\nReturns the new start position, after the parsed operation\n*/\nfunction parseFilterOperation(operators,filterString,p) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\tthrow \"Missing [ in filter expression\";\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\toperator.prefix = filterString.charAt(p++);\n\t\t}\n\t\t// Get the operator name\n\t\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing [ in filter expression\";\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\t// The raw suffix for older filters\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t\t// The processed suffix for newer filters\n\t\t\toperator.suffixes = [];\n\t\t\t$tw.utils.each(operator.suffix.split(\":\"),function(subsuffix) {\n\t\t\t\toperator.suffixes.push([]);\n\t\t\t\t$tw.utils.each(subsuffix.split(\",\"),function(entry) {\n\t\t\t\t\tentry = $tw.utils.trim(entry);\n\t\t\t\t\tif(entry) {\n\t\t\t\t\t\toperator.suffixes[operator.suffixes.length - 1].push(entry); \n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\n\t\tp = nextBracketPos + 1;\n\t\tswitch (bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\toperator.indirect = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\toperator.variable = true;\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\toperator.regexp = new RegExp(rexMatch[1], rexMatch[2]);\n// DEPRECATION WARNING\nconsole.log(\"WARNING: Filter\",operator.operator,\"has a deprecated regexp operand\",operator.regexp);\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\tthrow \"Unterminated regular expression in filter expression\";\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\tthrow \"Missing closing bracket in filter expression\";\n\t\t}\n\t\tif(!operator.regexp) {\n\t\t\toperator.operand = filterString.substring(p,nextBracketPos);\n\t\t}\n\t\tp = nextBracketPos + 1;\n\n\t\t// Push this operator\n\t\toperators.push(operator);\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\tthrow \"Missing ] in filter expression\";\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n/*\nParse a filter string\n*/\nexports.parseFilter = function(filterString) {\n\tfilterString = filterString || \"\";\n\tvar results = [], // Array of arrays of operator nodes {operator:,operand:}\n\t\tp = 0, // Current position in the filter string\n\t\tmatch;\n\tvar whitespaceRegExp = /(\\s+)/mg,\n\t\toperandRegExp = /((?:\\+|\\-|~|=)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filterString.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filterString);\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filterString.length) {\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filterString);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\tthrow $tw.language.getString(\"Error/FilterSyntax\");\n\t\t\t}\n\t\t\tvar operation = {\n\t\t\t\tprefix: \"\",\n\t\t\t\toperators: []\n\t\t\t};\n\t\t\tif(match[1]) {\n\t\t\t\toperation.prefix = match[1];\n\t\t\t\tp++;\n\t\t\t}\n\t\t\tif(match[2]) { // Opening square bracket\n\t\t\t\tp = parseFilterOperation(operation.operators,filterString,p);\n\t\t\t} else {\n\t\t\t\tp = match.index + match[0].length;\n\t\t\t}\n\t\t\tif(match[3] || match[4] || match[5]) { // Double quoted string, single quoted string or unquoted title\n\t\t\t\toperation.operators.push(\n\t\t\t\t\t{operator: \"title\", operand: match[3] || match[4] || match[5]}\n\t\t\t\t);\n\t\t\t}\n\t\t\tresults.push(operation);\n\t\t}\n\t}\n\treturn results;\n};\n\nexports.getFilterOperators = function() {\n\tif(!this.filterOperators) {\n\t\t$tw.Wiki.prototype.filterOperators = {};\n\t\t$tw.modules.applyMethods(\"filteroperator\",this.filterOperators);\n\t}\n\treturn this.filterOperators;\n};\n\nexports.filterTiddlers = function(filterString,widget,source) {\n\tvar fn = this.compileFilter(filterString);\n\treturn fn.call(this,source,widget);\n};\n\n/*\nCompile a filter into a function with the signature fn(source,widget) where:\nsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\nwidget: an optional widget node for retrieving the current tiddler etc.\n*/\nexports.compileFilter = function(filterString) {\n\tvar filterParseTree;\n\ttry {\n\t\tfilterParseTree = this.parseFilter(filterString);\n\t} catch(e) {\n\t\treturn function(source,widget) {\n\t\t\treturn [$tw.language.getString(\"Error/Filter\") + \": \" + e];\n\t\t};\n\t}\n\t// Get the hashmap of filter operator functions\n\tvar filterOperators = this.getFilterOperators();\n\t// Assemble array of functions, one for each operation\n\tvar operationFunctions = [];\n\t// Step through the operations\n\tvar self = this;\n\t$tw.utils.each(filterParseTree,function(operation) {\n\t\t// Create a function for the chain of operators in the operation\n\t\tvar operationSubFunction = function(source,widget) {\n\t\t\tvar accumulator = source,\n\t\t\t\tresults = [],\n\t\t\t\tcurrTiddlerTitle = widget && widget.getVariable(\"currentTiddler\");\n\t\t\t$tw.utils.each(operation.operators,function(operator) {\n\t\t\t\tvar operand = operator.operand,\n\t\t\t\t\toperatorFunction;\n\t\t\t\tif(!operator.operator) {\n\t\t\t\t\toperatorFunction = filterOperators.title;\n\t\t\t\t} else if(!filterOperators[operator.operator]) {\n\t\t\t\t\toperatorFunction = filterOperators.field;\n\t\t\t\t} else {\n\t\t\t\t\toperatorFunction = filterOperators[operator.operator];\n\t\t\t\t}\n\t\t\t\tif(operator.indirect) {\n\t\t\t\t\toperand = self.getTextReference(operator.operand,\"\",currTiddlerTitle);\n\t\t\t\t}\n\t\t\t\tif(operator.variable) {\n\t\t\t\t\toperand = widget.getVariable(operator.operand,{defaultValue: \"\"});\n\t\t\t\t}\n\t\t\t\t// Invoke the appropriate filteroperator module\n\t\t\t\tresults = operatorFunction(accumulator,{\n\t\t\t\t\t\t\toperator: operator.operator,\n\t\t\t\t\t\t\toperand: operand,\n\t\t\t\t\t\t\tprefix: operator.prefix,\n\t\t\t\t\t\t\tsuffix: operator.suffix,\n\t\t\t\t\t\t\tsuffixes: operator.suffixes,\n\t\t\t\t\t\t\tregexp: operator.regexp\n\t\t\t\t\t\t},{\n\t\t\t\t\t\t\twiki: self,\n\t\t\t\t\t\t\twidget: widget\n\t\t\t\t\t\t});\n\t\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\t\taccumulator = self.makeTiddlerIterator(results);\n\t\t\t\t} else {\n\t\t\t\t\taccumulator = results;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif($tw.utils.isArray(results)) {\n\t\t\t\treturn results;\n\t\t\t} else {\n\t\t\t\tvar resultArray = [];\n\t\t\t\tresults(function(tiddler,title) {\n\t\t\t\t\tresultArray.push(title);\n\t\t\t\t});\n\t\t\t\treturn resultArray;\n\t\t\t}\n\t\t};\n\t\t// Wrap the operator functions in a wrapper function that depends on the prefix\n\t\toperationFunctions.push((function() {\n\t\t\tswitch(operation.prefix || \"\") {\n\t\t\t\tcase \"\": // No prefix means that the operation is unioned into the result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"=\": // The results of the operation are pushed into the result without deduplication\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\tArray.prototype.push.apply(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"-\": // The results of this operation are removed from the main result\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t$tw.utils.removeArrayEntries(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"+\": // This operation is applied to the main results so far\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\t// This replaces all the elements of the array, but keeps the actual array so that references to it are preserved\n\t\t\t\t\t\tsource = self.makeTiddlerIterator(results);\n\t\t\t\t\t\tresults.splice(0,results.length);\n\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t};\n\t\t\t\tcase \"~\": // This operation is unioned into the result only if the main result so far is empty\n\t\t\t\t\treturn function(results,source,widget) {\n\t\t\t\t\t\tif(results.length === 0) {\n\t\t\t\t\t\t\t// Main result so far is empty\n\t\t\t\t\t\t\t$tw.utils.pushTop(results,operationSubFunction(source,widget));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t}\n\t\t})());\n\t});\n\t// Return a function that applies the operations to a source iterator of tiddler titles\n\treturn $tw.perf.measure(\"filter: \" + filterString,function filterFunction(source,widget) {\n\t\tif(!source) {\n\t\t\tsource = self.each;\n\t\t} else if(typeof source === \"object\") { // Array or hashmap\n\t\t\tsource = self.makeTiddlerIterator(source);\n\t\t}\n\t\tvar results = [];\n\t\t$tw.utils.each(operationFunctions,function(operationFunction) {\n\t\t\toperationFunction(results,source,widget);\n\t\t});\n\t\treturn results;\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/core/modules/indexers/backlinks-indexer.js": {
            "title": "$:/core/modules/indexers/backlinks-indexer.js",
            "text": "/*\\\ntitle: $:/core/modules/indexers/backlinks-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers' backlinks\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\n\nfunction BacklinksIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nBacklinksIndexer.prototype.init = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype.rebuild = function() {\n\tthis.index = null;\n}\n\nBacklinksIndexer.prototype._getLinks = function(tiddler) {\n\tvar parser =  this.wiki.parseText(tiddler.fields.type, tiddler.fields.text, {});\n\tif(parser) {\n\t\treturn this.wiki.extractLinks(parser.tree);\n\t}\n\treturn [];\n}\n\nBacklinksIndexer.prototype.update = function(updateDescriptor) {\n\tif(!this.index) {\n\t\treturn;\n\t}\n\tvar newLinks = [],\n\t    oldLinks = [],\n\t    self = this;\n\tif(updateDescriptor.old.exists) {\n\t\toldLinks = this._getLinks(updateDescriptor.old.tiddler);\n\t}\n\tif(updateDescriptor.new.exists) {\n\t\tnewLinks = this._getLinks(updateDescriptor.new.tiddler);\n\t}\n\n\t$tw.utils.each(oldLinks,function(link) {\n\t\tif(self.index[link]) {\n\t\t\tdelete self.index[link][updateDescriptor.old.tiddler.fields.title];\n\t\t}\n\t});\n\t$tw.utils.each(newLinks,function(link) {\n\t\tif(!self.index[link]) {\n\t\t\tself.index[link] = Object.create(null);\n\t\t}\n\t\tself.index[link][updateDescriptor.new.tiddler.fields.title] = true;\n\t});\n}\n\nBacklinksIndexer.prototype.lookup = function(title) {\n\tif(!this.index) {\n\t\tthis.index = Object.create(null);\n\t\tvar self = this;\n\t\tthis.wiki.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self._getLinks(tiddler);\n\t\t\t$tw.utils.each(links, function(link) {\n\t\t\t\tif(!self.index[link]) {\n\t\t\t\t\tself.index[link] = Object.create(null);\n\t\t\t\t}\n\t\t\t\tself.index[link][title] = true;\n\t\t\t});\n\t\t});\n\t}\n\tif(this.index[title]) {\n\t\treturn Object.keys(this.index[title]);\n\t} else {\n\t\treturn [];\n\t}\n}\n\nexports.BacklinksIndexer = BacklinksIndexer;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "indexer"
        },
        "$:/core/modules/indexers/field-indexer.js": {
            "title": "$:/core/modules/indexers/field-indexer.js",
            "text": "/*\\\ntitle: $:/core/modules/indexers/field-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each field value\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nvar DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH = 128;\n\nfunction FieldIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nFieldIndexer.prototype.init = function() {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = DEFAULT_MAXIMUM_INDEXED_VALUE_LENGTH;\n\tthis.addIndexMethods();\n}\n\n// Provided for testing\nFieldIndexer.prototype.setMaxIndexedValueLength = function(length) {\n\tthis.index = null;\n\tthis.maxIndexedValueLength = length;\n};\n\nFieldIndexer.prototype.addIndexMethods = function() {\n\tvar self = this;\n\tthis.wiki.each.byField = function(name,value) {\n\t\tvar titles = self.wiki.allTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachShadow.byField = function(name,value) {\n\t\tvar titles = self.wiki.allShadowTitles(),\n\t\t\tlookup = self.lookup(name,value);\n\t\treturn lookup && lookup.filter(function(title) {\n\t\t\treturn titles.indexOf(title) !== -1;\n\t\t});\n\t};\n\tthis.wiki.eachTiddlerPlusShadows.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n\tthis.wiki.eachShadowPlusTiddlers.byField = function(name,value) {\n\t\tvar lookup = self.lookup(name,value);\n\t\treturn lookup ? lookup.slice(0) : null;\n\t};\n};\n\n/*\nTear down and then rebuild the index as if all tiddlers have changed\n*/\nFieldIndexer.prototype.rebuild = function() {\n\t// Invalidate the index so that it will be rebuilt when it is next used\n\tthis.index = null;\n};\n\n/*\nBuild the index for a particular field\n*/\nFieldIndexer.prototype.buildIndexForField = function(name) {\n\tvar self = this;\n\t// Hashmap by field name of hashmap by field value of array of tiddler titles\n\tthis.index = this.index || Object.create(null);\n\tthis.index[name] = Object.create(null);\n\tvar baseIndex = this.index[name];\n\t// Update the index for each tiddler\n\tthis.wiki.eachTiddlerPlusShadows(function(tiddler,title) {\n\t\tif(name in tiddler.fields) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\t// Skip any values above the maximum length\n\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\tbaseIndex[value] = baseIndex[value] || [];\n\t\t\t\tbaseIndex[value].push(title);\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nUpdate the index in the light of a tiddler value changing; note that the title must be identical. (Renames are handled as a separate delete and create)\nupdateDescriptor: {old: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>},new: {tiddler: <tiddler>, shadow: <boolean>, exists: <boolean>}}\n*/\nFieldIndexer.prototype.update = function(updateDescriptor) {\n\tvar self = this;\n\t// Don't do anything if the index hasn't been built yet\n\tif(this.index === null) {\n\t\treturn;\n\t}\n\t// Remove the old tiddler from the index\n\tif(updateDescriptor.old.tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor.old.tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor.old.tiddler.getFieldString(name),\n\t\t\t\t\ttiddlerList = indexEntry[value];\n\t\t\t\tif(tiddlerList) {\n\t\t\t\t\tvar index = tiddlerList.indexOf(updateDescriptor.old.tiddler.fields.title);\n\t\t\t\t\tif(index !== -1) {\n\t\t\t\t\t\ttiddlerList.splice(index,1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t// Add the new tiddler to the index\n\tif(updateDescriptor[\"new\"].tiddler) {\n\t\t$tw.utils.each(this.index,function(indexEntry,name) {\n\t\t\tif(name in updateDescriptor[\"new\"].tiddler.fields) {\n\t\t\t\tvar value = updateDescriptor[\"new\"].tiddler.getFieldString(name);\n\t\t\t\tif(value.length < self.maxIndexedValueLength) {\n\t\t\t\t\tindexEntry[value] = indexEntry[value] || [];\n\t\t\t\t\tindexEntry[value].push(updateDescriptor[\"new\"].tiddler.fields.title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n// Lookup the given field returning a list of tiddler titles\nFieldIndexer.prototype.lookup = function(name,value) {\n\t// Fail the lookup if the value is too long\n\tif(value.length >= this.maxIndexedValueLength) {\n\t\treturn null;\n\t}\n\t// Update the index if it has yet to be built\n\tif(this.index === null || !this.index[name]) {\n\t\tthis.buildIndexForField(name);\n\t}\n\treturn this.index[name][value] || [];\n};\n\nexports.FieldIndexer = FieldIndexer;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "indexer"
        },
        "$:/core/modules/indexers/tag-indexer.js": {
            "title": "$:/core/modules/indexers/tag-indexer.js",
            "text": "/*\\\ntitle: $:/core/modules/indexers/tag-indexer.js\ntype: application/javascript\nmodule-type: indexer\n\nIndexes the tiddlers with each tag\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global modules: false */\n\"use strict\";\n\nfunction TagIndexer(wiki) {\n\tthis.wiki = wiki;\n}\n\nTagIndexer.prototype.init = function() {\n\tthis.subIndexers = [\n\t\tnew TagSubIndexer(this,\"each\"),\n\t\tnew TagSubIndexer(this,\"eachShadow\"),\n\t\tnew TagSubIndexer(this,\"eachTiddlerPlusShadows\"),\n\t\tnew TagSubIndexer(this,\"eachShadowPlusTiddlers\")\n\t];\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.addIndexMethod();\n\t});\n};\n\nTagIndexer.prototype.rebuild = function() {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.rebuild();\n\t});\n};\n\nTagIndexer.prototype.update = function(updateDescriptor) {\n\t$tw.utils.each(this.subIndexers,function(subIndexer) {\n\t\tsubIndexer.update(updateDescriptor);\n\t});\n};\n\nfunction TagSubIndexer(indexer,iteratorMethod) {\n\tthis.indexer = indexer;\n\tthis.iteratorMethod = iteratorMethod;\n\tthis.index = null; // Hashmap of tag title to {isSorted: bool, titles: [array]} or null if not yet initialised\n}\n\nTagSubIndexer.prototype.addIndexMethod = function() {\n\tvar self = this;\n\tthis.indexer.wiki[this.iteratorMethod].byTag = function(tag) {\n\t\treturn self.lookup(tag).slice(0);\n\t};\n};\n\nTagSubIndexer.prototype.rebuild = function() {\n\tvar self = this;\n\t// Hashmap by tag of array of {isSorted:, titles:[]}\n\tthis.index = Object.create(null);\n\t// Add all the tags\n\tthis.indexer.wiki[this.iteratorMethod](function(tiddler,title) {\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\tif(!self.index[tag]) {\n\t\t\t\tself.index[tag] = {isSorted: false, titles: [title]};\n\t\t\t} else {\n\t\t\t\tself.index[tag].titles.push(title);\n\t\t\t}\n\t\t});\t\t\n\t});\n};\n\nTagSubIndexer.prototype.update = function(updateDescriptor) {\n\tthis.index = null;\n};\n\nTagSubIndexer.prototype.lookup = function(tag) {\n\t// Update the index if it has yet to be built\n\tif(this.index === null) {\n\t\tthis.rebuild();\n\t}\n\tvar indexRecord = this.index[tag];\n\tif(indexRecord) {\n\t\tif(!indexRecord.isSorted) {\n\t\t\tif(this.indexer.wiki.sortByList) {\n\t\t\t\tindexRecord.titles = this.indexer.wiki.sortByList(indexRecord.titles,tag);\n\t\t\t}\t\t\t\n\t\t\tindexRecord.isSorted = true;\n\t\t}\n\t\treturn indexRecord.titles;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n\nexports.TagIndexer = TagIndexer;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "indexer"
        },
        "$:/core/modules/info/platform.js": {
            "title": "$:/core/modules/info/platform.js",
            "text": "/*\\\ntitle: $:/core/modules/info/platform.js\ntype: application/javascript\nmodule-type: info\n\nInitialise basic platform $:/info/ tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.getInfoTiddlerFields = function() {\n\tvar mapBoolean = function(value) {return value ? \"yes\" : \"no\";},\n\t\tinfoTiddlerFields = [];\n\t// Basics\n\tinfoTiddlerFields.push({title: \"$:/info/browser\", text: mapBoolean(!!$tw.browser)});\n\tinfoTiddlerFields.push({title: \"$:/info/node\", text: mapBoolean(!!$tw.node)});\n\tif($tw.browser) {\n\t\t// Document location\n\t\tvar setLocationProperty = function(name,value) {\n\t\t\t\tinfoTiddlerFields.push({title: \"$:/info/url/\" + name, text: value});\t\t\t\n\t\t\t},\n\t\t\tlocation = document.location;\n\t\tsetLocationProperty(\"full\", (location.toString()).split(\"#\")[0]);\n\t\tsetLocationProperty(\"host\", location.host);\n\t\tsetLocationProperty(\"hostname\", location.hostname);\n\t\tsetLocationProperty(\"protocol\", location.protocol);\n\t\tsetLocationProperty(\"port\", location.port);\n\t\tsetLocationProperty(\"pathname\", location.pathname);\n\t\tsetLocationProperty(\"search\", location.search);\n\t\tsetLocationProperty(\"origin\", location.origin);\n\t\t// Screen size\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/width\", text: window.screen.width.toString()});\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/screen/height\", text: window.screen.height.toString()});\n\t\t// Language\n\t\tinfoTiddlerFields.push({title: \"$:/info/browser/language\", text: navigator.language || \"\"});\n\t}\n\treturn infoTiddlerFields;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "info"
        },
        "$:/core/modules/keyboard.js": {
            "title": "$:/core/modules/keyboard.js",
            "text": "/*\\\ntitle: $:/core/modules/keyboard.js\ntype: application/javascript\nmodule-type: global\n\nKeyboard handling utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar namedKeys = {\n\t\"cancel\": 3,\n\t\"help\": 6,\n\t\"backspace\": 8,\n\t\"tab\": 9,\n\t\"clear\": 12,\n\t\"return\": 13,\n\t\"enter\": 13,\n\t\"pause\": 19,\n\t\"escape\": 27,\n\t\"space\": 32,\n\t\"page_up\": 33,\n\t\"page_down\": 34,\n\t\"end\": 35,\n\t\"home\": 36,\n\t\"left\": 37,\n\t\"up\": 38,\n\t\"right\": 39,\n\t\"down\": 40,\n\t\"printscreen\": 44,\n\t\"insert\": 45,\n\t\"delete\": 46,\n\t\"0\": 48,\n\t\"1\": 49,\n\t\"2\": 50,\n\t\"3\": 51,\n\t\"4\": 52,\n\t\"5\": 53,\n\t\"6\": 54,\n\t\"7\": 55,\n\t\"8\": 56,\n\t\"9\": 57,\n\t\"firefoxsemicolon\": 59,\n\t\"firefoxequals\": 61,\n\t\"a\": 65,\n\t\"b\": 66,\n\t\"c\": 67,\n\t\"d\": 68,\n\t\"e\": 69,\n\t\"f\": 70,\n\t\"g\": 71,\n\t\"h\": 72,\n\t\"i\": 73,\n\t\"j\": 74,\n\t\"k\": 75,\n\t\"l\": 76,\n\t\"m\": 77,\n\t\"n\": 78,\n\t\"o\": 79,\n\t\"p\": 80,\n\t\"q\": 81,\n\t\"r\": 82,\n\t\"s\": 83,\n\t\"t\": 84,\n\t\"u\": 85,\n\t\"v\": 86,\n\t\"w\": 87,\n\t\"x\": 88,\n\t\"y\": 89,\n\t\"z\": 90,\n\t\"numpad0\": 96,\n\t\"numpad1\": 97,\n\t\"numpad2\": 98,\n\t\"numpad3\": 99,\n\t\"numpad4\": 100,\n\t\"numpad5\": 101,\n\t\"numpad6\": 102,\n\t\"numpad7\": 103,\n\t\"numpad8\": 104,\n\t\"numpad9\": 105,\n\t\"multiply\": 106,\n\t\"add\": 107,\n\t\"separator\": 108,\n\t\"subtract\": 109,\n\t\"decimal\": 110,\n\t\"divide\": 111,\n\t\"f1\": 112,\n\t\"f2\": 113,\n\t\"f3\": 114,\n\t\"f4\": 115,\n\t\"f5\": 116,\n\t\"f6\": 117,\n\t\"f7\": 118,\n\t\"f8\": 119,\n\t\"f9\": 120,\n\t\"f10\": 121,\n\t\"f11\": 122,\n\t\"f12\": 123,\n\t\"f13\": 124,\n\t\"f14\": 125,\n\t\"f15\": 126,\n\t\"f16\": 127,\n\t\"f17\": 128,\n\t\"f18\": 129,\n\t\"f19\": 130,\n\t\"f20\": 131,\n\t\"f21\": 132,\n\t\"f22\": 133,\n\t\"f23\": 134,\n\t\"f24\": 135,\n\t\"firefoxminus\": 173,\n\t\"semicolon\": 186,\n\t\"equals\": 187,\n\t\"comma\": 188,\n\t\"dash\": 189,\n\t\"period\": 190,\n\t\"slash\": 191,\n\t\"backquote\": 192,\n\t\"openbracket\": 219,\n\t\"backslash\": 220,\n\t\"closebracket\": 221,\n\t\"quote\": 222\n};\n\nfunction KeyboardManager(options) {\n\tvar self = this;\n\toptions = options || \"\";\n\t// Save the named key hashmap\n\tthis.namedKeys = namedKeys;\n\t// Create a reverse mapping of code to keyname\n\tthis.keyNames = [];\n\t$tw.utils.each(namedKeys,function(keyCode,name) {\n\t\tself.keyNames[keyCode] = name.substr(0,1).toUpperCase() + name.substr(1);\n\t});\n\t// Save the platform-specific name of the \"meta\" key\n\tthis.metaKeyName = $tw.platform.isMac ? \"cmd-\" : \"win-\";\n\tthis.shortcutKeysList = [], // Stores the shortcut-key descriptors\n\tthis.shortcutActionList = [], // Stores the corresponding action strings\n\tthis.shortcutParsedList = []; // Stores the parsed key descriptors\n\tthis.lookupNames = [\"shortcuts\"];\n\tthis.lookupNames.push($tw.platform.isMac ? \"shortcuts-mac\" : \"shortcuts-not-mac\")\n\tthis.lookupNames.push($tw.platform.isWindows ? \"shortcuts-windows\" : \"shortcuts-not-windows\");\n\tthis.lookupNames.push($tw.platform.isLinux ? \"shortcuts-linux\" : \"shortcuts-not-linux\");\n\tthis.updateShortcutLists(this.getShortcutTiddlerList());\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tself.handleShortcutChanges(changes);\n\t});\n}\n\n/*\nReturn an array of keycodes for the modifier keys ctrl, shift, alt, meta\n*/\nKeyboardManager.prototype.getModifierKeys = function() {\n\treturn [\n\t\t16, // Shift\n\t\t17, // Ctrl\n\t\t18, // Alt\n\t\t20, // CAPS LOCK\n\t\t91, // Meta (left)\n\t\t93, // Meta (right)\n\t\t224 // Meta (Firefox)\n\t]\n};\n\n/*\nParses a key descriptor into the structure:\n{\n\tkeyCode: numeric keycode\n\tshiftKey: boolean\n\taltKey: boolean\n\tctrlKey: boolean\n\tmetaKey: boolean\n}\nKey descriptors have the following format:\n\tctrl+enter\n\tctrl+shift+alt+A\n*/\nKeyboardManager.prototype.parseKeyDescriptor = function(keyDescriptor) {\n\tvar components = keyDescriptor.split(/\\+|\\-/),\n\t\tinfo = {\n\t\t\tkeyCode: 0,\n\t\t\tshiftKey: false,\n\t\t\taltKey: false,\n\t\t\tctrlKey: false,\n\t\t\tmetaKey: false\n\t\t};\n\tfor(var t=0; t<components.length; t++) {\n\t\tvar s = components[t].toLowerCase(),\n\t\t\tc = s.charCodeAt(0);\n\t\t// Look for modifier keys\n\t\tif(s === \"ctrl\") {\n\t\t\tinfo.ctrlKey = true;\n\t\t} else if(s === \"shift\") {\n\t\t\tinfo.shiftKey = true;\n\t\t} else if(s === \"alt\") {\n\t\t\tinfo.altKey = true;\n\t\t} else if(s === \"meta\" || s === \"cmd\" || s === \"win\") {\n\t\t\tinfo.metaKey = true;\n\t\t}\n\t\t// Replace named keys with their code\n\t\tif(this.namedKeys[s]) {\n\t\t\tinfo.keyCode = this.namedKeys[s];\n\t\t}\n\t}\n\tif(info.keyCode) {\n\t\treturn info;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nParse a list of key descriptors into an array of keyInfo objects. The key descriptors can be passed as an array of strings or a space separated string\n*/\nKeyboardManager.prototype.parseKeyDescriptors = function(keyDescriptors,options) {\n\tvar self = this;\n\toptions = options || {};\n\toptions.stack = options.stack || [];\n\tvar wiki = options.wiki || $tw.wiki;\n\tif(typeof keyDescriptors === \"string\" && keyDescriptors === \"\") {\n\t\treturn [];\n\t}\n\tif(!$tw.utils.isArray(keyDescriptors)) {\n\t\tkeyDescriptors = keyDescriptors.split(\" \");\n\t}\n\tvar result = [];\n\t$tw.utils.each(keyDescriptors,function(keyDescriptor) {\n\t\t// Look for a named shortcut\n\t\tif(keyDescriptor.substr(0,2) === \"((\" && keyDescriptor.substr(-2,2) === \"))\") {\n\t\t\tif(options.stack.indexOf(keyDescriptor) === -1) {\n\t\t\t\toptions.stack.push(keyDescriptor);\n\t\t\t\tvar name = keyDescriptor.substring(2,keyDescriptor.length - 2),\n\t\t\t\t\tlookupName = function(configName) {\n\t\t\t\t\t\tvar keyDescriptors = wiki.getTiddlerText(\"$:/config/\" + configName + \"/\" + name);\n\t\t\t\t\t\tif(keyDescriptors) {\n\t\t\t\t\t\t\tresult.push.apply(result,self.parseKeyDescriptors(keyDescriptors,options));\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t$tw.utils.each(self.lookupNames,function(platformDescriptor) {\n\t\t\t\t\tlookupName(platformDescriptor);\n\t\t\t\t});\n\t\t\t}\n\t\t} else {\n\t\t\tresult.push(self.parseKeyDescriptor(keyDescriptor));\n\t\t}\n\t});\n\treturn result;\n};\n\nKeyboardManager.prototype.getPrintableShortcuts = function(keyInfoArray) {\n\tvar self = this,\n\t\tresult = [];\n\t$tw.utils.each(keyInfoArray,function(keyInfo) {\n\t\tif(keyInfo) {\n\t\t\tresult.push((keyInfo.ctrlKey ? \"ctrl-\" : \"\") + \n\t\t\t\t   (keyInfo.shiftKey ? \"shift-\" : \"\") + \n\t\t\t\t   (keyInfo.altKey ? \"alt-\" : \"\") + \n\t\t\t\t   (keyInfo.metaKey ? self.metaKeyName : \"\") + \n\t\t\t\t   (self.keyNames[keyInfo.keyCode]));\n\t\t}\n\t});\n\treturn result;\n}\n\nKeyboardManager.prototype.checkKeyDescriptor = function(event,keyInfo) {\n\treturn keyInfo &&\n\t\t\tevent.keyCode === keyInfo.keyCode && \n\t\t\tevent.shiftKey === keyInfo.shiftKey && \n\t\t\tevent.altKey === keyInfo.altKey && \n\t\t\tevent.ctrlKey === keyInfo.ctrlKey && \n\t\t\tevent.metaKey === keyInfo.metaKey;\n};\n\nKeyboardManager.prototype.checkKeyDescriptors = function(event,keyInfoArray) {\n\tfor(var t=0; t<keyInfoArray.length; t++) {\n\t\tif(this.checkKeyDescriptor(event,keyInfoArray[t])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.getShortcutTiddlerList = function() {\n\treturn $tw.wiki.getTiddlersWithTag(\"$:/tags/KeyboardShortcut\");\n};\n\nKeyboardManager.prototype.updateShortcutLists = function(tiddlerList) {\n\tthis.shortcutTiddlers = tiddlerList;\n\tfor(var i=0; i<tiddlerList.length; i++) {\n\t\tvar title = tiddlerList[i],\n\t\t\ttiddlerFields = $tw.wiki.getTiddler(title).fields;\n\t\tthis.shortcutKeysList[i] = tiddlerFields.key !== undefined ? tiddlerFields.key : undefined;\n\t\tthis.shortcutActionList[i] = tiddlerFields.text;\n\t\tthis.shortcutParsedList[i] = this.shortcutKeysList[i] !== undefined ? this.parseKeyDescriptors(this.shortcutKeysList[i]) : undefined;\n\t}\n};\n\nKeyboardManager.prototype.handleKeydownEvent = function(event) {\n\tvar key, action;\n\tfor(var i=0; i<this.shortcutTiddlers.length; i++) {\n\t\tif(this.shortcutParsedList[i] !== undefined && this.checkKeyDescriptors(event,this.shortcutParsedList[i])) {\n\t\t\tkey = this.shortcutParsedList[i];\n\t\t\taction = this.shortcutActionList[i];\n\t\t}\n\t}\n\tif(key !== undefined) {\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\t$tw.rootWidget.invokeActionString(action,$tw.rootWidget);\n\t\treturn true;\n\t}\n\treturn false;\n};\n\nKeyboardManager.prototype.detectNewShortcuts = function(changedTiddlers) {\n\tvar shortcutConfigTiddlers = [],\n\t\thandled = false;\n\t$tw.utils.each(this.lookupNames,function(platformDescriptor) {\n\t\tvar descriptorString = \"$:/config/\" + platformDescriptor + \"/\";\n\t\tObject.keys(changedTiddlers).forEach(function(configTiddler) {\n\t\t\tvar configString = configTiddler.substr(0, configTiddler.lastIndexOf(\"/\") + 1);\n\t\t\tif(configString === descriptorString) {\n\t\t\t\tshortcutConfigTiddlers.push(configTiddler);\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t});\n\t});\n\tif(handled) {\n\t\treturn $tw.utils.hopArray(changedTiddlers,shortcutConfigTiddlers);\n\t} else {\n\t\treturn false;\n\t}\n};\n\nKeyboardManager.prototype.handleShortcutChanges = function(changedTiddlers) {\n\tvar newList = this.getShortcutTiddlerList();\n\tvar hasChanged = $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers) ? true :\n\t\t($tw.utils.hopArray(changedTiddlers,newList) ? true :\n\t\t(this.detectNewShortcuts(changedTiddlers))\n\t);\n\t// Re-cache shortcuts if something changed\n\tif(hasChanged) {\n\t\tthis.updateShortcutLists(newList);\n\t}\n};\n\nexports.KeyboardManager = KeyboardManager;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/language.js": {
            "title": "$:/core/modules/language.js",
            "text": "/*\\\ntitle: $:/core/modules/language.js\ntype: application/javascript\nmodule-type: global\n\nThe $tw.Language() manages translateable strings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate an instance of the language manager. Options include:\nwiki: wiki from which to retrieve translation tiddlers\n*/\nfunction Language(options) {\n\toptions = options || \"\";\n\tthis.wiki = options.wiki || $tw.wiki;\n}\n\n/*\nReturn a wikified translateable string. The title is automatically prefixed with \"$:/language/\"\nOptions include:\nvariables: optional hashmap of variables to supply to the language wikification\n*/\nLanguage.prototype.getString = function(title,options) {\n\toptions = options || {};\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.renderTiddler(\"text/plain\",title,{variables: options.variables});\n};\n\n/*\nReturn a raw, unwikified translateable string. The title is automatically prefixed with \"$:/language/\"\n*/\nLanguage.prototype.getRawString = function(title) {\n\ttitle = \"$:/language/\" + title;\n\treturn this.wiki.getTiddlerText(title);\n};\n\nexports.Language = Language;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/macros/changecount.js": {
            "title": "$:/core/modules/macros/changecount.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/changecount.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the changecount for the current tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"changecount\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn this.wiki.getChangeCount(this.getVariable(\"currentTiddler\")) + \"\";\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/contrastcolour.js": {
            "title": "$:/core/modules/macros/contrastcolour.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/contrastcolour.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to choose which of two colours has the highest contrast with a base colour\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"contrastcolour\";\n\nexports.params = [\n\t{name: \"target\"},\n\t{name: \"fallbackTarget\"},\n\t{name: \"colourA\"},\n\t{name: \"colourB\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(target,fallbackTarget,colourA,colourB) {\n\tvar rgbTarget = $tw.utils.parseCSSColor(target) || $tw.utils.parseCSSColor(fallbackTarget);\n\tif(!rgbTarget) {\n\t\treturn colourA;\n\t}\n\tvar rgbColourA = $tw.utils.parseCSSColor(colourA),\n\t\trgbColourB = $tw.utils.parseCSSColor(colourB);\n\tif(rgbColourA && !rgbColourB) {\n\t\treturn rgbColourA;\n\t}\n\tif(rgbColourB && !rgbColourA) {\n\t\treturn rgbColourB;\n\t}\n\tif(!rgbColourA && !rgbColourB) {\n\t\t// If neither colour is readable, return a crude inverse of the target\n\t\treturn [255 - rgbTarget[0],255 - rgbTarget[1],255 - rgbTarget[2],rgbTarget[3]];\n\t}\n\t// Colour brightness formula derived from http://www.w3.org/WAI/ER/WD-AERT/#color-contrast\n\tvar brightnessTarget = rgbTarget[0] * 0.299 + rgbTarget[1] * 0.587 + rgbTarget[2] * 0.114,\n\t\tbrightnessA = rgbColourA[0] * 0.299 + rgbColourA[1] * 0.587 + rgbColourA[2] * 0.114,\n\t\tbrightnessB = rgbColourB[0] * 0.299 + rgbColourB[1] * 0.587 + rgbColourB[2] * 0.114;\n\treturn Math.abs(brightnessTarget - brightnessA) > Math.abs(brightnessTarget - brightnessB) ? colourA : colourB;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/csvtiddlers.js": {
            "title": "$:/core/modules/macros/csvtiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/csvtiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to CSV\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"csvtiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"format\"},\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,format) {\n\tvar self = this,\n\t\ttiddlers = this.wiki.filterTiddlers(filter),\n\t\ttiddler,\n\t\tfields = [],\n\t\tt,f;\n\t// Collect all the fields\n\tfor(t=0;t<tiddlers.length; t++) {\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\tfor(f in tiddler.fields) {\n\t\t\tif(fields.indexOf(f) === -1) {\n\t\t\t\tfields.push(f);\n\t\t\t}\n\t\t}\n\t}\n\t// Sort the fields and bring the standard ones to the front\n\tfields.sort();\n\t\"title text modified modifier created creator\".split(\" \").reverse().forEach(function(value,index) {\n\t\tvar p = fields.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tfields.splice(p,1);\n\t\t\tfields.unshift(value)\n\t\t}\n\t});\n\t// Output the column headings\n\tvar output = [], row = [];\n\tfields.forEach(function(value) {\n\t\trow.push(quoteAndEscape(value))\n\t});\n\toutput.push(row.join(\",\"));\n\t// Output each tiddler\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\trow = [];\n\t\ttiddler = this.wiki.getTiddler(tiddlers[t]);\n\t\t\tfor(f=0; f<fields.length; f++) {\n\t\t\t\trow.push(quoteAndEscape(tiddler ? tiddler.getFieldString(fields[f]) || \"\" : \"\"));\n\t\t\t}\n\t\toutput.push(row.join(\",\"));\n\t}\n\treturn output.join(\"\\n\");\n};\n\nfunction quoteAndEscape(value) {\n\treturn \"\\\"\" + value.replace(/\"/mg,\"\\\"\\\"\") + \"\\\"\";\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/displayshortcuts.js": {
            "title": "$:/core/modules/macros/displayshortcuts.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/displayshortcuts.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to display a list of keyboard shortcuts in human readable form. Notably, it resolves named shortcuts like `((bold))` to the underlying keystrokes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"displayshortcuts\";\n\nexports.params = [\n\t{name: \"shortcuts\"},\n\t{name: \"prefix\"},\n\t{name: \"separator\"},\n\t{name: \"suffix\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(shortcuts,prefix,separator,suffix) {\n\tvar shortcutArray = $tw.keyboardManager.getPrintableShortcuts($tw.keyboardManager.parseKeyDescriptors(shortcuts,{\n\t\twiki: this.wiki\n\t}));\n\tif(shortcutArray.length > 0) {\n\t\tshortcutArray.sort(function(a,b) {\n\t\t    return a.toLowerCase().localeCompare(b.toLowerCase());\n\t\t})\n\t\treturn prefix + shortcutArray.join(separator) + suffix;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/jsontiddler.js": {
            "title": "$:/core/modules/macros/jsontiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/jsontiddler.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output a single tiddler to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddler\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\ttitle = title || this.getVariable(\"currentTiddler\");\n\tvar tiddler = !!title && this.wiki.getTiddler(title),\n\t\tfields = new Object();\n\tif(tiddler) {\n\t\tfor(var field in tiddler.fields) {\n\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t}\n\t}\n\treturn JSON.stringify(fields,null,$tw.config.preferences.jsonSpaces);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/jsontiddlers.js": {
            "title": "$:/core/modules/macros/jsontiddlers.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/jsontiddlers.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to output tiddlers matching a filter to JSON\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"jsontiddlers\";\n\nexports.params = [\n\t{name: \"filter\"},\n\t{name: \"spaces\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(filter,spaces) {\n\treturn this.wiki.getTiddlersAsJson(filter,$tw.utils.parseInt(spaces));\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/makedatauri.js": {
            "title": "$:/core/modules/macros/makedatauri.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/makedatauri.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to convert a string of text to a data URI\n\n<<makedatauri text:\"Text to be converted\" type:\"text/vnd.tiddlywiki\">>\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"makedatauri\";\n\nexports.params = [\n\t{name: \"text\"},\n\t{name: \"type\"},\n\t{name: \"_canonical_uri\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(text,type,_canonical_uri) {\n\treturn $tw.utils.makeDataUri(text,type,_canonical_uri);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/now.js": {
            "title": "$:/core/modules/macros/now.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/now.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return a formatted version of the current time\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"now\";\n\nexports.params = [\n\t{name: \"format\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(format) {\n\treturn $tw.utils.formatDateString(new Date(),format || \"0hh:0mm, DDth MMM YYYY\");\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/qualify.js": {
            "title": "$:/core/modules/macros/qualify.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/qualify.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to qualify a state tiddler title according\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"qualify\";\n\nexports.params = [\n\t{name: \"title\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(title) {\n\treturn title + \"-\" + this.getStateQualifier();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/resolvepath.js": {
            "title": "$:/core/modules/macros/resolvepath.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/resolvepath.js\ntype: application/javascript\nmodule-type: macro\n\nResolves a relative path for an absolute rootpath.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"resolvepath\";\n\nexports.params = [\n\t{name: \"source\"},\n\t{name: \"root\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(source, root) {\n\treturn $tw.utils.resolvePath(source, root);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/unusedtitle.js": {
            "title": "$:/core/modules/macros/unusedtitle.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/unusedtitle.js\ntype: application/javascript\nmodule-type: macro\nMacro to return a new title that is unused in the wiki. It can be given a name as a base.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"unusedtitle\";\n\nexports.params = [\n\t{name: \"baseName\"},\n\t{name: \"options\"}\n];\n\n/*\nRun the macro\n*/\nexports.run = function(baseName, options) {\n\tif(!baseName) {\n\t\tbaseName = $tw.language.getString(\"DefaultNewTiddlerTitle\");\n\t}\n\treturn this.wiki.generateNewTitle(baseName, options);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/macros/version.js": {
            "title": "$:/core/modules/macros/version.js",
            "text": "/*\\\ntitle: $:/core/modules/macros/version.js\ntype: application/javascript\nmodule-type: macro\n\nMacro to return the TiddlyWiki core version number\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInformation about this macro\n*/\n\nexports.name = \"version\";\n\nexports.params = [];\n\n/*\nRun the macro\n*/\nexports.run = function() {\n\treturn $tw.version;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "macro"
        },
        "$:/core/modules/parsers/audioparser.js": {
            "title": "$:/core/modules/parsers/audioparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/audioparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe audio parser parses an audio tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar AudioParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"audio\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"audio/ogg\"] = AudioParser;\nexports[\"audio/mpeg\"] = AudioParser;\nexports[\"audio/mp3\"] = AudioParser;\nexports[\"audio/mp4\"] = AudioParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/binaryparser.js": {
            "title": "$:/core/modules/parsers/binaryparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/binaryparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe binary parser parses a binary tiddler into a warning message and download link\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar BinaryParser = function(type,text,options) {\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on binary tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!title\"}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to external or internal data URI\n\tif(options._canonical_uri) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: options._canonical_uri\n\t\t};\n\t} else if(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/octet-stream\"] = BinaryParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/csvparser.js": {
            "title": "$:/core/modules/parsers/csvparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/csvparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe CSV text parser processes CSV files into a table wrapped in a scrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar CsvParser = function(type,text,options) {\n\t// Table framework\n\tthis.tree = [{\n\t\t\"type\": \"scrollable\", \"children\": [{\n\t\t\t\"type\": \"element\", \"tag\": \"table\", \"children\": [{\n\t\t\t\t\"type\": \"element\", \"tag\": \"tbody\", \"children\": []\n\t\t\t}], \"attributes\": {\n\t\t\t\t\"class\": {\"type\": \"string\", \"value\": \"tc-csv-table\"}\n\t\t\t}\n\t\t}]\n\t}];\n\t// Split the text into lines\n\tvar lines = text.split(/\\r?\\n/mg),\n\t\ttag = \"th\";\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar lineText = lines[line];\n\t\tif(lineText) {\n\t\t\tvar row = {\n\t\t\t\t\t\"type\": \"element\", \"tag\": \"tr\", \"children\": []\n\t\t\t\t};\n\t\t\tvar columns = lineText.split(\",\");\n\t\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\t\trow.children.push({\n\t\t\t\t\t\t\"type\": \"element\", \"tag\": tag, \"children\": [{\n\t\t\t\t\t\t\t\"type\": \"text\",\n\t\t\t\t\t\t\t\"text\": columns[column]\n\t\t\t\t\t\t}]\n\t\t\t\t\t});\n\t\t\t}\n\t\t\ttag = \"td\";\n\t\t\tthis.tree[0].children[0].children[0].children.push(row);\n\t\t}\n\t}\n};\n\nexports[\"text/csv\"] = CsvParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/htmlparser.js": {
            "title": "$:/core/modules/parsers/htmlparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/htmlparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe HTML parser displays text as raw HTML\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar HtmlParser = function(type,text,options) {\n\tvar src;\n\tif(options._canonical_uri) {\n\t\tsrc = options._canonical_uri;\n\t} else if(text) {\n\t\tsrc = \"data:text/html;charset=utf-8,\" + encodeURIComponent(text);\n\t}\n\tthis.tree = [{\n\t\ttype: \"element\",\n\t\ttag: \"iframe\",\n\t\tattributes: {\n\t\t\tsrc: {type: \"string\", value: src},\n\t\t\tsandbox: {type: \"string\", value: \"\"}\n\t\t}\n\t}];\n};\n\nexports[\"text/html\"] = HtmlParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/imageparser.js": {
            "title": "$:/core/modules/parsers/imageparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/imageparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe image parser parses an image into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"img\",\n\t\t\tattributes: {}\n\t\t};\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\tif(type === \"image/svg+xml\" || type === \".svg\") {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:image/svg+xml,\" + encodeURIComponent(text)};\n\t\t} else {\n\t\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t\t}\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"image/svg+xml\"] = ImageParser;\nexports[\"image/jpg\"] = ImageParser;\nexports[\"image/jpeg\"] = ImageParser;\nexports[\"image/png\"] = ImageParser;\nexports[\"image/gif\"] = ImageParser;\nexports[\"image/webp\"] = ImageParser;\nexports[\"image/heic\"] = ImageParser;\nexports[\"image/heif\"] = ImageParser;\nexports[\"image/x-icon\"] = ImageParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/utils/parseutils.js": {
            "title": "$:/core/modules/utils/parseutils.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/parseutils.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions concerned with parsing text into tokens.\n\nMost functions have the following pattern:\n\n* The parameters are:\n** `source`: the source string being parsed\n** `pos`: the current parse position within the string\n** Any further parameters are used to identify the token that is being parsed\n* The return value is:\n** null if the token was not found at the specified position\n** an object representing the token with the following standard fields:\n*** `type`: string indicating the type of the token\n*** `start`: start position of the token in the source string\n*** `end`: end position of the token in the source string\n*** Any further fields required to describe the token\n\nThe exception is `skipWhiteSpace`, which just returns the position after the whitespace.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for a whitespace token. Returns null if not found, otherwise returns {type: \"whitespace\", start:, end:,}\n*/\nexports.parseWhiteSpace = function(source,pos) {\n\tvar p = pos,c;\n\twhile(true) {\n\t\tc = source.charAt(p);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tp++;\n\t\t} else {\n\t\t\tbreak;\n\t\t}\n\t}\n\tif(p === pos) {\n\t\treturn null;\n\t} else {\n\t\treturn {\n\t\t\ttype: \"whitespace\",\n\t\t\tstart: pos,\n\t\t\tend: p\n\t\t}\n\t}\n};\n\n/*\nConvenience wrapper for parseWhiteSpace. Returns the position after the whitespace\n*/\nexports.skipWhiteSpace = function(source,pos) {\n\tvar c;\n\twhile(true) {\n\t\tc = source.charAt(pos);\n\t\tif((c === \" \") || (c === \"\\f\") || (c === \"\\n\") || (c === \"\\r\") || (c === \"\\t\") || (c === \"\\v\") || (c === \"\\u00a0\")) { // Ignores some obscure unicode spaces\n\t\t\tpos++;\n\t\t} else {\n\t\t\treturn pos;\n\t\t}\n\t}\n};\n\n/*\nLook for a given string token. Returns null if not found, otherwise returns {type: \"token\", value:, start:, end:,}\n*/\nexports.parseTokenString = function(source,pos,token) {\n\tvar match = source.indexOf(token,pos) === pos;\n\tif(match) {\n\t\treturn {\n\t\t\ttype: \"token\",\n\t\t\tvalue: token,\n\t\t\tstart: pos,\n\t\t\tend: pos + token.length\n\t\t};\n\t}\n\treturn null;\n};\n\n/*\nLook for a token matching a regex. Returns null if not found, otherwise returns {type: \"regexp\", match:, start:, end:,}\n*/\nexports.parseTokenRegExp = function(source,pos,reToken) {\n\tvar node = {\n\t\ttype: \"regexp\",\n\t\tstart: pos\n\t};\n\treToken.lastIndex = pos;\n\tnode.match = reToken.exec(source);\n\tif(node.match && node.match.index === pos) {\n\t\tnode.end = pos + node.match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a string literal. Returns null if not found, otherwise returns {type: \"string\", value:, start:, end:,}\n*/\nexports.parseStringLiteral = function(source,pos) {\n\tvar node = {\n\t\ttype: \"string\",\n\t\tstart: pos\n\t};\n\tvar reString = /(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\")|(?:'([^']*)')/g;\n\treString.lastIndex = pos;\n\tvar match = reString.exec(source);\n\tif(match && match.index === pos) {\n\t\tnode.value = match[1] !== undefined ? match[1] :(\n\t\t\tmatch[2] !== undefined ? match[2] : match[3] \n\t\t\t\t\t);\n\t\tnode.end = pos + match[0].length;\n\t\treturn node;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLook for a macro invocation parameter. Returns null if not found, or {type: \"macro-parameter\", name:, value:, start:, end:}\n*/\nexports.parseMacroParameter = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macro-parameter\",\n\t\tstart: pos\n\t};\n\t// Define our regexp\n\tvar reMacroParameter = /(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\\s>\"'=]+)))/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the parameter\n\tvar token = $tw.utils.parseTokenRegExp(source,pos,reMacroParameter);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the parameter details\n\tnode.value = token.match[2] !== undefined ? token.match[2] : (\n\t\t\t\t\ttoken.match[3] !== undefined ? token.match[3] : (\n\t\t\t\t\t\ttoken.match[4] !== undefined ? token.match[4] : (\n\t\t\t\t\t\t\ttoken.match[5] !== undefined ? token.match[5] : (\n\t\t\t\t\t\t\t\ttoken.match[6] !== undefined ? token.match[6] : (\n\t\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t)\n\t\t\t\t);\n\tif(token.match[1]) {\n\t\tnode.name = token.match[1];\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for a macro invocation. Returns null if not found, or {type: \"macrocall\", name:, parameters:, start:, end:}\n*/\nexports.parseMacroInvocation = function(source,pos) {\n\tvar node = {\n\t\ttype: \"macrocall\",\n\t\tstart: pos,\n\t\tparams: []\n\t};\n\t// Define our regexps\n\tvar reMacroName = /([^\\s>\"'=]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double less than sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"<<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the macro name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reMacroName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Process parameters\n\tvar parameter = $tw.utils.parseMacroParameter(source,pos);\n\twhile(parameter) {\n\t\tnode.params.push(parameter);\n\t\tpos = parameter.end;\n\t\t// Get the next parameter\n\t\tparameter = $tw.utils.parseMacroParameter(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a double greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">>\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n/*\nLook for an HTML attribute definition. Returns null if not found, otherwise returns {type: \"attribute\", name:, valueType: \"string|indirect|macro\", value:, start:, end:,}\n*/\nexports.parseAttribute = function(source,pos) {\n\tvar node = {\n\t\tstart: pos\n\t};\n\t// Define our regexps\n\tvar reAttributeName = /([^\\/\\s>\"'=]+)/g,\n\t\treUnquotedAttribute = /([^\\/\\s<>\"'=]+)/g,\n\t\treFilteredValue = /\\{\\{\\{(.+?)\\}\\}\\}/g,\n\t\treIndirectValue = /\\{\\{([^\\}]+)\\}\\}/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the attribute name\n\tvar name = $tw.utils.parseTokenRegExp(source,pos,reAttributeName);\n\tif(!name) {\n\t\treturn null;\n\t}\n\tnode.name = name.match[1];\n\tpos = name.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for an equals sign\n\tvar token = $tw.utils.parseTokenString(source,pos,\"=\");\n\tif(token) {\n\t\tpos = token.end;\n\t\t// Skip whitespace\n\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t// Look for a string literal\n\t\tvar stringLiteral = $tw.utils.parseStringLiteral(source,pos);\n\t\tif(stringLiteral) {\n\t\t\tpos = stringLiteral.end;\n\t\t\tnode.type = \"string\";\n\t\t\tnode.value = stringLiteral.value;\n\t\t} else {\n\t\t\t// Look for a filtered value\n\t\t\tvar filteredValue = $tw.utils.parseTokenRegExp(source,pos,reFilteredValue);\n\t\t\tif(filteredValue) {\n\t\t\t\tpos = filteredValue.end;\n\t\t\t\tnode.type = \"filtered\";\n\t\t\t\tnode.filter = filteredValue.match[1];\n\t\t\t} else {\n\t\t\t\t// Look for an indirect value\n\t\t\t\tvar indirectValue = $tw.utils.parseTokenRegExp(source,pos,reIndirectValue);\n\t\t\t\tif(indirectValue) {\n\t\t\t\t\tpos = indirectValue.end;\n\t\t\t\t\tnode.type = \"indirect\";\n\t\t\t\t\tnode.textReference = indirectValue.match[1];\n\t\t\t\t} else {\n\t\t\t\t\t// Look for a unquoted value\n\t\t\t\t\tvar unquotedValue = $tw.utils.parseTokenRegExp(source,pos,reUnquotedAttribute);\n\t\t\t\t\tif(unquotedValue) {\n\t\t\t\t\t\tpos = unquotedValue.end;\n\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\tnode.value = unquotedValue.match[1];\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Look for a macro invocation value\n\t\t\t\t\t\tvar macroInvocation = $tw.utils.parseMacroInvocation(source,pos);\n\t\t\t\t\t\tif(macroInvocation) {\n\t\t\t\t\t\t\tpos = macroInvocation.end;\n\t\t\t\t\t\t\tnode.type = \"macro\";\n\t\t\t\t\t\t\tnode.value = macroInvocation;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tnode.type = \"string\";\n\t\t\t\t\t\t\tnode.value = \"true\";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t} else {\n\t\tnode.type = \"string\";\n\t\tnode.value = \"true\";\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/parsers/pdfparser.js": {
            "title": "$:/core/modules/parsers/pdfparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/pdfparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe PDF parser embeds a PDF viewer\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ImageParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"embed\",\n\t\t\tattributes: {}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:application/pdf;base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"application/pdf\"] = ImageParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/textparser.js": {
            "title": "$:/core/modules/parsers/textparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/textparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe plain text parser processes blocks of source text into a degenerate parse tree consisting of a single text node\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar TextParser = function(type,text,options) {\n\tthis.tree = [{\n\t\ttype: \"codeblock\",\n\t\tattributes: {\n\t\t\tcode: {type: \"string\", value: text},\n\t\t\tlanguage: {type: \"string\", value: type}\n\t\t}\n\t}];\n};\n\nexports[\"text/plain\"] = TextParser;\nexports[\"text/x-tiddlywiki\"] = TextParser;\nexports[\"application/javascript\"] = TextParser;\nexports[\"application/json\"] = TextParser;\nexports[\"text/css\"] = TextParser;\nexports[\"application/x-tiddler-dictionary\"] = TextParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/videoparser.js": {
            "title": "$:/core/modules/parsers/videoparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/videoparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe video parser parses a video tiddler into an embeddable HTML element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar VideoParser = function(type,text,options) {\n\tvar element = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"video\",\n\t\t\tattributes: {\n\t\t\t\tcontrols: {type: \"string\", value: \"controls\"},\n\t\t\t\tstyle: {type: \"string\", value: \"width: 100%; object-fit: contain\"}\n\t\t\t}\n\t\t},\n\t\tsrc;\n\tif(options._canonical_uri) {\n\t\telement.attributes.src = {type: \"string\", value: options._canonical_uri};\n\t} else if(text) {\n\t\telement.attributes.src = {type: \"string\", value: \"data:\" + type + \";base64,\" + text};\n\t}\n\tthis.tree = [element];\n};\n\nexports[\"video/ogg\"] = VideoParser;\nexports[\"video/webm\"] = VideoParser;\nexports[\"video/mp4\"] = VideoParser;\nexports[\"video/quicktime\"] = VideoParser;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/wikiparser/rules/codeblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/codeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for code blocks. For example:\n\n```\n\t```\n\tThis text will not be //wikified//\n\t```\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match and get language if defined\n\tthis.matchRegExp = /```([\\w-]*)\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\\r?\\n```$)/mg;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Return the $codeblock widget\n\treturn [{\n\t\t\ttype: \"codeblock\",\n\t\t\tattributes: {\n\t\t\t\t\tcode: {type: \"string\", value: text},\n\t\t\t\t\tlanguage: {type: \"string\", value: this.match[1]}\n\t\t\t}\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/codeinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/codeinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/codeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for code runs. For example:\n\n```\n\tThis is a `code run`.\n\tThis is another ``code run``\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"codeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(``?)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar reEnd = new RegExp(this.match[1], \"mg\");\n\t// Look for the end marker\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the text\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"code\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: text\n\t\t}]\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/commentblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/commentblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/commentinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/commentinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/commentinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML comments. For example:\n\n```\n<!-- This is a comment -->\n```\n\nNote that the syntax for comments is simplified to an opening \"<!--\" sequence and a closing \"-->\" sequence -- HTML itself implements a more complex format (see http://ostermiller.org/findhtmlcomment.html)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"commentinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\tthis.matchRegExp = /<!--/mg;\n\tthis.endMatchRegExp = /-->/mg;\n};\n\nexports.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\tif(this.match) {\n\t\tthis.endMatchRegExp.lastIndex = startPos + this.match[0].length;\n\t\tthis.endMatch = this.endMatchRegExp.exec(this.parser.source);\n\t\tif(this.endMatch) {\n\t\t\treturn this.match.index;\n\t\t}\n\t}\n\treturn undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\t// Don't return any elements\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/dash.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/dash.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/dash.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for dashes. For example:\n\n```\nThis is an en-dash: --\n\nThis is an em-dash: ---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"dash\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{2,3}(?!-)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar dash = this.match[0].length === 2 ? \"&ndash;\" : \"&mdash;\";\n\treturn [{\n\t\ttype: \"entity\",\n\t\tentity: dash\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/bold.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/bold.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - bold. For example:\n\n```\n\tThis is ''bold'' text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except bold \n\\rules only bold \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"bold\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /''/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/''/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strong\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/italic.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/italic.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - italic. For example:\n\n```\n\tThis is //italic// text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except italic\n\\rules only italic\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"italic\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\/\\//mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\/\\//mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"em\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/strikethrough.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - strikethrough. For example:\n\n```\n\tThis is ~~strikethrough~~ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except strikethrough \n\\rules only strikethrough \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"strikethrough\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~~/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/~~/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"strike\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/subscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - subscript. For example:\n\n```\n\tThis is ,,subscript,, text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except subscript \n\\rules only subscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"subscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /,,/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/,,/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sub\",\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/superscript.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - superscript. For example:\n\n```\n\tThis is ^^superscript^^ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except superscript \n\\rules only superscript \n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"superscript\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\^\\^/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/\\^\\^/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"sup\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/emphasis/underscore.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for emphasis - underscore. For example:\n\n```\n\tThis is __underscore__ text\n```\n\nThis wikiparser can be modified using the rules eg:\n\n```\n\\rules except underscore \n\\rules only underscore\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"underscore\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /__/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\n\t// Parse the run including the terminator\n\tvar tree = this.parser.parseInlineRun(/__/mg,{eatTerminator: true});\n\n\t// Return the classed span\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"u\",\n\t\tchildren: tree\n\t}];\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/entity.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/entity.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/entity.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for HTML entities. For example:\n\n```\n\tThis is a copyright symbol: &copy;\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"entity\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(&#?[a-zA-Z0-9]{2,8};)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar entityString = this.match[1];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Return the entity\n\treturn [{type: \"entity\", entity: this.match[0]}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/extlink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/extlink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/extlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\nAn external link: https://www.tiddlywiki.com/\n\nA suppressed external link: ~http://www.tiddlyspace.com/\n```\n\nExternal links can be suppressed by preceding them with `~`.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"extlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /~?(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(this.match[0].substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: this.match[0].substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: this.match[0]},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: this.match[0]\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t},\n\t\tisBlock: true\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/filteredtranscludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline filtered transclusion. For example:\n\n```\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"filteredtranscludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{\\{([^\\|]+?)(?:\\|([^\\|\\{\\}]+))?(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}([^\\}]*)\\}(?:\\.(\\S+))?/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar filter = this.match[1],\n\t\ttooltip = this.match[2],\n\t\ttemplate = $tw.utils.trim(this.match[3]),\n\t\tstyle = this.match[4],\n\t\tclasses = this.match[5];\n\t// Return the list widget\n\tvar node = {\n\t\ttype: \"list\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: filter}\n\t\t}\n\t};\n\tif(tooltip) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: tooltip};\n\t}\n\tif(template) {\n\t\tnode.attributes.template = {type: \"string\", value: template};\n\t}\n\tif(style) {\n\t\tnode.attributes.style = {type: \"string\", value: style};\n\t}\n\tif(classes) {\n\t\tnode.attributes.itemClass = {type: \"string\", value: classes.split(\".\").join(\" \")};\n\t}\n\treturn [node];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/hardlinebreaks.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for marking areas with hard line breaks. For example:\n\n```\n\"\"\"\nThis is some text\nThat is set like\nIt is a Poem\nWhen it is\nClearly\nNot\n\"\"\"\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"hardlinebreaks\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\"\"\"(?:\\r?\\n)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /(\"\"\")|(\\r?\\n)/mg,\n\t\ttree = [],\n\t\tmatch;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tdo {\n\t\t// Parse the run up to the terminator\n\t\ttree.push.apply(tree,this.parser.parseInlineRun(reEnd,{eatTerminator: false}));\n\t\t// Redo the terminator match\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tmatch = reEnd.exec(this.parser.source);\n\t\tif(match) {\n\t\t\tthis.parser.pos = reEnd.lastIndex;\n\t\t\t// Add a line break if the terminator was a line break\n\t\t\tif(match[2]) {\n\t\t\t\ttree.push({type: \"element\", tag: \"br\"});\n\t\t\t}\n\t\t}\n\t} while(match && !match[1]);\n\t// Return the nodes\n\treturn tree;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/heading.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/heading.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/heading.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for headings\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"heading\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(!{1,6})/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar headingLevel = this.match[1].length;\n\t// Move past the !s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse any classes, whitespace and then the heading itself\n\tvar classes = this.parser.parseClasses();\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// Return the heading\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"h\" + headingLevel, \n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: classes.join(\" \")}\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/horizrule.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/horizrule.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/horizrule.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for rules. For example:\n\n```\n---\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"horizrule\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /-{3,}\\r?(?:\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\treturn [{type: \"element\", tag: \"hr\"}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/html.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/html.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/html.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for HTML elements and widgets. For example:\n\n{{{\n<aside>\nThis is an HTML5 aside element\n</aside>\n\n<$slider target=\"MyTiddler\">\nThis is a widget invocation\n</$slider>\n\n}}}\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"html\";\nexports.types = {inline: true, block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextTag = this.findNextTag(this.parser.source,startPos,{\n\t\trequireLineBreak: this.is.block\n\t});\n\treturn this.nextTag ? this.nextTag.start : undefined;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Retrieve the most recent match so that recursive calls don't overwrite it\n\tvar tag = this.nextTag;\n\tthis.nextTag = null;\n\t// Advance the parser position to past the tag\n\tthis.parser.pos = tag.end;\n\t// Check for an immediately following double linebreak\n\tvar hasLineBreak = !tag.isSelfClosing && !!$tw.utils.parseTokenRegExp(this.parser.source,this.parser.pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t// Set whether we're in block mode\n\ttag.isBlock = this.is.block || hasLineBreak;\n\t// Parse the body if we need to\n\tif(!tag.isSelfClosing && $tw.config.htmlVoidElements.indexOf(tag.tag) === -1) {\n\t\t\tvar reEndString = \"</\" + $tw.utils.escapeRegExp(tag.tag) + \">\",\n\t\t\t\treEnd = new RegExp(\"(\" + reEndString + \")\",\"mg\");\n\t\tif(hasLineBreak) {\n\t\t\ttag.children = this.parser.parseBlocks(reEndString);\n\t\t} else {\n\t\t\ttag.children = this.parser.parseInlineRun(reEnd);\n\t\t}\n\t\treEnd.lastIndex = this.parser.pos;\n\t\tvar endMatch = reEnd.exec(this.parser.source);\n\t\tif(endMatch && endMatch.index === this.parser.pos) {\n\t\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t\t}\n\t}\n\t// Return the tag\n\treturn [tag];\n};\n\n/*\nLook for an HTML tag. Returns null if not found, otherwise returns {type: \"element\", name:, attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseTag = function(source,pos,options) {\n\toptions = options || {};\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Define our regexps\n\tvar reTagName = /([a-zA-Z0-9\\-\\$]+)/g;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a less than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\"<\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Get the tag name\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,reTagName);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tnode.tag = token.match[1];\n\tif(node.tag.slice(1).indexOf(\"$\") !== -1) {\n\t\treturn null;\n\t}\n\tif(node.tag.charAt(0) === \"$\") {\n\t\tnode.type = node.tag.substr(1);\n\t}\n\tpos = token.end;\n\t// Check that the tag is terminated by a space, / or >\n\tif(!$tw.utils.parseWhiteSpace(source,pos) && !(source.charAt(pos) === \"/\") && !(source.charAt(pos) === \">\") ) {\n\t\treturn null;\n\t}\n\t// Process attributes\n\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\twhile(attribute) {\n\t\tnode.attributes[attribute.name] = attribute;\n\t\tpos = attribute.end;\n\t\t// Get the next attribute\n\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for a closing slash\n\ttoken = $tw.utils.parseTokenString(source,pos,\"/\");\n\tif(token) {\n\t\tpos = token.end;\n\t\tnode.isSelfClosing = true;\n\t}\n\t// Look for a greater than sign\n\ttoken = $tw.utils.parseTokenString(source,pos,\">\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Check for a required line break\n\tif(options.requireLineBreak) {\n\t\ttoken = $tw.utils.parseTokenRegExp(source,pos,/([^\\S\\n\\r]*\\r?\\n(?:[^\\S\\n\\r]*\\r?\\n|$))/g);\n\t\tif(!token) {\n\t\t\treturn null;\n\t\t}\n\t}\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\nexports.findNextTag = function(source,pos,options) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /<([a-zA-Z\\-\\$]+)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseTag(source,match.index,options);\n\t\t// Return success\n\t\tif(tag && this.isLegalTag(tag)) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\nexports.isLegalTag = function(tag) {\n\t// Widgets are always OK\n\tif(tag.type !== \"element\") {\n\t\treturn true;\n\t// If it's an HTML tag that starts with a dash then it's not legal\n\t} else if(tag.tag.charAt(0) === \"-\") {\n\t\treturn false;\n\t} else {\n\t\t// Otherwise it's OK\n\t\treturn true;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/image.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/image.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/image.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for embedding images. For example:\n\n```\n[img[https://tiddlywiki.com/fractalveg.jpg]]\n[img width=23 height=24 [https://tiddlywiki.com/fractalveg.jpg]]\n[img width={{!!width}} height={{!!height}} [https://tiddlywiki.com/fractalveg.jpg]]\n[img[Description of image|https://tiddlywiki.com/fractalveg.jpg]]\n[img[TiddlerTitle]]\n[img[Description of image|TiddlerTitle]]\n```\n\nGenerates the `<$image>` widget.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"image\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextImage = this.findNextImage(this.parser.source,startPos);\n\treturn this.nextImage ? this.nextImage.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextImage.end;\n\tvar node = {\n\t\ttype: \"image\",\n\t\tattributes: this.nextImage.attributes\n\t};\n\treturn [node];\n};\n\n/*\nFind the next image from the current position\n*/\nexports.findNextImage = function(source,pos) {\n\t// A regexp for finding candidate HTML tags\n\tvar reLookahead = /(\\[img)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a tag\n\t\tvar tag = this.parseImage(source,match.index);\n\t\t// Return success\n\t\tif(tag) {\n\t\t\treturn tag;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an image at the specified position. Returns null if not found, otherwise returns {type: \"image\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseImage = function(source,pos) {\n\tvar token,\n\t\tnode = {\n\t\t\ttype: \"image\",\n\t\t\tstart: pos,\n\t\t\tattributes: {}\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[img`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[img\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Process attributes\n\tif(source.charAt(pos) !== \"[\") {\n\t\tvar attribute = $tw.utils.parseAttribute(source,pos);\n\t\twhile(attribute) {\n\t\t\tnode.attributes[attribute.name] = attribute;\n\t\t\tpos = attribute.end;\n\t\t\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t\t\tif(source.charAt(pos) !== \"[\") {\n\t\t\t\t// Get the next attribute\n\t\t\t\tattribute = $tw.utils.parseAttribute(source,pos);\n\t\t\t} else {\n\t\t\t\tattribute = null;\n\t\t\t}\n\t\t}\n\t}\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[` after the attributes\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Get the source up to the terminating `]]`\n\ttoken = $tw.utils.parseTokenRegExp(source,pos,/(?:([^|\\]]*?)\\|)?([^\\]]+?)\\]\\]/g);\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\tif(token.match[1]) {\n\t\tnode.attributes.tooltip = {type: \"string\", value: token.match[1].trim()};\n\t}\n\tnode.attributes.source = {type: \"string\", value: (token.match[2] || \"\").trim()};\n\t// Update the end position\n\tnode.end = pos;\n\treturn node;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/import.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/import.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/import.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for importing variable definitions\n\n```\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"import\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\import[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the filter terminated by a line break\n\tvar reMatch = /(.*)(\\r?\\n)|$/mg;\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\tthis.parser.pos = reMatch.lastIndex;\n\t// Parse tree nodes to return\n\treturn [{\n\t\ttype: \"importvariables\",\n\t\tattributes: {\n\t\t\tfilter: {type: \"string\", value: match[1]}\n\t\t},\n\t\tchildren: []\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/list.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/list.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/list.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for lists. For example:\n\n```\n* This is an unordered list\n* It has two items\n\n# This is a numbered list\n## With a subitem\n# And a third item\n\n; This is a term that is being defined\n: This is the definition of that term\n```\n\nNote that lists can be nested arbitrarily:\n\n```\n#** One\n#* Two\n#** Three\n#**** Four\n#**# Five\n#**## Six\n## Seven\n### Eight\n## Nine\n```\n\nA CSS class can be applied to a list item as follows:\n\n```\n* List item one\n*.active List item two has the class `active`\n* List item three\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"list\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /([\\*#;:>]+)/mg;\n};\n\nvar listTypes = {\n\t\"*\": {listTag: \"ul\", itemTag: \"li\"},\n\t\"#\": {listTag: \"ol\", itemTag: \"li\"},\n\t\";\": {listTag: \"dl\", itemTag: \"dt\"},\n\t\":\": {listTag: \"dl\", itemTag: \"dd\"},\n\t\">\": {listTag: \"blockquote\", itemTag: \"div\"}\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Array of parse tree nodes for the previous row of the list\n\tvar listStack = [];\n\t// Cycle through the items in the list\n\twhile(true) {\n\t\t// Match the list marker\n\t\tvar reMatch = /([\\*#;:>]+)/mg;\n\t\treMatch.lastIndex = this.parser.pos;\n\t\tvar match = reMatch.exec(this.parser.source);\n\t\tif(!match || match.index !== this.parser.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check whether the list type of the top level matches\n\t\tvar listInfo = listTypes[match[0].charAt(0)];\n\t\tif(listStack.length > 0 && listStack[0].tag !== listInfo.listTag) {\n\t\t\tbreak;\n\t\t}\n\t\t// Move past the list marker\n\t\tthis.parser.pos = match.index + match[0].length;\n\t\t// Walk through the list markers for the current row\n\t\tfor(var t=0; t<match[0].length; t++) {\n\t\t\tlistInfo = listTypes[match[0].charAt(t)];\n\t\t\t// Remove any stacked up element if we can't re-use it because the list type doesn't match\n\t\t\tif(listStack.length > t && listStack[t].tag !== listInfo.listTag) {\n\t\t\t\tlistStack.splice(t,listStack.length - t);\n\t\t\t}\n\t\t\t// Construct the list element or reuse the previous one at this level\n\t\t\tif(listStack.length <= t) {\n\t\t\t\tvar listElement = {type: \"element\", tag: listInfo.listTag, children: [\n\t\t\t\t\t{type: \"element\", tag: listInfo.itemTag, children: []}\n\t\t\t\t]};\n\t\t\t\t// Link this list element into the last child item of the parent list item\n\t\t\t\tif(t) {\n\t\t\t\t\tvar prevListItem = listStack[t-1].children[listStack[t-1].children.length-1];\n\t\t\t\t\tprevListItem.children.push(listElement);\n\t\t\t\t}\n\t\t\t\t// Save this element in the stack\n\t\t\t\tlistStack[t] = listElement;\n\t\t\t} else if(t === (match[0].length - 1)) {\n\t\t\t\tlistStack[t].children.push({type: \"element\", tag: listInfo.itemTag, children: []});\n\t\t\t}\n\t\t}\n\t\tif(listStack.length > match[0].length) {\n\t\t\tlistStack.splice(match[0].length,listStack.length - match[0].length);\n\t\t}\n\t\t// Process the body of the list item into the last list item\n\t\tvar lastListChildren = listStack[listStack.length-1].children,\n\t\t\tlastListItem = lastListChildren[lastListChildren.length-1],\n\t\t\tclasses = this.parser.parseClasses();\n\t\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\t\tvar tree = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t\tlastListItem.children.push.apply(lastListItem.children,tree);\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(lastListItem,classes.join(\" \"));\n\t\t}\n\t\t// Consume any whitespace following the list item\n\t\tthis.parser.skipWhitespace();\n\t}\n\t// Return the root element of the list\n\treturn [listStack[0]];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/macrocallblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for block macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^>\\s]+)(?:\\s*)((?:[^>]|(?:>(?!>)))*?)>>(?:\\r?\\n|$)/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params,\n\t\tisBlock: true\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/macrocallinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrocallinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki rule for macro calls\n\n```\n<<name value value2>>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrocallinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /<<([^\\s>]+)\\s*([\\s\\S]*?)>>/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5]|| paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn [{\n\t\ttype: \"macrocall\",\n\t\tname: macroName,\n\t\tparams: params\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/macrodef.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/macrodef.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/macrodef.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for macro definitions\n\n```\n\\define name(param:defaultvalue,param2:defaultvalue)\ndefinition text, including $param$ markers\n\\end\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"macrodef\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\define\\s+([^(\\s]+)\\(\\s*([^)]*)\\)(\\s*\\r?\\n)?/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the macro name and parameters\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the parameters\n\tvar paramString = this.match[2],\n\t\tparams = [];\n\tif(paramString !== \"\") {\n\t\tvar reParam = /\\s*([A-Za-z0-9\\-_]+)(?:\\s*:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))?/mg,\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\twhile(paramMatch) {\n\t\t\t// Save the parameter details\n\t\t\tvar paramInfo = {name: paramMatch[1]},\n\t\t\t\tdefaultValue = paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6];\n\t\t\tif(defaultValue) {\n\t\t\t\tparamInfo[\"default\"] = defaultValue;\n\t\t\t}\n\t\t\tparams.push(paramInfo);\n\t\t\t// Look for the next parameter\n\t\t\tparamMatch = reParam.exec(paramString);\n\t\t}\n\t}\n\t// Is this a multiline definition?\n\tvar reEnd;\n\tif(this.match[3]) {\n\t\t// If so, the end of the body is marked with \\end\n\t\treEnd = /(\\r?\\n\\\\end[^\\S\\n\\r]*(?:$|\\r?\\n))/mg;\n\t} else {\n\t\t// Otherwise, the end of the definition is marked by the end of the line\n\t\treEnd = /($|\\r?\\n)/mg;\n\t\t// Move past any whitespace\n\t\tthis.parser.pos = $tw.utils.skipWhiteSpace(this.parser.source,this.parser.pos);\n\t}\n\t// Find the end of the definition\n\treEnd.lastIndex = this.parser.pos;\n\tvar text,\n\t\tendMatch = reEnd.exec(this.parser.source);\n\tif(endMatch) {\n\t\ttext = this.parser.source.substring(this.parser.pos,endMatch.index);\n\t\tthis.parser.pos = endMatch.index + endMatch[0].length;\n\t} else {\n\t\t// We didn't find the end of the definition, so we'll make it blank\n\t\ttext = \"\";\n\t}\n\t// Save the macro definition\n\treturn [{\n\t\ttype: \"set\",\n\t\tattributes: {\n\t\t\tname: {type: \"string\", value: this.match[1]},\n\t\t\tvalue: {type: \"string\", value: text}\n\t\t},\n\t\tchildren: [],\n\t\tparams: params,\n\t\tisMacroDefinition: true\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/prettyextlink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettyextlink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for external links. For example:\n\n```\n[ext[https://tiddlywiki.com/fractalveg.jpg]]\n[ext[Tooltip|https://tiddlywiki.com/fractalveg.jpg]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettyextlink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n};\n\nexports.findNextMatch = function(startPos) {\n\t// Find the next tag\n\tthis.nextLink = this.findNextLink(this.parser.source,startPos);\n\treturn this.nextLink ? this.nextLink.start : undefined;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.nextLink.end;\n\treturn [this.nextLink];\n};\n\n/*\nFind the next link from the current position\n*/\nexports.findNextLink = function(source,pos) {\n\t// A regexp for finding candidate links\n\tvar reLookahead = /(\\[ext\\[)/g;\n\t// Find the next candidate\n\treLookahead.lastIndex = pos;\n\tvar match = reLookahead.exec(source);\n\twhile(match) {\n\t\t// Try to parse the candidate as a link\n\t\tvar link = this.parseLink(source,match.index);\n\t\t// Return success\n\t\tif(link) {\n\t\t\treturn link;\n\t\t}\n\t\t// Look for the next match\n\t\treLookahead.lastIndex = match.index + 1;\n\t\tmatch = reLookahead.exec(source);\n\t}\n\t// Failed\n\treturn null;\n};\n\n/*\nLook for an link at the specified position. Returns null if not found, otherwise returns {type: \"element\", tag: \"a\", attributes: [], isSelfClosing:, start:, end:,}\n*/\nexports.parseLink = function(source,pos) {\n\tvar token,\n\t\ttextNode = {\n\t\t\ttype: \"text\"\n\t\t},\n\t\tnode = {\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tstart: pos,\n\t\t\tattributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t},\n\t\t\tchildren: [textNode]\n\t\t};\n\t// Skip whitespace\n\tpos = $tw.utils.skipWhiteSpace(source,pos);\n\t// Look for the `[ext[`\n\ttoken = $tw.utils.parseTokenString(source,pos,\"[ext[\");\n\tif(!token) {\n\t\treturn null;\n\t}\n\tpos = token.end;\n\t// Look ahead for the terminating `]]`\n\tvar closePos = source.indexOf(\"]]\",pos);\n\tif(closePos === -1) {\n\t\treturn null;\n\t}\n\t// Look for a `|` separating the tooltip\n\tvar splitPos = source.indexOf(\"|\",pos);\n\tif(splitPos === -1 || splitPos > closePos) {\n\t\tsplitPos = null;\n\t}\n\t// Pull out the tooltip and URL\n\tvar tooltip, URL;\n\tif(splitPos) {\n\t\tURL = source.substring(splitPos + 1,closePos).trim();\n\t\ttextNode.text = source.substring(pos,splitPos).trim();\n\t} else {\n\t\tURL = source.substring(pos,closePos).trim();\n\t\ttextNode.text = URL;\n\t}\n\tnode.attributes.href = {type: \"string\", value: URL};\n\tnode.attributes.target = {type: \"string\", value: \"_blank\"};\n\tnode.attributes.rel = {type: \"string\", value: \"noopener noreferrer\"};\n\t// Update the end position\n\tnode.end = closePos + 2;\n\treturn node;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/prettylink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/prettylink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/prettylink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for pretty links. For example:\n\n```\n[[Introduction]]\n\n[[Link description|TiddlerTitle]]\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"prettylink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\[\\[(.*?)(?:\\|(.*?))?\\]\\]/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Process the link\n\tvar text = this.match[1],\n\t\tlink = this.match[2] || text;\n\tif($tw.utils.isLinkExternal(link)) {\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"a\",\n\t\t\tattributes: {\n\t\t\t\thref: {type: \"string\", value: link},\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-tiddlylink-external\"},\n\t\t\t\ttarget: {type: \"string\", value: \"_blank\"},\n\t\t\t\trel: {type: \"string\", value: \"noopener noreferrer\"}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: link}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\", text: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/quoteblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/quoteblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/quoteblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for quote blocks. For example:\n\n```\n\t<<<.optionalClass(es) optional cited from\n\ta quote\n\t<<<\n\t\n\t<<<.optionalClass(es)\n\ta quote\n\t<<< optional cited from\n```\n\nQuotes can be quoted by putting more <s\n\n```\n\t<<<\n\tQuote Level 1\n\t\n\t<<<<\n\tQuoteLevel 2\n\t<<<<\n\t\n\t<<<\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"quoteblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /(<<<+)/mg;\n};\n\nexports.parse = function() {\n\tvar classes = [\"tc-quote\"];\n\t// Get all the details of the match\n\tvar reEndString = \"^\" + this.match[1] + \"(?!<)\";\n\t// Move past the <s\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\n\t// Parse any classes, whitespace and then the optional cite itself\n\tclasses.push.apply(classes, this.parser.parseClasses());\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tvar cite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// before handling the cite, parse the body of the quote\n\tvar tree= this.parser.parseBlocks(reEndString);\n\t// If we got a cite, put it before the text\n\tif(cite.length > 0) {\n\t\ttree.unshift({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Parse any optional cite\n\tthis.parser.skipWhitespace({treatNewlinesAsNonWhitespace: true});\n\tcite = this.parser.parseInlineRun(/(\\r?\\n)/mg);\n\t// If we got a cite, push it\n\tif(cite.length > 0) {\n\t\ttree.push({\n\t\t\ttype: \"element\",\n\t\t\ttag: \"cite\",\n\t\t\tchildren: cite\n\t\t});\n\t}\n\t// Return the blockquote element\n\treturn [{\n\t\ttype: \"element\",\n\t\ttag: \"blockquote\",\n\t\tattributes: {\n\t\t\tclass: { type: \"string\", value: classes.join(\" \") },\n\t\t},\n\t\tchildren: tree\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/rules.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/rules.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/rules.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for rules specifications\n\n```\n\\rules except ruleone ruletwo rulethree\n\\rules only ruleone ruletwo rulethree\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"rules\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\rules[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\tif(tokens.length > 0) {\n\t\tthis.parser.amendRules(tokens[0],tokens.slice(1));\n\t}\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/styleblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/styleblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for assigning styles and classes to paragraphs and other blocks. For example:\n\n```\n@@.myClass\n@@background-color:red;\nThis paragraph will have the CSS class `myClass`.\n\n* The `<ul>` around this list will also have the class `myClass`\n* List item 2\n\n@@\n```\n\nNote that classes and styles can be mixed subject to the rule that styles must precede classes. For example\n\n```\n@@.myFirstClass.mySecondClass\n@@width:100px;.myThirdClass\nThis is a paragraph\n@@\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(?:\\.([^\\r\\n\\s]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEndString = \"^@@(?:\\\\r?\\\\n)?\";\n\tvar classes = [], styles = [];\n\tdo {\n\t\t// Get the class and style\n\t\tif(this.match[1]) {\n\t\t\tstyles.push(this.match[1]);\n\t\t}\n\t\tif(this.match[2]) {\n\t\t\tclasses.push(this.match[2].split(\".\").join(\" \"));\n\t\t}\n\t\t// Move past the match\n\t\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t\t// Look for another line of classes and styles\n\t\tthis.match = this.matchRegExp.exec(this.parser.source);\n\t} while(this.match && this.match.index === this.parser.pos);\n\t// Parse the body\n\tvar tree = this.parser.parseBlocks(reEndString);\n\tfor(var t=0; t<tree.length; t++) {\n\t\tif(classes.length > 0) {\n\t\t\t$tw.utils.addClassToParseTreeNode(tree[t],classes.join(\" \"));\n\t\t}\n\t\tif(styles.length > 0) {\n\t\t\t$tw.utils.addAttributeToParseTreeNode(tree[t],\"style\",styles.join(\"\"));\n\t\t}\n\t}\n\treturn tree;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/styleinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/styleinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/styleinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for assigning styles and classes to inline runs. For example:\n\n```\n@@.myClass This is some text with a class@@\n@@background-color:red;This is some text with a background colour@@\n@@width:100px;.myClass This is some text with a class and a width@@\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"styleinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /@@((?:[^\\.\\r\\n\\s:]+:[^\\r\\n;]+;)+)?(\\.(?:[^\\r\\n\\s]+)\\s+)?/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /@@/g;\n\t// Get the styles and class\n\tvar stylesString = this.match[1],\n\t\tclassString = this.match[2] ? this.match[2].split(\".\").join(\" \") : undefined;\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse the run up to the terminator\n\tvar tree = this.parser.parseInlineRun(reEnd,{eatTerminator: true});\n\t// Return the classed span\n\tvar node = {\n\t\ttype: \"element\",\n\t\ttag: \"span\",\n\t\tattributes: {\n\t\t\t\"class\": {type: \"string\", value: \"tc-inline-style\"}\n\t\t},\n\t\tchildren: tree\n\t};\n\tif(classString) {\n\t\t$tw.utils.addClassToParseTreeNode(node,classString);\n\t}\n\tif(stylesString) {\n\t\t$tw.utils.addAttributeToParseTreeNode(node,\"style\",stylesString);\n\t}\n\treturn [node];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/syslink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/syslink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/syslink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for system tiddler links.\nCan be suppressed preceding them with `~`.\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"syslink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp(\n\t\t\"~?\\\\$:\\\\/[\" +\n\t\t$tw.config.textPrimitives.anyLetter.substr(1,$tw.config.textPrimitives.anyLetter.length - 2) +\n\t\t\"\\/._-]+\",\n\t\t\"mg\"\n\t);\n};\n\nexports.parse = function() {\n\tvar match = this.match[0];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Create the link unless it is suppressed\n\tif(match.substr(0,1) === \"~\") {\n\t\treturn [{type: \"text\", text: match.substr(1)}];\n\t} else {\n\t\treturn [{\n\t\t\ttype: \"link\",\n\t\t\tattributes: {\n\t\t\t\tto: {type: \"string\", value: match}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: match\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/table.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/table.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/table.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text block rule for tables.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"table\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\|(?:[^\\n]*)\\|(?:[fhck]?)\\r?(?:\\n|$)/mg;\n};\n\nvar processRow = function(prevColumns) {\n\tvar cellRegExp = /(?:\\|([^\\n\\|]*)\\|)|(\\|[fhck]?\\r?(?:\\n|$))/mg,\n\t\tcellTermRegExp = /((?:\\x20*)\\|)/mg,\n\t\ttree = [],\n\t\tcol = 0,\n\t\tcolSpanCount = 1,\n\t\tprevCell,\n\t\tvAlign;\n\t// Match a single cell\n\tcellRegExp.lastIndex = this.parser.pos;\n\tvar cellMatch = cellRegExp.exec(this.parser.source);\n\twhile(cellMatch && cellMatch.index === this.parser.pos) {\n\t\tif(cellMatch[1] === \"~\") {\n\t\t\t// Rowspan\n\t\t\tvar last = prevColumns[col];\n\t\t\tif(last) {\n\t\t\t\tlast.rowSpanCount++;\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"rowspan\",last.rowSpanCount);\n\t\t\t\tvAlign = $tw.utils.getAttributeValueFromParseTreeNode(last.element,\"valign\",\"center\");\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"valign\",vAlign);\n\t\t\t\tif(colSpanCount > 1) {\n\t\t\t\t\t$tw.utils.addAttributeToParseTreeNode(last.element,\"colspan\",colSpanCount);\n\t\t\t\t\tcolSpanCount = 1;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \">\") {\n\t\t\t// Colspan\n\t\t\tcolSpanCount++;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[1] === \"<\" && prevCell) {\n\t\t\tcolSpanCount = 1 + $tw.utils.getAttributeValueFromParseTreeNode(prevCell,\"colspan\",1);\n\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\tcolSpanCount = 1;\n\t\t\t// Move to just before the `|` terminating the cell\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t} else if(cellMatch[2]) {\n\t\t\t// End of row\n\t\t\tif(prevCell && colSpanCount > 1) {\n\t\t\t\tif(prevCell.attributes && prevCell.attributes && prevCell.attributes.colspan) {\n\t\t\t\t\t\tcolSpanCount += prevCell.attributes.colspan.value;\n\t\t\t\t} else {\n\t\t\t\t\tcolSpanCount -= 1;\n\t\t\t\t}\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(prevCell,\"colspan\",colSpanCount);\n\t\t\t}\n\t\t\tthis.parser.pos = cellRegExp.lastIndex - 1;\n\t\t\tbreak;\n\t\t} else {\n\t\t\t// For ordinary cells, step beyond the opening `|`\n\t\t\tthis.parser.pos++;\n\t\t\t// Look for a space at the start of the cell\n\t\t\tvar spaceLeft = false;\n\t\t\tvAlign = null;\n\t\t\tif(this.parser.source.substr(this.parser.pos).search(/^\\^([^\\^]|\\^\\^)/) === 0) {\n\t\t\t\tvAlign = \"top\";\n\t\t\t} else if(this.parser.source.substr(this.parser.pos).search(/^,([^,]|,,)/) === 0) {\n\t\t\t\tvAlign = \"bottom\";\n\t\t\t}\n\t\t\tif(vAlign) {\n\t\t\t\tthis.parser.pos++;\n\t\t\t}\n\t\t\tvar chr = this.parser.source.substr(this.parser.pos,1);\n\t\t\twhile(chr === \" \") {\n\t\t\t\tspaceLeft = true;\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tchr = this.parser.source.substr(this.parser.pos,1);\n\t\t\t}\n\t\t\t// Check whether this is a heading cell\n\t\t\tvar cell;\n\t\t\tif(chr === \"!\") {\n\t\t\t\tthis.parser.pos++;\n\t\t\t\tcell = {type: \"element\", tag: \"th\", children: []};\n\t\t\t} else {\n\t\t\t\tcell = {type: \"element\", tag: \"td\", children: []};\n\t\t\t}\n\t\t\ttree.push(cell);\n\t\t\t// Record information about this cell\n\t\t\tprevCell = cell;\n\t\t\tprevColumns[col] = {rowSpanCount:1,element:cell};\n\t\t\t// Check for a colspan\n\t\t\tif(colSpanCount > 1) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"colspan\",colSpanCount);\n\t\t\t\tcolSpanCount = 1;\n\t\t\t}\n\t\t\t// Parse the cell\n\t\t\tcell.children = this.parser.parseInlineRun(cellTermRegExp,{eatTerminator: true});\n\t\t\t// Set the alignment for the cell\n\t\t\tif(vAlign) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"valign\",vAlign);\n\t\t\t}\n\t\t\tif(this.parser.source.substr(this.parser.pos - 2,1) === \" \") { // spaceRight\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",spaceLeft ? \"center\" : \"left\");\n\t\t\t} else if(spaceLeft) {\n\t\t\t\t$tw.utils.addAttributeToParseTreeNode(cell,\"align\",\"right\");\n\t\t\t}\n\t\t\t// Move back to the closing `|`\n\t\t\tthis.parser.pos--;\n\t\t}\n\t\tcol++;\n\t\tcellRegExp.lastIndex = this.parser.pos;\n\t\tcellMatch = cellRegExp.exec(this.parser.source);\n\t}\n\treturn tree;\n};\n\nexports.parse = function() {\n\tvar rowContainerTypes = {\"c\":\"caption\", \"h\":\"thead\", \"\":\"tbody\", \"f\":\"tfoot\"},\n\t\ttable = {type: \"element\", tag: \"table\", children: []},\n\t\trowRegExp = /^\\|([^\\n]*)\\|([fhck]?)\\r?(?:\\n|$)/mg,\n\t\trowTermRegExp = /(\\|(?:[fhck]?)\\r?(?:\\n|$))/mg,\n\t\tprevColumns = [],\n\t\tcurrRowType,\n\t\trowContainer,\n\t\trowCount = 0;\n\t// Match the row\n\trowRegExp.lastIndex = this.parser.pos;\n\tvar rowMatch = rowRegExp.exec(this.parser.source);\n\twhile(rowMatch && rowMatch.index === this.parser.pos) {\n\t\tvar rowType = rowMatch[2];\n\t\t// Check if it is a class assignment\n\t\tif(rowType === \"k\") {\n\t\t\t$tw.utils.addClassToParseTreeNode(table,rowMatch[1]);\n\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t} else {\n\t\t\t// Otherwise, create a new row if this one is of a different type\n\t\t\tif(rowType !== currRowType) {\n\t\t\t\trowContainer = {type: \"element\", tag: rowContainerTypes[rowType], children: []};\n\t\t\t\ttable.children.push(rowContainer);\n\t\t\t\tcurrRowType = rowType;\n\t\t\t}\n\t\t\t// Is this a caption row?\n\t\t\tif(currRowType === \"c\") {\n\t\t\t\t// If so, move past the opening `|` of the row\n\t\t\t\tthis.parser.pos++;\n\t\t\t\t// Move the caption to the first row if it isn't already\n\t\t\t\tif(table.children.length !== 1) {\n\t\t\t\t\ttable.children.pop(); // Take rowContainer out of the children array\n\t\t\t\t\ttable.children.splice(0,0,rowContainer); // Insert it at the bottom\t\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\t// Set the alignment - TODO: figure out why TW did this\n//\t\t\t\trowContainer.attributes.align = rowCount === 0 ? \"top\" : \"bottom\";\n\t\t\t\t// Parse the caption\n\t\t\t\trowContainer.children = this.parser.parseInlineRun(rowTermRegExp,{eatTerminator: true});\n\t\t\t} else {\n\t\t\t\t// Create the row\n\t\t\t\tvar theRow = {type: \"element\", tag: \"tr\", children: []};\n\t\t\t\t$tw.utils.addClassToParseTreeNode(theRow,rowCount%2 ? \"oddRow\" : \"evenRow\");\n\t\t\t\trowContainer.children.push(theRow);\n\t\t\t\t// Process the row\n\t\t\t\ttheRow.children = processRow.call(this,prevColumns);\n\t\t\t\tthis.parser.pos = rowMatch.index + rowMatch[0].length;\n\t\t\t\t// Increment the row count\n\t\t\t\trowCount++;\n\t\t\t}\n\t\t}\n\t\trowMatch = rowRegExp.exec(this.parser.source);\n\t}\n\treturn [table];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/transcludeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for block-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}(?:\\r?\\n|$)/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {},\n\t\t\tisBlock: true\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tisBlock: true,\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/transcludeinline.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/transcludeinline.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for inline-level transclusion. For example:\n\n```\n{{MyTiddler}}\n{{MyTiddler||TemplateTitle}}\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"transcludeinline\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\{\\{([^\\{\\}\\|]*)(?:\\|\\|([^\\|\\{\\}]+))?\\}\\}/mg;\n};\n\nexports.parse = function() {\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Get the match details\n\tvar template = $tw.utils.trim(this.match[2]),\n\t\ttextRef = $tw.utils.trim(this.match[1]);\n\t// Prepare the transclude widget\n\tvar transcludeNode = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {}\n\t\t};\n\t// Prepare the tiddler widget\n\tvar tr, targetTitle, targetField, targetIndex, tiddlerNode;\n\tif(textRef) {\n\t\ttr = $tw.utils.parseTextReference(textRef);\n\t\ttargetTitle = tr.title;\n\t\ttargetField = tr.field;\n\t\ttargetIndex = tr.index;\n\t\ttiddlerNode = {\n\t\t\ttype: \"tiddler\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: targetTitle}\n\t\t\t},\n\t\t\tchildren: [transcludeNode]\n\t\t};\n\t}\n\tif(template) {\n\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: template};\n\t\tif(textRef) {\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t} else {\n\t\tif(textRef) {\n\t\t\ttranscludeNode.attributes.tiddler = {type: \"string\", value: targetTitle};\n\t\t\tif(targetField) {\n\t\t\t\ttranscludeNode.attributes.field = {type: \"string\", value: targetField};\n\t\t\t}\n\t\t\tif(targetIndex) {\n\t\t\t\ttranscludeNode.attributes.index = {type: \"string\", value: targetIndex};\n\t\t\t}\n\t\t\treturn [tiddlerNode];\n\t\t} else {\n\t\t\treturn [transcludeNode];\n\t\t}\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/typedblock.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/typedblock.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/typedblock.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text rule for typed blocks. For example:\n\n```\n$$$.js\nThis will be rendered as JavaScript\n$$$\n\n$$$.svg\n<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"150\" height=\"100\">\n  <circle cx=\"100\" cy=\"50\" r=\"40\" stroke=\"black\" stroke-width=\"2\" fill=\"red\" />\n</svg>\n$$$\n\n$$$text/vnd.tiddlywiki>text/html\nThis will be rendered as an //HTML representation// of WikiText\n$$$\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.name = \"typedblock\";\nexports.types = {block: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /\\$\\$\\$([^ >\\r\\n]*)(?: *> *([^ \\r\\n]+))?\\r?\\n/mg;\n};\n\nexports.parse = function() {\n\tvar reEnd = /\\r?\\n\\$\\$\\$\\r?(?:\\n|$)/mg;\n\t// Save the type\n\tvar parseType = this.match[1],\n\t\trenderType = this.match[2];\n\t// Move past the match\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Look for the end of the block\n\treEnd.lastIndex = this.parser.pos;\n\tvar match = reEnd.exec(this.parser.source),\n\t\ttext;\n\t// Process the block\n\tif(match) {\n\t\ttext = this.parser.source.substring(this.parser.pos,match.index);\n\t\tthis.parser.pos = match.index + match[0].length;\n\t} else {\n\t\ttext = this.parser.source.substr(this.parser.pos);\n\t\tthis.parser.pos = this.parser.sourceLength;\n\t}\n\t// Parse the block according to the specified type\n\tvar parser = this.parser.wiki.parseText(parseType,text,{defaultType: \"text/plain\"});\n\t// If there's no render type, just return the parse tree\n\tif(!renderType) {\n\t\treturn parser.tree;\n\t} else {\n\t\t// Otherwise, render to the rendertype and return in a <PRE> tag\n\t\tvar widgetNode = this.parser.wiki.makeWidget(parser),\n\t\t\tcontainer = $tw.fakeDocument.createElement(\"div\");\n\t\twidgetNode.render(container,null);\n\t\ttext = renderType === \"text/html\" ? container.innerHTML : container.textContent;\n\t\treturn [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"pre\",\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: text\n\t\t\t}]\n\t\t}];\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/whitespace.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/whitespace.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/whitespace.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki pragma rule for whitespace specifications\n\n```\n\\whitespace trim\n\\whitespace notrim\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"whitespace\";\nexports.types = {pragma: true};\n\n/*\nInstantiate parse rule\n*/\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = /^\\\\whitespace[^\\S\\n]/mg;\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\tvar self = this;\n\t// Move past the pragma invocation\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// Parse whitespace delimited tokens terminated by a line break\n\tvar reMatch = /[^\\S\\n]*(\\S+)|(\\r?\\n)/mg,\n\t\ttokens = [];\n\treMatch.lastIndex = this.parser.pos;\n\tvar match = reMatch.exec(this.parser.source);\n\twhile(match && match.index === this.parser.pos) {\n\t\tthis.parser.pos = reMatch.lastIndex;\n\t\t// Exit if we've got the line break\n\t\tif(match[2]) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the token\n\t\tif(match[1]) {\n\t\t\ttokens.push(match[1]);\n\t\t}\n\t\t// Match the next token\n\t\tmatch = reMatch.exec(this.parser.source);\n\t}\n\t// Process the tokens\n\t$tw.utils.each(tokens,function(token) {\n\t\tswitch(token) {\n\t\t\tcase \"trim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = true;\n\t\t\t\tbreak;\n\t\t\tcase \"notrim\":\n\t\t\t\tself.parser.configTrimWhiteSpace = false;\n\t\t\t\tbreak;\n\t\t}\n\t});\n\t// No parse tree nodes to return\n\treturn [];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/rules/wikilink.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/wikilink.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikilink.js\ntype: application/javascript\nmodule-type: wikirule\n\nWiki text inline rule for wiki links. For example:\n\n```\nAWikiLink\nAnotherLink\n~SuppressedLink\n```\n\nPrecede a camel case word with `~` to prevent it from being recognised as a link.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.name = \"wikilink\";\nexports.types = {inline: true};\n\nexports.init = function(parser) {\n\tthis.parser = parser;\n\t// Regexp to match\n\tthis.matchRegExp = new RegExp($tw.config.textPrimitives.unWikiLink + \"?\" + $tw.config.textPrimitives.wikiLink,\"mg\");\n};\n\n/*\nParse the most recent match\n*/\nexports.parse = function() {\n\t// Get the details of the match\n\tvar linkText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\t// If the link starts with the unwikilink character then just output it as plain text\n\tif(linkText.substr(0,1) === $tw.config.textPrimitives.unWikiLink) {\n\t\treturn [{type: \"text\", text: linkText.substr(1)}];\n\t}\n\t// If the link has been preceded with a blocked letter then don't treat it as a link\n\tif(this.match.index > 0) {\n\t\tvar preRegExp = new RegExp($tw.config.textPrimitives.blockPrefixLetters,\"mg\");\n\t\tpreRegExp.lastIndex = this.match.index-1;\n\t\tvar preMatch = preRegExp.exec(this.parser.source);\n\t\tif(preMatch && preMatch.index === this.match.index-1) {\n\t\t\treturn [{type: \"text\", text: linkText}];\n\t\t}\n\t}\n\treturn [{\n\t\ttype: \"link\",\n\t\tattributes: {\n\t\t\tto: {type: \"string\", value: linkText}\n\t\t},\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\ttext: linkText\n\t\t}]\n\t}];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikirule"
        },
        "$:/core/modules/parsers/wikiparser/wikiparser.js": {
            "title": "$:/core/modules/parsers/wikiparser/wikiparser.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/wikiparser.js\ntype: application/javascript\nmodule-type: parser\n\nThe wiki text parser processes blocks of source text into a parse tree.\n\nThe parse tree is made up of nested arrays of these JavaScript objects:\n\n\t{type: \"element\", tag: <string>, attributes: {}, children: []} - an HTML element\n\t{type: \"text\", text: <string>} - a text node\n\t{type: \"entity\", value: <string>} - an entity\n\t{type: \"raw\", html: <string>} - raw HTML\n\nAttributes are stored as hashmaps of the following objects:\n\n\t{type: \"string\", value: <string>} - literal string\n\t{type: \"indirect\", textReference: <textReference>} - indirect through a text reference\n\t{type: \"macro\", macro: <TBD>} - indirect through a macro invocation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar WikiParser = function(type,text,options) {\n\tthis.wiki = options.wiki;\n\tvar self = this;\n\t// Check for an externally linked tiddler\n\tif($tw.browser && (text || \"\") === \"\" && options._canonical_uri) {\n\t\tthis.loadRemoteTiddler(options._canonical_uri);\n\t\ttext = $tw.language.getRawString(\"LazyLoadingWarning\");\n\t}\n\t// Initialise the classes if we don't have them already\n\tif(!this.pragmaRuleClasses) {\n\t\tWikiParser.prototype.pragmaRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"pragma\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.pragmaRuleClasses,\"$:/config/WikiParserRules/Pragmas/\");\n\t}\n\tif(!this.blockRuleClasses) {\n\t\tWikiParser.prototype.blockRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"block\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.blockRuleClasses,\"$:/config/WikiParserRules/Block/\");\n\t}\n\tif(!this.inlineRuleClasses) {\n\t\tWikiParser.prototype.inlineRuleClasses = $tw.modules.createClassesFromModules(\"wikirule\",\"inline\",$tw.WikiRuleBase);\n\t\tthis.setupRules(WikiParser.prototype.inlineRuleClasses,\"$:/config/WikiParserRules/Inline/\");\n\t}\n\t// Save the parse text\n\tthis.type = type || \"text/vnd.tiddlywiki\";\n\tthis.source = text || \"\";\n\tthis.sourceLength = this.source.length;\n\t// Flag for ignoring whitespace\n\tthis.configTrimWhiteSpace = false;\n\t// Set current parse position\n\tthis.pos = 0;\n\t// Instantiate the pragma parse rules\n\tthis.pragmaRules = this.instantiateRules(this.pragmaRuleClasses,\"pragma\",0);\n\t// Instantiate the parser block and inline rules\n\tthis.blockRules = this.instantiateRules(this.blockRuleClasses,\"block\",0);\n\tthis.inlineRules = this.instantiateRules(this.inlineRuleClasses,\"inline\",0);\n\t// Parse any pragmas\n\tthis.tree = [];\n\tvar topBranch = this.parsePragmas();\n\t// Parse the text into inline runs or blocks\n\tif(options.parseAsInline) {\n\t\ttopBranch.push.apply(topBranch,this.parseInlineRun());\n\t} else {\n\t\ttopBranch.push.apply(topBranch,this.parseBlocks());\n\t}\n\t// Return the parse tree\n};\n\n/*\n*/\nWikiParser.prototype.loadRemoteTiddler = function(url) {\n\tvar self = this;\n\t$tw.utils.httpRequest({\n\t\turl: url,\n\t\ttype: \"GET\",\n\t\tcallback: function(err,data) {\n\t\t\tif(!err) {\n\t\t\t\tvar tiddlers = self.wiki.deserializeTiddlers(\".tid\",data,self.wiki.getCreationFields());\n\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\ttiddler[\"_canonical_uri\"] = url;\n\t\t\t\t});\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tself.wiki.addTiddlers(tiddlers);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\n*/\nWikiParser.prototype.setupRules = function(proto,configPrefix) {\n\tvar self = this;\n\tif(!$tw.safemode) {\n\t\t$tw.utils.each(proto,function(object,name) {\n\t\t\tif(self.wiki.getTiddlerText(configPrefix + name,\"enable\") !== \"enable\") {\n\t\t\t\tdelete proto[name];\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nInstantiate an array of parse rules\n*/\nWikiParser.prototype.instantiateRules = function(classes,type,startPos) {\n\tvar rulesInfo = [],\n\t\tself = this;\n\t$tw.utils.each(classes,function(RuleClass) {\n\t\t// Instantiate the rule\n\t\tvar rule = new RuleClass(self);\n\t\trule.is = {};\n\t\trule.is[type] = true;\n\t\trule.init(self);\n\t\tvar matchIndex = rule.findNextMatch(startPos);\n\t\tif(matchIndex !== undefined) {\n\t\t\trulesInfo.push({\n\t\t\t\trule: rule,\n\t\t\t\tmatchIndex: matchIndex\n\t\t\t});\n\t\t}\n\t});\n\treturn rulesInfo;\n};\n\n/*\nSkip any whitespace at the current position. Options are:\n\ttreatNewlinesAsNonWhitespace: true if newlines are NOT to be treated as whitespace\n*/\nWikiParser.prototype.skipWhitespace = function(options) {\n\toptions = options || {};\n\tvar whitespaceRegExp = options.treatNewlinesAsNonWhitespace ? /([^\\S\\n]+)/mg : /(\\s+)/mg;\n\twhitespaceRegExp.lastIndex = this.pos;\n\tvar whitespaceMatch = whitespaceRegExp.exec(this.source);\n\tif(whitespaceMatch && whitespaceMatch.index === this.pos) {\n\t\tthis.pos = whitespaceRegExp.lastIndex;\n\t}\n};\n\n/*\nGet the next match out of an array of parse rule instances\n*/\nWikiParser.prototype.findNextMatch = function(rules,startPos) {\n\t// Find the best matching rule by finding the closest match position\n\tvar matchingRule,\n\t\tmatchingRulePos = this.sourceLength;\n\t// Step through each rule\n\tfor(var t=0; t<rules.length; t++) {\n\t\tvar ruleInfo = rules[t];\n\t\t// Ask the rule to get the next match if we've moved past the current one\n\t\tif(ruleInfo.matchIndex !== undefined  && ruleInfo.matchIndex < startPos) {\n\t\t\truleInfo.matchIndex = ruleInfo.rule.findNextMatch(startPos);\n\t\t}\n\t\t// Adopt this match if it's closer than the current best match\n\t\tif(ruleInfo.matchIndex !== undefined && ruleInfo.matchIndex <= matchingRulePos) {\n\t\t\tmatchingRule = ruleInfo;\n\t\t\tmatchingRulePos = ruleInfo.matchIndex;\n\t\t}\n\t}\n\treturn matchingRule;\n};\n\n/*\nParse any pragmas at the beginning of a block of parse text\n*/\nWikiParser.prototype.parsePragmas = function() {\n\tvar currentTreeBranch = this.tree;\n\twhile(true) {\n\t\t// Skip whitespace\n\t\tthis.skipWhitespace();\n\t\t// Check for the end of the text\n\t\tif(this.pos >= this.sourceLength) {\n\t\t\tbreak;\n\t\t}\n\t\t// Check if we've arrived at a pragma rule match\n\t\tvar nextMatch = this.findNextMatch(this.pragmaRules,this.pos);\n\t\t// If not, just exit\n\t\tif(!nextMatch || nextMatch.matchIndex !== this.pos) {\n\t\t\tbreak;\n\t\t}\n\t\t// Process the pragma rule\n\t\tvar subTree = nextMatch.rule.parse();\n\t\tif(subTree.length > 0) {\n\t\t\t// Quick hack; we only cope with a single parse tree node being returned, which is true at the moment\n\t\t\tcurrentTreeBranch.push.apply(currentTreeBranch,subTree);\n\t\t\tsubTree[0].children = [];\n\t\t\tcurrentTreeBranch = subTree[0].children;\n\t\t}\n\t}\n\treturn currentTreeBranch;\n};\n\n/*\nParse a block from the current position\n\tterminatorRegExpString: optional regular expression string that identifies the end of plain paragraphs. Must not include capturing parenthesis\n*/\nWikiParser.prototype.parseBlock = function(terminatorRegExpString) {\n\tvar terminatorRegExp = terminatorRegExpString ? new RegExp(\"(\" + terminatorRegExpString + \"|\\\\r?\\\\n\\\\r?\\\\n)\",\"mg\") : /(\\r?\\n\\r?\\n)/mg;\n\tthis.skipWhitespace();\n\tif(this.pos >= this.sourceLength) {\n\t\treturn [];\n\t}\n\t// Look for a block rule that applies at the current position\n\tvar nextMatch = this.findNextMatch(this.blockRules,this.pos);\n\tif(nextMatch && nextMatch.matchIndex === this.pos) {\n\t\treturn nextMatch.rule.parse();\n\t}\n\t// Treat it as a paragraph if we didn't find a block rule\n\treturn [{type: \"element\", tag: \"p\", children: this.parseInlineRun(terminatorRegExp)}];\n};\n\n/*\nParse a series of blocks of text until a terminating regexp is encountered or the end of the text\n\tterminatorRegExpString: terminating regular expression\n*/\nWikiParser.prototype.parseBlocks = function(terminatorRegExpString) {\n\tif(terminatorRegExpString) {\n\t\treturn this.parseBlocksTerminated(terminatorRegExpString);\n\t} else {\n\t\treturn this.parseBlocksUnterminated();\n\t}\n};\n\n/*\nParse a block from the current position to the end of the text\n*/\nWikiParser.prototype.parseBlocksUnterminated = function() {\n\tvar tree = [];\n\twhile(this.pos < this.sourceLength) {\n\t\ttree.push.apply(tree,this.parseBlock());\n\t}\n\treturn tree;\n};\n\n/*\nParse blocks of text until a terminating regexp is encountered\n*/\nWikiParser.prototype.parseBlocksTerminated = function(terminatorRegExpString) {\n\tvar terminatorRegExp = new RegExp(\"(\" + terminatorRegExpString + \")\",\"mg\"),\n\t\ttree = [];\n\t// Skip any whitespace\n\tthis.skipWhitespace();\n\t//  Check if we've got the end marker\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar match = terminatorRegExp.exec(this.source);\n\t// Parse the text into blocks\n\twhile(this.pos < this.sourceLength && !(match && match.index === this.pos)) {\n\t\tvar blocks = this.parseBlock(terminatorRegExpString);\n\t\ttree.push.apply(tree,blocks);\n\t\t// Skip any whitespace\n\t\tthis.skipWhitespace();\n\t\t//  Check if we've got the end marker\n\t\tterminatorRegExp.lastIndex = this.pos;\n\t\tmatch = terminatorRegExp.exec(this.source);\n\t}\n\tif(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t}\n\treturn tree;\n};\n\n/*\nParse a run of text at the current position\n\tterminatorRegExp: a regexp at which to stop the run\n\toptions: see below\nOptions available:\n\teatTerminator: move the parse position past any encountered terminator (default false)\n*/\nWikiParser.prototype.parseInlineRun = function(terminatorRegExp,options) {\n\tif(terminatorRegExp) {\n\t\treturn this.parseInlineRunTerminated(terminatorRegExp,options);\n\t} else {\n\t\treturn this.parseInlineRunUnterminated(options);\n\t}\n};\n\nWikiParser.prototype.parseInlineRunUnterminated = function(options) {\n\tvar tree = [];\n\t// Find the next occurrence of an inline rule\n\tvar nextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around the matches until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && nextMatch) {\n\t\t// Process the text preceding the run rule\n\t\tif(nextMatch.matchIndex > this.pos) {\n\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,nextMatch.matchIndex));\n\t\t\tthis.pos = nextMatch.matchIndex;\n\t\t}\n\t\t// Process the run rule\n\t\ttree.push.apply(tree,nextMatch.rule.parse());\n\t\t// Look for the next run rule\n\t\tnextMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\nWikiParser.prototype.parseInlineRunTerminated = function(terminatorRegExp,options) {\n\toptions = options || {};\n\tvar tree = [];\n\t// Find the next occurrence of the terminator\n\tterminatorRegExp.lastIndex = this.pos;\n\tvar terminatorMatch = terminatorRegExp.exec(this.source);\n\t// Find the next occurrence of a inlinerule\n\tvar inlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t// Loop around until we've reached the end of the text\n\twhile(this.pos < this.sourceLength && (terminatorMatch || inlineRuleMatch)) {\n\t\t// Return if we've found the terminator, and it precedes any inline rule match\n\t\tif(terminatorMatch) {\n\t\t\tif(!inlineRuleMatch || inlineRuleMatch.matchIndex >= terminatorMatch.index) {\n\t\t\t\tif(terminatorMatch.index > this.pos) {\n\t\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,terminatorMatch.index));\n\t\t\t\t}\n\t\t\t\tthis.pos = terminatorMatch.index;\n\t\t\t\tif(options.eatTerminator) {\n\t\t\t\t\tthis.pos += terminatorMatch[0].length;\n\t\t\t\t}\n\t\t\t\treturn tree;\n\t\t\t}\n\t\t}\n\t\t// Process any inline rule, along with the text preceding it\n\t\tif(inlineRuleMatch) {\n\t\t\t// Preceding text\n\t\t\tif(inlineRuleMatch.matchIndex > this.pos) {\n\t\t\t\tthis.pushTextWidget(tree,this.source.substring(this.pos,inlineRuleMatch.matchIndex));\n\t\t\t\tthis.pos = inlineRuleMatch.matchIndex;\n\t\t\t}\n\t\t\t// Process the inline rule\n\t\t\ttree.push.apply(tree,inlineRuleMatch.rule.parse());\n\t\t\t// Look for the next inline rule\n\t\t\tinlineRuleMatch = this.findNextMatch(this.inlineRules,this.pos);\n\t\t\t// Look for the next terminator match\n\t\t\tterminatorRegExp.lastIndex = this.pos;\n\t\t\tterminatorMatch = terminatorRegExp.exec(this.source);\n\t\t}\n\t}\n\t// Process the remaining text\n\tif(this.pos < this.sourceLength) {\n\t\tthis.pushTextWidget(tree,this.source.substr(this.pos));\n\t}\n\tthis.pos = this.sourceLength;\n\treturn tree;\n};\n\n/*\nPush a text widget onto an array, respecting the configTrimWhiteSpace setting\n*/\nWikiParser.prototype.pushTextWidget = function(array,text) {\n\tif(this.configTrimWhiteSpace) {\n\t\ttext = $tw.utils.trim(text);\n\t}\n\tif(text) {\n\t\tarray.push({type: \"text\", text: text});\t\t\n\t}\n};\n\n/*\nParse zero or more class specifiers `.classname`\n*/\nWikiParser.prototype.parseClasses = function() {\n\tvar classRegExp = /\\.([^\\s\\.]+)/mg,\n\t\tclassNames = [];\n\tclassRegExp.lastIndex = this.pos;\n\tvar match = classRegExp.exec(this.source);\n\twhile(match && match.index === this.pos) {\n\t\tthis.pos = match.index + match[0].length;\n\t\tclassNames.push(match[1]);\n\t\tmatch = classRegExp.exec(this.source);\n\t}\n\treturn classNames;\n};\n\n/*\nAmend the rules used by this instance of the parser\n\ttype: `only` keeps just the named rules, `except` keeps all but the named rules\n\tnames: array of rule names\n*/\nWikiParser.prototype.amendRules = function(type,names) {\n\tnames = names || [];\n\t// Define the filter function\n\tvar keepFilter;\n\tif(type === \"only\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) !== -1;\n\t\t};\n\t} else if(type === \"except\") {\n\t\tkeepFilter = function(name) {\n\t\t\treturn names.indexOf(name) === -1;\n\t\t};\n\t} else {\n\t\treturn;\n\t}\n\t// Define a function to process each of our rule arrays\n\tvar processRuleArray = function(ruleArray) {\n\t\tfor(var t=ruleArray.length-1; t>=0; t--) {\n\t\t\tif(!keepFilter(ruleArray[t].rule.name)) {\n\t\t\t\truleArray.splice(t,1);\n\t\t\t}\n\t\t}\n\t};\n\t// Process each rule array\n\tprocessRuleArray(this.pragmaRules);\n\tprocessRuleArray(this.blockRules);\n\tprocessRuleArray(this.inlineRules);\n};\n\nexports[\"text/vnd.tiddlywiki\"] = WikiParser;\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "parser"
        },
        "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js": {
            "title": "$:/core/modules/parsers/wikiparser/rules/wikirulebase.js",
            "text": "/*\\\ntitle: $:/core/modules/parsers/wikiparser/rules/wikirulebase.js\ntype: application/javascript\nmodule-type: global\n\nBase class for wiki parser rules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nThis constructor is always overridden with a blank constructor, and so shouldn't be used\n*/\nvar WikiRuleBase = function() {\n};\n\n/*\nTo be overridden by individual rules\n*/\nWikiRuleBase.prototype.init = function(parser) {\n\tthis.parser = parser;\n};\n\n/*\nDefault implementation of findNextMatch uses RegExp matching\n*/\nWikiRuleBase.prototype.findNextMatch = function(startPos) {\n\tthis.matchRegExp.lastIndex = startPos;\n\tthis.match = this.matchRegExp.exec(this.parser.source);\n\treturn this.match ? this.match.index : undefined;\n};\n\nexports.WikiRuleBase = WikiRuleBase;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/pluginswitcher.js": {
            "title": "$:/core/modules/pluginswitcher.js",
            "text": "/*\\\ntitle: $:/core/modules/pluginswitcher.js\ntype: application/javascript\nmodule-type: global\n\nManages switching plugins for themes and languages.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\noptions:\nwiki: wiki store to be used\npluginType: type of plugin to be switched\ncontrollerTitle: title of tiddler used to control switching of this resource\ndefaultPlugins: array of default plugins to be used if nominated plugin isn't found\nonSwitch: callback when plugin is switched (single parameter is array of plugin titles)\n*/\nfunction PluginSwitcher(options) {\n\tthis.wiki = options.wiki;\n\tthis.pluginType = options.pluginType;\n\tthis.controllerTitle = options.controllerTitle;\n\tthis.defaultPlugins = options.defaultPlugins || [];\n\tthis.onSwitch = options.onSwitch;\n\t// Switch to the current plugin\n\tthis.switchPlugins();\n\t// Listen for changes to the selected plugin\n\tvar self = this;\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,self.controllerTitle)) {\n\t\t\tself.switchPlugins();\n\t\t}\n\t});\n}\n\nPluginSwitcher.prototype.switchPlugins = function() {\n\t// Get the name of the current theme\n\tvar selectedPluginTitle = this.wiki.getTiddlerText(this.controllerTitle);\n\t// If it doesn't exist, then fallback to one of the default themes\n\tvar index = 0;\n\twhile(!this.wiki.getTiddler(selectedPluginTitle) && index < this.defaultPlugins.length) {\n\t\tselectedPluginTitle = this.defaultPlugins[index++];\n\t}\n\t// Accumulate the titles of the plugins that we need to load\n\tvar plugins = [],\n\t\tself = this,\n\t\taccumulatePlugin = function(title) {\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tif(tiddler && tiddler.isPlugin() && plugins.indexOf(title) === -1) {\n\t\t\t\tplugins.push(title);\n\t\t\t\tvar pluginInfo = JSON.parse(self.wiki.getTiddlerText(title)),\n\t\t\t\t\tdependents = $tw.utils.parseStringArray(tiddler.fields.dependents || \"\");\n\t\t\t\t$tw.utils.each(dependents,function(title) {\n\t\t\t\t\taccumulatePlugin(title);\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\taccumulatePlugin(selectedPluginTitle);\n\t// Read the plugin info for the incoming plugins\n\tvar changes = $tw.wiki.readPluginInfo(plugins);\n\t// Unregister any existing theme tiddlers\n\tvar unregisteredTiddlers = $tw.wiki.unregisterPluginTiddlers(this.pluginType);\n\t// Register any new theme tiddlers\n\tvar registeredTiddlers = $tw.wiki.registerPluginTiddlers(this.pluginType,plugins);\n\t// Unpack the current theme tiddlers\n\t$tw.wiki.unpackPluginTiddlers();\n\t// Call the switch handler\n\tif(this.onSwitch) {\n\t\tthis.onSwitch(plugins);\n\t}\n};\n\nexports.PluginSwitcher = PluginSwitcher;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/saver-handler.js": {
            "title": "$:/core/modules/saver-handler.js",
            "text": "/*\\\ntitle: $:/core/modules/saver-handler.js\ntype: application/javascript\nmodule-type: global\n\nThe saver handler tracks changes to the store and handles saving the entire wiki via saver modules.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nInstantiate the saver handler with the following options:\nwiki: wiki to be synced\ndirtyTracking: true if dirty tracking should be performed\n*/\nfunction SaverHandler(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\tthis.dirtyTracking = options.dirtyTracking;\n\tthis.preloadDirty = options.preloadDirty || [];\n\tthis.pendingAutoSave = false;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"saver-handler\");\n\t// Initialise our savers\n\tif($tw.browser) {\n\t\tthis.initSavers();\n\t}\n\t// Only do dirty tracking if required\n\tif($tw.browser && this.dirtyTracking) {\n\t\t// Compile the dirty tiddler filter\n\t\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t\t// Count of changes that have not yet been saved\n\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(self.preloadDirty,function(title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t});\n\t\tthis.numChanges = filteredChanges.length;\n\t\t// Listen out for changes to tiddlers\n\t\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t\t// Filter the changes so that we only count changes to tiddlers that we care about\n\t\t\tvar filteredChanges = self.filterFn.call(self.wiki,function(iterator) {\n\t\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\t\t\titerator(tiddler,title);\n\t\t\t\t});\n\t\t\t});\n\t\t\t// Adjust the number of changes\n\t\t\tself.numChanges += filteredChanges.length;\n\t\t\tself.updateDirtyStatus();\n\t\t\t// Do any autosave if one is pending and there's no more change events\n\t\t\tif(self.pendingAutoSave && self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tself.pendingAutoSave = false;\n\t\t\t}\n\t\t});\n\t\t// Listen for the autosave event\n\t\t$tw.rootWidget.addEventListener(\"tm-auto-save-wiki\",function(event) {\n\t\t\t// Do the autosave unless there are outstanding tiddler change events\n\t\t\tif(self.wiki.getSizeOfTiddlerEventQueue() === 0) {\n\t\t\t\t// Check if we're dirty\n\t\t\t\tif(self.numChanges > 0) {\n\t\t\t\t\tself.saveWiki({\n\t\t\t\t\t\tmethod: \"autosave\",\n\t\t\t\t\t\tdownloadType: \"text/plain\"\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Otherwise put ourselves in the \"pending autosave\" state and wait for the change event before we do the autosave\n\t\t\t\tself.pendingAutoSave = true;\n\t\t\t}\n\t\t});\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t}\n\t// Install the save action handlers\n\tif($tw.browser) {\n\t\t$tw.rootWidget.addEventListener(\"tm-save-wiki\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-download-file\",function(event) {\n\t\t\tself.saveWiki({\n\t\t\t\tmethod: \"download\",\n\t\t\t\ttemplate: event.param,\n\t\t\t\tdownloadType: \"text/plain\",\n\t\t\t\tvariables: event.paramObject\n\t\t\t});\n\t\t});\n\t}\n}\n\nSaverHandler.prototype.titleSyncFilter = \"$:/config/SaverFilter\";\nSaverHandler.prototype.titleAutoSave = \"$:/config/AutoSave\";\nSaverHandler.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\n\n/*\nSelect the appropriate saver modules and set them up\n*/\nSaverHandler.prototype.initSavers = function(moduleType) {\n\tmoduleType = moduleType || \"saver\";\n\t// Instantiate the available savers\n\tthis.savers = [];\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(moduleType,function(title,module) {\n\t\tif(module.canSave(self)) {\n\t\t\tself.savers.push(module.create(self.wiki));\n\t\t}\n\t});\n\t// Sort the savers into priority order\n\tthis.savers.sort(function(a,b) {\n\t\tif(a.info.priority < b.info.priority) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(a.info.priority > b.info.priority) {\n\t\t\t\treturn +1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nSave the wiki contents. Options are:\n\tmethod: \"save\", \"autosave\" or \"download\"\n\ttemplate: the tiddler containing the template to save\n\tdownloadType: the content type for the saved file\n*/\nSaverHandler.prototype.saveWiki = function(options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tmethod = options.method || \"save\";\n\t// Ignore autosave if disabled\n\tif(method === \"autosave\" && this.wiki.getTiddlerText(this.titleAutoSave,\"yes\") !== \"yes\") {\n\t\treturn false;\n\t}\n\tvar\tvariables = options.variables || {},\n\t\ttemplate = options.template || \"$:/core/save/all\",\n\t\tdownloadType = options.downloadType || \"text/plain\",\n\t\ttext = this.wiki.renderTiddler(downloadType,template,options),\n\t\tcallback = function(err) {\n\t\t\tif(err) {\n\t\t\t\talert($tw.language.getString(\"Error/WhileSaving\") + \":\\n\\n\" + err);\n\t\t\t} else {\n\t\t\t\t// Clear the task queue if we're saving (rather than downloading)\n\t\t\t\tif(method !== \"download\") {\n\t\t\t\t\tself.numChanges = 0;\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t}\n\t\t\t\t$tw.notifier.display(self.titleSavedNotification);\n\t\t\t\tif(options.callback) {\n\t\t\t\t\toptions.callback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t// Call the highest priority saver that supports this method\n\tfor(var t=this.savers.length-1; t>=0; t--) {\n\t\tvar saver = this.savers[t];\n\t\tif(saver.info.capabilities.indexOf(method) !== -1 && saver.save(text,method,callback,{variables: {filename: variables.filename}})) {\n\t\t\tthis.logger.log(\"Saving wiki with method\",method,\"through saver\",saver.info.name);\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSaverHandler.prototype.isDirty = function() {\n\treturn this.numChanges > 0;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSaverHandler.prototype.updateDirtyStatus = function() {\n\tif($tw.browser) {\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",this.isDirty());\n\t}\n};\n\nexports.SaverHandler = SaverHandler;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/savers/andtidwiki.js": {
            "title": "$:/core/modules/savers/andtidwiki.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/andtidwiki.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the AndTidWiki Android app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar AndTidWiki = function(wiki) {\n};\n\nAndTidWiki.prototype.save = function(text,method,callback,options) {\n\tvar filename = options && options.variables ? options.variables.filename : null;\n\tif (method === \"download\") {\n\t\t// Support download\n\t\tif (window.twi.saveDownload) {\n\t\t\ttry {\n\t\t\t\twindow.twi.saveDownload(text,filename);\n\t\t\t} catch(err) {\n\t\t\t\tif (err.message === \"Method not found\") {\n\t\t\t\t\twindow.twi.saveDownload(text);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tvar link = document.createElement(\"a\");\n\t\t\tlink.setAttribute(\"href\",\"data:text/plain,\" + encodeURIComponent(text));\n\t\t\tif (filename) {\n\t\t\t    link.setAttribute(\"download\",filename);\n\t\t\t}\n\t\t\tdocument.body.appendChild(link);\n\t\t\tlink.click();\n\t\t\tdocument.body.removeChild(link);\n\t\t}\n\t} else if (window.twi.saveWiki) {\n\t\t// Direct save in Tiddloid\n\t\twindow.twi.saveWiki(text);\n\t} else {\n\t\t// Get the pathname of this document\n\t\tvar pathname = decodeURIComponent(document.location.toString().split(\"#\")[0]);\n\t\t// Strip the file://\n\t\tif(pathname.indexOf(\"file://\") === 0) {\n\t\t\tpathname = pathname.substr(7);\n\t\t}\n\t\t// Strip any query or location part\n\t\tvar p = pathname.indexOf(\"?\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\tp = pathname.indexOf(\"#\");\n\t\tif(p !== -1) {\n\t\t\tpathname = pathname.substr(0,p);\n\t\t}\n\t\t// Save the file\n\t\twindow.twi.saveFile(pathname,text);\n\t}\n\t// Call the callback\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nAndTidWiki.prototype.info = {\n\tname: \"andtidwiki\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.twi && !!window.twi.saveFile;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new AndTidWiki(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/beaker.js": {
            "title": "$:/core/modules/savers/beaker.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/beaker.js\ntype: application/javascript\nmodule-type: saver\n\nSaves files using the Beaker browser's (https://beakerbrowser.com) Dat protocol (https://datproject.org/)\nCompatible with beaker >= V0.7.2\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet up the saver\n*/\nvar BeakerSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nBeakerSaver.prototype.save = function(text,method,callback) {\n\tvar dat = new DatArchive(\"\" + window.location),\n\t\tpathname = (\"\" + window.location.pathname).split(\"#\")[0];\n\tdat.stat(pathname).then(function(value) {\n\t\tif(value.isDirectory()) {\n\t\t\tpathname = pathname + \"/index.html\";\n\t\t}\n\t\tdat.writeFile(pathname,text,\"utf8\").then(function(value) {\n\t\t\tcallback(null);\n\t\t},function(reason) {\n\t\t\tcallback(\"Beaker Saver Write Error: \" + reason);\n\t\t});\n\t},function(reason) {\n\t\tcallback(\"Beaker Saver Stat Error: \" + reason);\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nBeakerSaver.prototype.info = {\n\tname: \"beaker\",\n\tpriority: 3000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.DatArchive && location.protocol===\"dat:\";\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new BeakerSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/download.js": {
            "title": "$:/core/modules/savers/download.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/download.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar DownloadSaver = function(wiki) {\n};\n\nDownloadSaver.prototype.save = function(text,method,callback,options) {\n\toptions = options || {};\n\t// Get the current filename\n\tvar filename = options.variables.filename;\n\tif(!filename) {\n\t\tvar p = document.location.pathname.lastIndexOf(\"/\");\n\t\tif(p !== -1) {\n\t\t\t// We decode the pathname because document.location is URL encoded by the browser\n\t\t\tfilename = decodeURIComponent(document.location.pathname.substr(p+1));\n\t\t}\n\t}\n\tif(!filename) {\n\t\tfilename = \"tiddlywiki.html\";\n\t}\n\t// Set up the link\n\tvar link = document.createElement(\"a\");\n\tif(Blob !== undefined) {\n\t\tvar blob = new Blob([text], {type: \"text/html\"});\n\t\tlink.setAttribute(\"href\", URL.createObjectURL(blob));\n\t} else {\n\t\tlink.setAttribute(\"href\",\"data:text/html,\" + encodeURIComponent(text));\n\t}\n\tlink.setAttribute(\"download\",filename);\n\tdocument.body.appendChild(link);\n\tlink.click();\n\tdocument.body.removeChild(link);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nDownloadSaver.prototype.info = {\n\tname: \"download\",\n\tpriority: 100\n};\n\nObject.defineProperty(DownloadSaver.prototype.info, \"capabilities\", {\n\tget: function() {\n\t\tvar capabilities = [\"save\", \"download\"];\n\t\tif(($tw.wiki.getTextReference(\"$:/config/DownloadSaver/AutoSave\") || \"\").toLowerCase() === \"yes\") {\n\t\t\tcapabilities.push(\"autosave\");\n\t\t}\n\t\treturn capabilities;\n\t}\n});\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn document.createElement(\"a\").download !== undefined;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new DownloadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/fsosaver.js": {
            "title": "$:/core/modules/savers/fsosaver.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/fsosaver.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via MS FileSystemObject ActiveXObject\n\nNote: Since TiddlyWiki's markup contains the MOTW, the FileSystemObject normally won't be available. \nHowever, if the wiki is loaded as an .HTA file (Windows HTML Applications) then the FSO can be used.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar FSOSaver = function(wiki) {\n};\n\nFSOSaver.prototype.save = function(text,method,callback) {\n\t// Get the pathname of this document\n\tvar pathname = unescape(document.location.pathname);\n\t// Test for a Windows path of the form /x:\\blah...\n\tif(/^\\/[A-Z]\\:\\\\[^\\\\]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t} else if(document.location.hostname !== \"\" && /^\\/\\\\[^\\\\]+\\\\[^\\\\]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t// Remove the leading slash\n\t\tpathname = pathname.substr(1);\n\t\t// reconstruct UNC path\n\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t} else {\n\t\treturn false;\n\t}\n\t// Save the file (as UTF-16)\n\tvar fso = new ActiveXObject(\"Scripting.FileSystemObject\");\n\tvar file = fso.OpenTextFile(pathname,2,-1,-1);\n\tfile.Write(text);\n\tfile.Close();\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nFSOSaver.prototype.info = {\n\tname: \"FSOSaver\",\n\tpriority: 120,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\ttry {\n\t\treturn (window.location.protocol === \"file:\") && !!(new ActiveXObject(\"Scripting.FileSystemObject\"));\n\t} catch(e) { return false; }\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new FSOSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/gitea.js": {
            "title": "$:/core/modules/savers/gitea.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/gitea.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the gitea\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GiteaSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGiteaSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/Gitea/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"Gitea\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/Gitea/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/Gitea/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/Gitea/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/Gitea/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/Gitea/ServerURL\") || \"https://gitea\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"Basic \" + window.btoa(username + \":\" + password)\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !path || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar use_put = true;\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\tif(sha === \"\"){\n\t\t\t\t\tuse_put = false;\n\t\t\t\t}\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: endpoint + \"/repos/\" + repo + \"/branches/\" + branch,\n\t\t\t\ttype: \"GET\",\n\t\t\t\theaders: headers,\n\t\t\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\t\t\tif(xhr.status === 404) {\n\t\t\t\t\t\tcallback(\"Please ensure the branch in the Gitea repo exists\");\n\t\t\t\t\t}else{\n\t\t\t\t\t\tdata[\"branch\"] = branch;\n\t\t\t\t\t\tself.upload(uri + filename, use_put?\"PUT\":\"POST\", headers, data, callback);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\nGiteaSaver.prototype.upload = function(uri,method,headers,data,callback) {\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: method,\n\t\theaders: headers,\n\t\tdata: JSON.stringify(data),\n\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\tcallback(null);\n\t\t}\n\t});\n};\n\n/*\nInformation about this saver\n*/\nGiteaSaver.prototype.info = {\n\tname: \"Gitea\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GiteaSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/github.js": {
            "title": "$:/core/modules/savers/github.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/github.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitHub v3 REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitHubSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitHubSaver.prototype.save = function(text,method,callback) {\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitHub/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"github\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitHub/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitHub/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitHub/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitHub/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitHub/ServerURL\") || \"https://api.github.com\",\n\t\theaders = {\n\t\t\t\"Accept\": \"application/vnd.github.v3+json\",\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Authorization\": \"Basic \" + window.btoa(username + \":\" + password)\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !path || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/repos/\" + repo + \"/contents\" + path;\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tdata: {\n\t\t\tref: branch\n\t\t},\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tmessage: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: $tw.utils.base64Encode(text),\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a PUT request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + filename,\n\t\t\t\ttype: \"PUT\",\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitHubSaver.prototype.info = {\n\tname: \"github\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitHubSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/gitlab.js": {
            "title": "$:/core/modules/savers/gitlab.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/gitlab.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by pushing a commit to the GitLab REST API\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: true */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar GitLabSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nGitLabSaver.prototype.save = function(text,method,callback) {\n\t/* See https://docs.gitlab.com/ee/api/repository_files.html */\n\tvar self = this,\n\t\tusername = this.wiki.getTiddlerText(\"$:/GitLab/Username\"),\n\t\tpassword = $tw.utils.getPassword(\"gitlab\"),\n\t\trepo = this.wiki.getTiddlerText(\"$:/GitLab/Repo\"),\n\t\tpath = this.wiki.getTiddlerText(\"$:/GitLab/Path\",\"\"),\n\t\tfilename = this.wiki.getTiddlerText(\"$:/GitLab/Filename\"),\n\t\tbranch = this.wiki.getTiddlerText(\"$:/GitLab/Branch\") || \"master\",\n\t\tendpoint = this.wiki.getTiddlerText(\"$:/GitLab/ServerURL\") || \"https://gitlab.com/api/v4\",\n\t\theaders = {\n\t\t\t\"Content-Type\": \"application/json;charset=UTF-8\",\n\t\t\t\"Private-Token\": password\n\t\t};\n\t// Bail if we don't have everything we need\n\tif(!username || !password || !repo || !path || !filename) {\n\t\treturn false;\n\t}\n\t// Make sure the path start and ends with a slash\n\tif(path.substring(0,1) !== \"/\") {\n\t\tpath = \"/\" + path;\n\t}\n\tif(path.substring(path.length - 1) !== \"/\") {\n\t\tpath = path + \"/\";\n\t}\n\t// Compose the base URI\n\tvar uri = endpoint + \"/projects/\" + encodeURIComponent(repo) + \"/repository/\";\n\t// Perform a get request to get the details (inc shas) of files in the same path as our file\n\t$tw.utils.httpRequest({\n\t\turl: uri + \"tree/?path=\" + encodeURIComponent(path.replace(/^\\/+|\\/$/g, '')) + \"&branch=\" + encodeURIComponent(branch.replace(/^\\/+|\\/$/g, '')),\n\t\ttype: \"GET\",\n\t\theaders: headers,\n\t\tcallback: function(err,getResponseDataJson,xhr) {\n\t\t\tvar getResponseData,sha = \"\";\n\t\t\tif(err && xhr.status !== 404) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tvar requestType = \"POST\";\n\t\t\tif(xhr.status !== 404) {\n\t\t\t\tgetResponseData = JSON.parse(getResponseDataJson);\n\t\t\t\t$tw.utils.each(getResponseData,function(details) {\n\t\t\t\t\tif(details.name === filename) {\n\t\t\t\t\t\trequestType = \"PUT\";\n\t\t\t\t\t\tsha = details.sha;\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\tvar data = {\n\t\t\t\tcommit_message: $tw.language.getRawString(\"ControlPanel/Saving/GitService/CommitMessage\"),\n\t\t\t\tcontent: text,\n\t\t\t\tbranch: branch,\n\t\t\t\tsha: sha\n\t\t\t};\n\t\t\t// Perform a request to save the file\n\t\t\t$tw.utils.httpRequest({\n\t\t\t\turl: uri + \"files/\" + encodeURIComponent(path.replace(/^\\/+/, '') + filename),\n\t\t\t\ttype: requestType,\n\t\t\t\theaders: headers,\n\t\t\t\tdata: JSON.stringify(data),\n\t\t\t\tcallback: function(err,putResponseDataJson,xhr) {\n\t\t\t\t\tif(err) {\n\t\t\t\t\t\treturn callback(err);\n\t\t\t\t\t}\n\t\t\t\t\tvar putResponseData = JSON.parse(putResponseDataJson);\n\t\t\t\t\tcallback(null);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nGitLabSaver.prototype.info = {\n\tname: \"gitlab\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new GitLabSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/manualdownload.js": {
            "title": "$:/core/modules/savers/manualdownload.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/manualdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via HTML5's download APIs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Title of the tiddler containing the download message\nvar downloadInstructionsTitle = \"$:/language/Modals/Download\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar ManualDownloadSaver = function(wiki) {\n};\n\nManualDownloadSaver.prototype.save = function(text,method,callback) {\n\t$tw.modal.display(downloadInstructionsTitle,{\n\t\tdownloadLink: \"data:text/html,\" + encodeURIComponent(text)\n\t});\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nManualDownloadSaver.prototype.info = {\n\tname: \"manualdownload\",\n\tpriority: 0,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new ManualDownloadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/msdownload.js": {
            "title": "$:/core/modules/savers/msdownload.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/msdownload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via window.navigator.msSaveBlob()\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar MsDownloadSaver = function(wiki) {\n};\n\nMsDownloadSaver.prototype.save = function(text,method,callback) {\n\t// Get the current filename\n\tvar filename = \"tiddlywiki.html\",\n\t\tp = document.location.pathname.lastIndexOf(\"/\");\n\tif(p !== -1) {\n\t\tfilename = document.location.pathname.substr(p+1);\n\t}\n\t// Set up the link\n\tvar blob = new Blob([text], {type: \"text/html\"});\n\twindow.navigator.msSaveBlob(blob,filename);\n\t// Callback that we succeeded\n\tcallback(null);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nMsDownloadSaver.prototype.info = {\n\tname: \"msdownload\",\n\tpriority: 110,\n\tcapabilities: [\"save\", \"download\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn !!window.navigator.msSaveBlob;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new MsDownloadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/put.js": {
            "title": "$:/core/modules/savers/put.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/put.js\ntype: application/javascript\nmodule-type: saver\n\nSaves wiki by performing a PUT request to the server\n\nWorks with any server which accepts a PUT request\nto the current URL, such as a WebDAV server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRetrieve ETag if available\n*/\nvar retrieveETag = function(self) {\n\tvar headers = {\n\t\tAccept: \"*/*;charset=UTF-8\"\n\t};\n\t$tw.utils.httpRequest({\n\t\turl: self.uri(),\n\t\ttype: \"HEAD\",\n\t\theaders: headers,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar etag = xhr.getResponseHeader(\"ETag\");\n\t\t\tif(!etag) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tself.etag = etag.replace(/^W\\//,\"\");\n\t\t}\n\t});\n};\n\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar PutSaver = function(wiki) {\n\tthis.wiki = wiki;\n\tvar self = this;\n\tvar uri = this.uri();\n\t// Async server probe. Until probe finishes, save will fail fast\n\t// See also https://github.com/Jermolene/TiddlyWiki5/issues/2276\n\t$tw.utils.httpRequest({\n\t\turl: uri,\n\t\ttype: \"OPTIONS\",\n\t\tcallback: function(err,data,xhr) {\n\t\t\t// Check DAV header http://www.webdav.org/specs/rfc2518.html#rfc.section.9.1\n\t\t\tif(!err) {\n\t\t\t\tself.serverAcceptsPuts = xhr.status === 200 && !!xhr.getResponseHeader(\"dav\");\n\t\t\t}\n\t\t}\n\t});\n\tretrieveETag(this);\n};\n\nPutSaver.prototype.uri = function() {\n\treturn document.location.toString().split(\"#\")[0];\n};\n\n// TODO: in case of edit conflict\n// Prompt: Do you want to save over this? Y/N\n// Merging would be ideal, and may be possible using future generic merge flow\nPutSaver.prototype.save = function(text,method,callback) {\n\tif(!this.serverAcceptsPuts) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tvar headers = {\n\t\t\"Content-Type\": \"text/html;charset=UTF-8\"\n\t};\n\tif(this.etag) {\n\t\theaders[\"If-Match\"] = this.etag;\n\t}\n\t$tw.utils.httpRequest({\n\t\turl: this.uri(),\n\t\ttype: \"PUT\",\n\t\theaders: headers,\n\t\tdata: text,\n\t\tcallback: function(err,data,xhr) {\n\t\t\tif(err) {\n\t\t\t\t// response is textual: \"XMLHttpRequest error code: 412\"\n\t\t\t\tvar status = Number(err.substring(err.indexOf(':') + 2, err.length))\n\t\t\t\tif(status === 412) { // edit conflict\n\t\t\t\t\tvar message = $tw.language.getString(\"Error/EditConflict\");\n\t\t\t\t\tcallback(message);\n\t\t\t\t} else {\n\t\t\t\t\tcallback(err); // fail\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tself.etag = xhr.getResponseHeader(\"ETag\");\n\t\t\t\tif(self.etag == null) {\n\t\t\t\t\tretrieveETag(self);\n\t\t\t\t}\n\t\t\t\tcallback(null); // success\n\t\t\t}\n\t\t}\n\t});\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nPutSaver.prototype.info = {\n\tname: \"put\",\n\tpriority: 2000,\n\tcapabilities: [\"save\",\"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn /^https?:/.test(location.protocol);\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new PutSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/tiddlyfox.js": {
            "title": "$:/core/modules/savers/tiddlyfox.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/tiddlyfox.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TiddlyFox file extension\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TiddlyFoxSaver = function(wiki) {\n};\n\nTiddlyFoxSaver.prototype.save = function(text,method,callback) {\n\tvar messageBox = document.getElementById(\"tiddlyfox-message-box\");\n\tif(messageBox) {\n\t\t// Get the pathname of this document\n\t\tvar pathname = document.location.toString().split(\"#\")[0];\n\t\t// Replace file://localhost/ with file:///\n\t\tif(pathname.indexOf(\"file://localhost/\") === 0) {\n\t\t\tpathname = \"file://\" + pathname.substr(16);\n\t\t}\n\t\t// Windows path file:///x:/blah/blah --> x:\\blah\\blah\n\t\tif(/^file\\:\\/\\/\\/[A-Z]\\:\\//i.test(pathname)) {\n\t\t\t// Remove the leading slash and convert slashes to backslashes\n\t\t\tpathname = pathname.substr(8).replace(/\\//g,\"\\\\\");\n\t\t// Firefox Windows network path file://///server/share/blah/blah --> //server/share/blah/blah\n\t\t} else if(pathname.indexOf(\"file://///\") === 0) {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(10)).replace(/\\//g,\"\\\\\");\n\t\t// Mac/Unix local path file:///path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:///\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(7));\n\t\t// Mac/Unix local path file:/path/path --> /path/path\n\t\t} else if(pathname.indexOf(\"file:/\") === 0) {\n\t\t\tpathname = unescape(pathname.substr(5));\n\t\t// Otherwise Windows networth path file://server/share/path/path --> \\\\server\\share\\path\\path\n\t\t} else {\n\t\t\tpathname = \"\\\\\\\\\" + unescape(pathname.substr(7)).replace(new RegExp(\"/\",\"g\"),\"\\\\\");\n\t\t}\n\t\t// Create the message element and put it in the message box\n\t\tvar message = document.createElement(\"div\");\n\t\tmessage.setAttribute(\"data-tiddlyfox-path\",decodeURIComponent(pathname));\n\t\tmessage.setAttribute(\"data-tiddlyfox-content\",text);\n\t\tmessageBox.appendChild(message);\n\t\t// Add an event handler for when the file has been saved\n\t\tmessage.addEventListener(\"tiddlyfox-have-saved-file\",function(event) {\n\t\t\tcallback(null);\n\t\t}, false);\n\t\t// Create and dispatch the custom event to the extension\n\t\tvar event = document.createEvent(\"Events\");\n\t\tevent.initEvent(\"tiddlyfox-save-file\",true,false);\n\t\tmessage.dispatchEvent(event);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyFoxSaver.prototype.info = {\n\tname: \"tiddlyfox\",\n\tpriority: 1500,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyFoxSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/tiddlyie.js": {
            "title": "$:/core/modules/savers/tiddlyie.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/tiddlyie.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via Internet Explorer BHO extenion (TiddlyIE)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar TiddlyIESaver = function(wiki) {\n};\n\nTiddlyIESaver.prototype.save = function(text,method,callback) {\n\t// Check existence of TiddlyIE BHO extension (note: only works after document is complete)\n\tif(typeof(window.TiddlyIE) != \"undefined\") {\n\t\t// Get the pathname of this document\n\t\tvar pathname = unescape(document.location.pathname);\n\t\t// Test for a Windows path of the form /x:/blah...\n\t\tif(/^\\/[A-Z]\\:\\/[^\\/]+/i.test(pathname)) {\t// ie: ^/[a-z]:/[^/]+ (is this better?: ^/[a-z]:/[^/]+(/[^/]+)*\\.[^/]+ )\n\t\t\t// Remove the leading slash\n\t\t\tpathname = pathname.substr(1);\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t} else if(document.hostname !== \"\" && /^\\/[^\\/]+\\/[^\\/]+/i.test(pathname)) {\t// test for \\\\server\\share\\blah... - ^/[^/]+/[^/]+\n\t\t\t// Convert slashes to backslashes\n\t\t\tpathname = pathname.replace(/\\//g,\"\\\\\");\n\t\t\t// reconstruct UNC path\n\t\t\tpathname = \"\\\\\\\\\" + document.location.hostname + pathname;\n\t\t} else return false;\n\t\t// Prompt the user to save the file\n\t\twindow.TiddlyIE.save(pathname, text);\n\t\t// Callback that we succeeded\n\t\tcallback(null);\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nInformation about this saver\n*/\nTiddlyIESaver.prototype.info = {\n\tname: \"tiddlyiesaver\",\n\tpriority: 1500,\n\tcapabilities: [\"save\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn (window.location.protocol === \"file:\");\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TiddlyIESaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/twedit.js": {
            "title": "$:/core/modules/savers/twedit.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/twedit.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via the TWEdit iOS app\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false, netscape: false, Components: false */\n\"use strict\";\n\nvar TWEditSaver = function(wiki) {\n};\n\nTWEditSaver.prototype.save = function(text,method,callback) {\n\t// Bail if we're not running under TWEdit\n\tif(typeof DeviceInfo !== \"object\") {\n\t\treturn false;\n\t}\n\t// Get the pathname of this document\n\tvar pathname = decodeURIComponent(document.location.pathname);\n\t// Strip any query or location part\n\tvar p = pathname.indexOf(\"?\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\tp = pathname.indexOf(\"#\");\n\tif(p !== -1) {\n\t\tpathname = pathname.substr(0,p);\n\t}\n\t// Remove the leading \"/Documents\" from path\n\tvar prefix = \"/Documents\";\n\tif(pathname.indexOf(prefix) === 0) {\n\t\tpathname = pathname.substr(prefix.length);\n\t}\n\t// Error handler\n\tvar errorHandler = function(event) {\n\t\t// Error\n\t\tcallback($tw.language.getString(\"Error/SavingToTWEdit\") + \": \" + event.target.error.code);\n\t};\n\t// Get the file system\n\twindow.requestFileSystem(LocalFileSystem.PERSISTENT,0,function(fileSystem) {\n\t\t// Now we've got the filesystem, get the fileEntry\n\t\tfileSystem.root.getFile(pathname, {create: true}, function(fileEntry) {\n\t\t\t// Now we've got the fileEntry, create the writer\n\t\t\tfileEntry.createWriter(function(writer) {\n\t\t\t\twriter.onerror = errorHandler;\n\t\t\t\twriter.onwrite = function() {\n\t\t\t\t\tcallback(null);\n\t\t\t\t};\n\t\t\t\twriter.position = 0;\n\t\t\t\twriter.write(text);\n\t\t\t},errorHandler);\n\t\t}, errorHandler);\n\t}, errorHandler);\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nTWEditSaver.prototype.info = {\n\tname: \"twedit\",\n\tpriority: 1600,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new TWEditSaver(wiki);\n};\n\n/////////////////////////// Hack\n// HACK: This ensures that TWEdit recognises us as a TiddlyWiki document\nif($tw.browser) {\n\twindow.version = {title: \"TiddlyWiki\"};\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/savers/upload.js": {
            "title": "$:/core/modules/savers/upload.js",
            "text": "/*\\\ntitle: $:/core/modules/savers/upload.js\ntype: application/javascript\nmodule-type: saver\n\nHandles saving changes via upload to a server.\n\nDesigned to be compatible with BidiX's UploadPlugin at http://tiddlywiki.bidix.info/#UploadPlugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSelect the appropriate saver module and set it up\n*/\nvar UploadSaver = function(wiki) {\n\tthis.wiki = wiki;\n};\n\nUploadSaver.prototype.save = function(text,method,callback) {\n\t// Get the various parameters we need\n\tvar backupDir = this.wiki.getTextReference(\"$:/UploadBackupDir\") || \".\",\n\t\tusername = this.wiki.getTextReference(\"$:/UploadName\"),\n\t\tpassword = $tw.utils.getPassword(\"upload\"),\n\t\tuploadDir = this.wiki.getTextReference(\"$:/UploadDir\") || \".\",\n\t\tuploadFilename = this.wiki.getTextReference(\"$:/UploadFilename\") || \"index.html\",\n\t\turl = this.wiki.getTextReference(\"$:/UploadURL\");\n\t// Bail out if we don't have the bits we need\n\tif(!username || username.toString().trim() === \"\" || !password || password.toString().trim() === \"\") {\n\t\treturn false;\n\t}\n\t// Construct the url if not provided\n\tif(!url) {\n\t\turl = \"http://\" + username + \".tiddlyspot.com/store.cgi\";\n\t}\n\t// Assemble the header\n\tvar boundary = \"---------------------------\" + \"AaB03x\";\t\n\tvar uploadFormName = \"UploadPlugin\";\n\tvar head = [];\n\thead.push(\"--\" + boundary + \"\\r\\nContent-disposition: form-data; name=\\\"UploadPlugin\\\"\\r\\n\");\n\thead.push(\"backupDir=\" + backupDir + \";user=\" + username + \";password=\" + password + \";uploaddir=\" + uploadDir + \";;\"); \n\thead.push(\"\\r\\n\" + \"--\" + boundary);\n\thead.push(\"Content-disposition: form-data; name=\\\"userfile\\\"; filename=\\\"\" + uploadFilename + \"\\\"\");\n\thead.push(\"Content-Type: text/html;charset=UTF-8\");\n\thead.push(\"Content-Length: \" + text.length + \"\\r\\n\");\n\thead.push(\"\");\n\t// Assemble the tail and the data itself\n\tvar tail = \"\\r\\n--\" + boundary + \"--\\r\\n\",\n\t\tdata = head.join(\"\\r\\n\") + text + tail;\n\t// Do the HTTP post\n\tvar http = new XMLHttpRequest();\n\thttp.open(\"POST\",url,true,username,password);\n\thttp.setRequestHeader(\"Content-Type\",\"multipart/form-data; charset=UTF-8; boundary=\" + boundary);\n\thttp.onreadystatechange = function() {\n\t\tif(http.readyState == 4 && http.status == 200) {\n\t\t\tif(http.responseText.substr(0,4) === \"0 - \") {\n\t\t\t\tcallback(null);\n\t\t\t} else {\n\t\t\t\tcallback(http.responseText);\n\t\t\t}\n\t\t}\n\t};\n\ttry {\n\t\thttp.send(data);\n\t} catch(ex) {\n\t\treturn callback($tw.language.getString(\"Error/Caption\") + \":\" + ex);\n\t}\n\t$tw.notifier.display(\"$:/language/Notifications/Save/Starting\");\n\treturn true;\n};\n\n/*\nInformation about this saver\n*/\nUploadSaver.prototype.info = {\n\tname: \"upload\",\n\tpriority: 2000,\n\tcapabilities: [\"save\", \"autosave\"]\n};\n\n/*\nStatic method that returns true if this saver is capable of working\n*/\nexports.canSave = function(wiki) {\n\treturn true;\n};\n\n/*\nCreate an instance of this saver\n*/\nexports.create = function(wiki) {\n\treturn new UploadSaver(wiki);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "saver"
        },
        "$:/core/modules/server/authenticators/basic.js": {
            "title": "$:/core/modules/server/authenticators/basic.js",
            "text": "/*\\\ntitle: $:/core/modules/server/authenticators/basic.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for WWW basic authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\");\n}\n\nfunction BasicAuthenticator(server) {\n\tthis.server = server;\n\tthis.credentialsData = [];\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nBasicAuthenticator.prototype.init = function() {\n\t// Read the credentials data\n\tthis.credentialsFilepath = this.server.get(\"credentials\");\n\tif(this.credentialsFilepath) {\n\t\tvar resolveCredentialsFilepath = path.resolve($tw.boot.wikiPath,this.credentialsFilepath);\n\t\tif(fs.existsSync(resolveCredentialsFilepath) && !fs.statSync(resolveCredentialsFilepath).isDirectory()) {\n\t\t\tvar credentialsText = fs.readFileSync(resolveCredentialsFilepath,\"utf8\"),\n\t\t\t\tcredentialsData = $tw.utils.parseCsvStringWithHeader(credentialsText);\n\t\t\tif(typeof credentialsData === \"string\") {\n\t\t\t\treturn \"Error: \" + credentialsData + \" reading credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t\t} else {\n\t\t\t\tthis.credentialsData = credentialsData;\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"Error: Unable to load user credentials from '\" + resolveCredentialsFilepath + \"'\";\n\t\t}\n\t}\n\t// Add the hardcoded username and password if specified\n\tif(this.server.get(\"username\") && this.server.get(\"password\")) {\n\t\tthis.credentialsData = this.credentialsData || [];\n\t\tthis.credentialsData.push({\n\t\t\tusername: this.server.get(\"username\"),\n\t\t\tpassword: this.server.get(\"password\")\n\t\t});\n\t}\n\treturn this.credentialsData.length > 0;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nBasicAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Extract the incoming username and password from the request\n\tvar header = request.headers.authorization || \"\";\n\tif(!header && state.allowAnon) {\n\t\t// If there's no header and anonymous access is allowed then we don't set authenticatedUsername\n\t\treturn true;\n\t}\n\tvar token = header.split(/\\s+/).pop() || \"\",\n\t\tauth = $tw.utils.base64Decode(token),\n\t\tparts = auth.split(/:/),\n\t\tincomingUsername = parts[0],\n\t\tincomingPassword = parts[1];\n\t// Check that at least one of the credentials matches\n\tvar matchingCredentials = this.credentialsData.find(function(credential) {\n\t\treturn credential.username === incomingUsername && credential.password === incomingPassword;\n\t});\n\tif(matchingCredentials) {\n\t\t// If so, add the authenticated username to the request state\n\t\tstate.authenticatedUsername = incomingUsername;\n\t\treturn true;\n\t} else {\n\t\t// If not, return an authentication challenge\n\t\tresponse.writeHead(401,\"Authentication required\",{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\n\t\treturn false;\n\t}\n};\n\nexports.AuthenticatorClass = BasicAuthenticator;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "authenticator"
        },
        "$:/core/modules/server/authenticators/header.js": {
            "title": "$:/core/modules/server/authenticators/header.js",
            "text": "/*\\\ntitle: $:/core/modules/server/authenticators/header.js\ntype: application/javascript\nmodule-type: authenticator\n\nAuthenticator for trusted header authentication\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction HeaderAuthenticator(server) {\n\tthis.server = server;\n\tthis.header = server.get(\"authenticated-user-header\");\n}\n\n/*\nReturns true if the authenticator is active, false if it is inactive, or a string if there is an error\n*/\nHeaderAuthenticator.prototype.init = function() {\n\treturn !!this.header;\n};\n\n/*\nReturns true if the request is authenticated and assigns the \"authenticatedUsername\" state variable.\nReturns false if the request couldn't be authenticated having sent an appropriate response to the browser\n*/\nHeaderAuthenticator.prototype.authenticateRequest = function(request,response,state) {\n\t// Otherwise, authenticate as the username in the specified header\n\tvar username = request.headers[this.header];\n\tif(!username && !state.allowAnon) {\n\t\tresponse.writeHead(401,\"Authorization header required to login to '\" + state.server.servername + \"'\");\n\t\tresponse.end();\n\t\treturn false;\n\t} else {\n\t\t// authenticatedUsername will be undefined for anonymous users\n\t\tstate.authenticatedUsername = username;\n\t\treturn true;\n\t}\n};\n\nexports.AuthenticatorClass = HeaderAuthenticator;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "authenticator"
        },
        "$:/core/modules/server/routes/delete-tiddler.js": {
            "title": "$:/core/modules/server/routes/delete-tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/delete-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nDELETE /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"DELETE\";\n\nexports.path = /^\\/bags\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]);\n\tstate.wiki.deleteTiddler(title);\n\tresponse.writeHead(204, \"OK\", {\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-favicon.js": {
            "title": "$:/core/modules/server/routes/get-favicon.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-favicon.js\ntype: application/javascript\nmodule-type: route\n\nGET /favicon.ico\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/favicon.ico$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"image/x-icon\"});\n\tvar buffer = state.wiki.getTiddlerText(\"$:/favicon.ico\",\"\");\n\tresponse.end(buffer,\"base64\");\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-file.js": {
            "title": "$:/core/modules/server/routes/get-file.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-file.js\ntype: application/javascript\nmodule-type: route\n\nGET /files/:filepath\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/files\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar path = require(\"path\"),\n\t\tfs = require(\"fs\"),\n\t\tutil = require(\"util\"),\n\t\tsuppliedFilename = decodeURIComponent(state.params[0]),\n\t\tfilename = path.resolve($tw.boot.wikiPath,\"files\",suppliedFilename),\n\t\textension = path.extname(filename);\n\tfs.readFile(filename,function(err,content) {\n\t\tvar status,content,type = \"text/plain\";\n\t\tif(err) {\n\t\t\tconsole.log(\"Error accessing file \" + filename + \": \" + err.toString());\n\t\t\tstatus = 404;\n\t\t\tcontent = \"File '\" + suppliedFilename + \"' not found\";\n\t\t} else {\n\t\t\tstatus = 200;\n\t\t\tcontent = content;\n\t\t\ttype = ($tw.config.fileExtensionInfo[extension] ? $tw.config.fileExtensionInfo[extension].type : \"application/octet-stream\");\n\t\t}\n\t\tresponse.writeHead(status,{\n\t\t\t\"Content-Type\": type\n\t\t});\n\t\tresponse.end(content);\n\t});\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-index.js": {
            "title": "$:/core/modules/server/routes/get-index.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-index.js\ntype: application/javascript\nmodule-type: route\n\nGET /\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar zlib = require(\"zlib\");\n\nexports.method = \"GET\";\n\nexports.path = /^\\/$/;\n\nexports.handler = function(request,response,state) {\n\tvar acceptEncoding = request.headers[\"accept-encoding\"];\n\tif(!acceptEncoding) {\n\t\tacceptEncoding = \"\";\n\t}\n\tvar text = state.wiki.renderTiddler(state.server.get(\"root-render-type\"),state.server.get(\"root-tiddler\")),\n\t\tresponseHeaders = {\n\t\t\"Content-Type\": state.server.get(\"root-serve-type\")\n\t};\n\t/*\n\tIf the gzip=yes flag for `listen` is set, check if the user agent permits\n\tcompression. If so, compress our response. Note that we use the synchronous\n\tfunctions from zlib to stay in the imperative style. The current `Server`\n\tdoesn't depend on this, and we may just as well use the async versions.\n\t*/\n\tif(state.server.enableGzip) {\n\t\tif (/\\bdeflate\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"deflate\";\n\t\t\ttext = zlib.deflateSync(text);\n\t\t} else if (/\\bgzip\\b/.test(acceptEncoding)) {\n\t\t\tresponseHeaders[\"Content-Encoding\"] = \"gzip\";\n\t\t\ttext = zlib.gzipSync(text);\n\t\t}\n\t}\n\tresponse.writeHead(200,responseHeaders);\n\tresponse.end(text);\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-login-basic.js": {
            "title": "$:/core/modules/server/routes/get-login-basic.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-login-basic.js\ntype: application/javascript\nmodule-type: route\n\nGET /login-basic -- force a Basic Authentication challenge\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/login-basic$/;\n\nexports.handler = function(request,response,state) {\n\tif(!state.authenticatedUsername) {\n\t\t// Challenge if there's no username\n\t\tresponse.writeHead(401,{\n\t\t\t\"WWW-Authenticate\": 'Basic realm=\"Please provide your username and password to login to ' + state.server.servername + '\"'\n\t\t});\n\t\tresponse.end();\t\t\n\t} else {\n\t\t// Redirect to the root wiki if login worked\n\t\tresponse.writeHead(302,{\n\t\t\tLocation: \"/\"\n\t\t});\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-status.js": {
            "title": "$:/core/modules/server/routes/get-status.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-status.js\ntype: application/javascript\nmodule-type: route\n\nGET /status\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/status$/;\n\nexports.handler = function(request,response,state) {\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar text = JSON.stringify({\n\t\tusername: state.authenticatedUsername || state.server.get(\"anon-username\") || \"\",\n\t\tanonymous: !state.authenticatedUsername,\n\t\tread_only: !state.server.isAuthorized(\"writers\",state.authenticatedUsername),\n\t\tspace: {\n\t\t\trecipe: \"default\"\n\t\t},\n\t\ttiddlywiki_version: $tw.version\n\t});\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-tiddler-html.js": {
            "title": "$:/core/modules/server/routes/get-tiddler-html.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler-html.js\ntype: application/javascript\nmodule-type: route\n\nGET /:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/([^\\/]+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title);\n\tif(tiddler) {\n\t\tvar renderType = tiddler.getFieldString(\"_render_type\"),\n\t\t\trenderTemplate = tiddler.getFieldString(\"_render_template\");\n\t\t// Tiddler fields '_render_type' and '_render_template' overwrite\n\t\t// system wide settings for render type and template\n\t\tif(state.wiki.isSystemTiddler(title)) {\n\t\t\trenderType = renderType || state.server.get(\"system-tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"system-tiddler-render-template\");\n\t\t} else {\n\t\t\trenderType = renderType || state.server.get(\"tiddler-render-type\");\n\t\t\trenderTemplate = renderTemplate || state.server.get(\"tiddler-render-template\");\n\t\t}\n\t\tvar text = state.wiki.renderTiddler(renderType,renderTemplate,{parseAsInline: true, variables: {currentTiddler: title}});\n\t\t// Naughty not to set a content-type, but it's the easiest way to ensure the browser will see HTML pages as HTML, and accept plain text tiddlers as CSS or JS\n\t\tresponse.writeHead(200);\n\t\tresponse.end(text,\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-tiddler.js": {
            "title": "$:/core/modules/server/routes/get-tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\t\ttiddler = state.wiki.getTiddler(title),\n\t\ttiddlerFields = {},\n\t\tknownFields = [\n\t\t\t\"bag\", \"created\", \"creator\", \"modified\", \"modifier\", \"permissions\", \"recipe\", \"revision\", \"tags\", \"text\", \"title\", \"type\", \"uri\"\n\t\t];\n\tif(tiddler) {\n\t\t$tw.utils.each(tiddler.fields,function(field,name) {\n\t\t\tvar value = tiddler.getFieldString(name);\n\t\t\tif(knownFields.indexOf(name) !== -1) {\n\t\t\t\ttiddlerFields[name] = value;\n\t\t\t} else {\n\t\t\t\ttiddlerFields.fields = tiddlerFields.fields || {};\n\t\t\t\ttiddlerFields.fields[name] = value;\n\t\t\t}\n\t\t});\n\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\ttiddlerFields.bag = \"default\";\n\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\t\tresponse.end(JSON.stringify(tiddlerFields),\"utf8\");\n\t} else {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t}\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/get-tiddlers-json.js": {
            "title": "$:/core/modules/server/routes/get-tiddlers-json.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/get-tiddlers-json.js\ntype: application/javascript\nmodule-type: route\n\nGET /recipes/default/tiddlers/tiddlers.json?filter=<filter>\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DEFAULT_FILTER = \"[all[tiddlers]!is[system]sort[title]]\";\n\nexports.method = \"GET\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers.json$/;\n\nexports.handler = function(request,response,state) {\n\tvar filter = state.queryParameters.filter || DEFAULT_FILTER;\n\tif($tw.wiki.getTiddlerText(\"$:/config/Server/AllowAllExternalFilters\") !== \"yes\") {\n\t\tif($tw.wiki.getTiddlerText(\"$:/config/Server/ExternalFilters/\" + filter) !== \"yes\") {\n\t\t\tconsole.log(\"Blocked attempt to GET /recipes/default/tiddlers/tiddlers.json with filter: \" + filter);\n\t\t\tresponse.writeHead(403);\n\t\t\tresponse.end();\n\t\t\treturn;\n\t\t}\n\t}\n\tvar excludeFields = (state.queryParameters.exclude || \"text\").split(\",\"),\n\t\ttitles = state.wiki.filterTiddlers(filter);\n\tresponse.writeHead(200, {\"Content-Type\": \"application/json\"});\n\tvar tiddlers = [];\n\t$tw.utils.each(titles,function(title) {\n\t\tvar tiddler = state.wiki.getTiddler(title);\n\t\tif(tiddler) {\n\t\t\tvar tiddlerFields = tiddler.getFieldStrings({exclude: excludeFields});\n\t\t\ttiddlerFields.revision = state.wiki.getChangeCount(title);\n\t\t\ttiddlerFields.type = tiddlerFields.type || \"text/vnd.tiddlywiki\";\n\t\t\ttiddlers.push(tiddlerFields);\n\t\t}\n\t});\n\tvar text = JSON.stringify(tiddlers);\n\tresponse.end(text,\"utf8\");\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/routes/put-tiddler.js": {
            "title": "$:/core/modules/server/routes/put-tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/server/routes/put-tiddler.js\ntype: application/javascript\nmodule-type: route\n\nPUT /recipes/default/tiddlers/:title\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.method = \"PUT\";\n\nexports.path = /^\\/recipes\\/default\\/tiddlers\\/(.+)$/;\n\nexports.handler = function(request,response,state) {\n\tvar title = decodeURIComponent(state.params[0]),\n\tfields = JSON.parse(state.data);\n\t// Pull up any subfields in the `fields` object\n\tif(fields.fields) {\n\t\t$tw.utils.each(fields.fields,function(field,name) {\n\t\t\tfields[name] = field;\n\t\t});\n\t\tdelete fields.fields;\n\t}\n\t// Remove any revision field\n\tif(fields.revision) {\n\t\tdelete fields.revision;\n\t}\n\tstate.wiki.addTiddler(new $tw.Tiddler(state.wiki.getCreationFields(),fields,{title: title},state.wiki.getModificationFields()));\n\tvar changeCount = state.wiki.getChangeCount(title).toString();\n\tresponse.writeHead(204, \"OK\",{\n\t\tEtag: \"\\\"default/\" + encodeURIComponent(title) + \"/\" + changeCount + \":\\\"\",\n\t\t\"Content-Type\": \"text/plain\"\n\t});\n\tresponse.end();\n};\n\n}());\n",
            "type": "application/javascript",
            "module-type": "route"
        },
        "$:/core/modules/server/server.js": {
            "title": "$:/core/modules/server/server.js",
            "text": "/*\\\ntitle: $:/core/modules/server/server.js\ntype: application/javascript\nmodule-type: library\n\nServe tiddlers over http\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nif($tw.node) {\n\tvar util = require(\"util\"),\n\t\tfs = require(\"fs\"),\n\t\turl = require(\"url\"),\n\t\tpath = require(\"path\"),\n\t\tquerystring = require(\"querystring\");\n}\n\n/*\nA simple HTTP server with regexp-based routes\noptions: variables - optional hashmap of variables to set (a misnomer - they are really constant parameters)\n\t\t routes - optional array of routes to use\n\t\t wiki - reference to wiki object\n*/\nfunction Server(options) {\n\tvar self = this;\n\tthis.routes = options.routes || [];\n\tthis.authenticators = options.authenticators || [];\n\tthis.wiki = options.wiki;\n\tthis.servername = $tw.utils.transliterateToSafeASCII(this.wiki.getTiddlerText(\"$:/SiteTitle\") || \"TiddlyWiki5\");\n\t// Initialise the variables\n\tthis.variables = $tw.utils.extend({},this.defaultVariables);\n\tif(options.variables) {\n\t\tfor(var variable in options.variables) {\n\t\t\tif(options.variables[variable]) {\n\t\t\t\tthis.variables[variable] = options.variables[variable];\n\t\t\t}\n\t\t}\t\t\n\t}\n\t$tw.utils.extend({},this.defaultVariables,options.variables);\n\t// Initialise CSRF\n\tthis.csrfDisable = this.get(\"csrf-disable\") === \"yes\";\n\t// Initialize Gzip compression\n\tthis.enableGzip = this.get(\"gzip\") === \"yes\";\n\t// Initialise authorization\n\tvar authorizedUserName = (this.get(\"username\") && this.get(\"password\")) ? this.get(\"username\") : \"(anon)\";\n\tthis.authorizationPrincipals = {\n\t\treaders: (this.get(\"readers\") || authorizedUserName).split(\",\").map($tw.utils.trim),\n\t\twriters: (this.get(\"writers\") || authorizedUserName).split(\",\").map($tw.utils.trim)\n\t}\n\t// Load and initialise authenticators\n\t$tw.modules.forEachModuleOfType(\"authenticator\", function(title,authenticatorDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addAuthenticator(authenticatorDefinition.AuthenticatorClass);\n\t});\n\t// Load route handlers\n\t$tw.modules.forEachModuleOfType(\"route\", function(title,routeDefinition) {\n\t\t// console.log(\"Loading server route \" + title);\n\t\tself.addRoute(routeDefinition);\n\t});\n\t// Initialise the http vs https\n\tthis.listenOptions = null;\n\tthis.protocol = \"http\";\n\tvar tlsKeyFilepath = this.get(\"tls-key\"),\n\t\ttlsCertFilepath = this.get(\"tls-cert\");\n\tif(tlsCertFilepath && tlsKeyFilepath) {\n\t\tthis.listenOptions = {\n\t\t\tkey: fs.readFileSync(path.resolve($tw.boot.wikiPath,tlsKeyFilepath),\"utf8\"),\n\t\t\tcert: fs.readFileSync(path.resolve($tw.boot.wikiPath,tlsCertFilepath),\"utf8\")\n\t\t};\n\t\tthis.protocol = \"https\";\n\t}\n\tthis.transport = require(this.protocol);\n}\n\nServer.prototype.defaultVariables = {\n\tport: \"8080\",\n\thost: \"127.0.0.1\",\n\t\"root-tiddler\": \"$:/core/save/all\",\n\t\"root-render-type\": \"text/plain\",\n\t\"root-serve-type\": \"text/html\",\n\t\"tiddler-render-type\": \"text/html\",\n\t\"tiddler-render-template\": \"$:/core/templates/server/static.tiddler.html\",\n\t\"system-tiddler-render-type\": \"text/plain\",\n\t\"system-tiddler-render-template\": \"$:/core/templates/wikified-tiddler\",\n\t\"debug-level\": \"none\",\n\t\"gzip\": \"no\"\n};\n\nServer.prototype.get = function(name) {\n\treturn this.variables[name];\n};\n\nServer.prototype.addRoute = function(route) {\n\tthis.routes.push(route);\n};\n\nServer.prototype.addAuthenticator = function(AuthenticatorClass) {\n\t// Instantiate and initialise the authenticator\n\tvar authenticator = new AuthenticatorClass(this),\n\t\tresult = authenticator.init();\n\tif(typeof result === \"string\") {\n\t\t$tw.utils.error(\"Error: \" + result);\n\t} else if(result) {\n\t\t// Only use the authenticator if it initialised successfully\n\t\tthis.authenticators.push(authenticator);\n\t}\n};\n\nServer.prototype.findMatchingRoute = function(request,state) {\n\tvar pathprefix = this.get(\"path-prefix\") || \"\";\n\tfor(var t=0; t<this.routes.length; t++) {\n\t\tvar potentialRoute = this.routes[t],\n\t\t\tpathRegExp = potentialRoute.path,\n\t\t\tpathname = state.urlInfo.pathname,\n\t\t\tmatch;\n\t\tif(pathprefix) {\n\t\t\tif(pathname.substr(0,pathprefix.length) === pathprefix) {\n\t\t\t\tpathname = pathname.substr(pathprefix.length) || \"/\";\n\t\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t\t} else {\n\t\t\t\tmatch = false;\n\t\t\t}\n\t\t} else {\n\t\t\tmatch = potentialRoute.path.exec(pathname);\n\t\t}\n\t\tif(match && request.method === potentialRoute.method) {\n\t\t\tstate.params = [];\n\t\t\tfor(var p=1; p<match.length; p++) {\n\t\t\t\tstate.params.push(match[p]);\n\t\t\t}\n\t\t\treturn potentialRoute;\n\t\t}\n\t}\n\treturn null;\n};\n\nServer.prototype.methodMappings = {\n\t\"GET\": \"readers\",\n\t\"OPTIONS\": \"readers\",\n\t\"HEAD\": \"readers\",\n\t\"PUT\": \"writers\",\n\t\"POST\": \"writers\",\n\t\"DELETE\": \"writers\"\n};\n\n/*\nCheck whether a given user is authorized for the specified authorizationType (\"readers\" or \"writers\"). Pass null or undefined as the username to check for anonymous access\n*/\nServer.prototype.isAuthorized = function(authorizationType,username) {\n\tvar principals = this.authorizationPrincipals[authorizationType] || [];\n\treturn principals.indexOf(\"(anon)\") !== -1 || (username && (principals.indexOf(\"(authenticated)\") !== -1 || principals.indexOf(username) !== -1));\n}\n\nServer.prototype.requestHandler = function(request,response) {\n\t// Compose the state object\n\tvar self = this;\n\tvar state = {};\n\tstate.wiki = self.wiki;\n\tstate.server = self;\n\tstate.urlInfo = url.parse(request.url);\n\tstate.queryParameters = querystring.parse(state.urlInfo.query);\n\t// Get the principals authorized to access this resource\n\tvar authorizationType = this.methodMappings[request.method] || \"readers\";\n\t// Check for the CSRF header if this is a write\n\tif(!this.csrfDisable && authorizationType === \"writers\" && request.headers[\"x-requested-with\"] !== \"TiddlyWiki\") {\n\t\tresponse.writeHead(403,\"'X-Requested-With' header required to login to '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\t\t\n\t}\n\t// Check whether anonymous access is granted\n\tstate.allowAnon = this.isAuthorized(authorizationType,null);\n\t// Authenticate with the first active authenticator\n\tif(this.authenticators.length > 0) {\n\t\tif(!this.authenticators[0].authenticateRequest(request,response,state)) {\n\t\t\t// Bail if we failed (the authenticator will have sent the response)\n\t\t\treturn;\n\t\t}\t\t\n\t}\n\t// Authorize with the authenticated username\n\tif(!this.isAuthorized(authorizationType,state.authenticatedUsername)) {\n\t\tresponse.writeHead(401,\"'\" + state.authenticatedUsername + \"' is not authorized to access '\" + this.servername + \"'\");\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Find the route that matches this path\n\tvar route = self.findMatchingRoute(request,state);\n\t// Optionally output debug info\n\tif(self.get(\"debug-level\") !== \"none\") {\n\t\tconsole.log(\"Request path:\",JSON.stringify(state.urlInfo));\n\t\tconsole.log(\"Request headers:\",JSON.stringify(request.headers));\n\t\tconsole.log(\"authenticatedUsername:\",state.authenticatedUsername);\n\t}\n\t// Return a 404 if we didn't find a route\n\tif(!route) {\n\t\tresponse.writeHead(404);\n\t\tresponse.end();\n\t\treturn;\n\t}\n\t// Receive the request body if necessary and hand off to the route handler\n\tif(route.bodyFormat === \"stream\" || request.method === \"GET\" || request.method === \"HEAD\") {\n\t\t// Let the route handle the request stream itself\n\t\troute.handler(request,response,state);\n\t} else if(route.bodyFormat === \"string\" || !route.bodyFormat) {\n\t\t// Set the encoding for the incoming request\n\t\trequest.setEncoding(\"utf8\");\n\t\tvar data = \"\";\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata += chunk.toString();\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = data;\n\t\t\troute.handler(request,response,state);\n\t\t});\n\t} else if(route.bodyFormat === \"buffer\") {\n\t\tvar data = [];\n\t\trequest.on(\"data\",function(chunk) {\n\t\t\tdata.push(chunk);\n\t\t});\n\t\trequest.on(\"end\",function() {\n\t\t\tstate.data = Buffer.concat(data);\n\t\t\troute.handler(request,response,state);\n\t\t})\n\t} else {\n\t\tresponse.writeHead(400,\"Invalid bodyFormat \" + route.bodyFormat + \" in route \" + route.method + \" \" + route.path.source);\n\t\tresponse.end();\n\t}\n};\n\n/*\nListen for requests\nport: optional port number (falls back to value of \"port\" variable)\nhost: optional host address (falls back to value of \"host\" variable)\nprefix: optional prefix (falls back to value of \"path-prefix\" variable)\n*/\nServer.prototype.listen = function(port,host,prefix) {\n\tvar self = this;\n\t// Handle defaults for port and host\n\tport = port || this.get(\"port\");\n\thost = host || this.get(\"host\");\n\tprefix = prefix || this.get(\"path-prefix\") || \"\";\n\t// Check for the port being a string and look it up as an environment variable\n\tif(parseInt(port,10).toString() !== port) {\n\t\tport = process.env[port] || 8080;\n\t}\n\t// Warn if required plugins are missing\n\tif(!$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/tiddlyweb\") || !$tw.wiki.getTiddler(\"$:/plugins/tiddlywiki/filesystem\")) {\n\t\t$tw.utils.warning(\"Warning: Plugins required for client-server operation (\\\"tiddlywiki/filesystem\\\" and \\\"tiddlywiki/tiddlyweb\\\") are missing from tiddlywiki.info file\");\n\t}\n\t// Create the server\n\tvar server;\n\tif(this.listenOptions) {\n\t\tserver = this.transport.createServer(this.listenOptions,this.requestHandler.bind(this));\n\t} else {\n\t\tserver = this.transport.createServer(this.requestHandler.bind(this));\n\t}\n\t// Display the port number after we've started listening (the port number might have been specified as zero, in which case we will get an assigned port)\n\tserver.on(\"listening\",function() {\n\t\tvar address = server.address();\n\t\t$tw.utils.log(\"Serving on \" + self.protocol + \"://\" + address.address + \":\" + address.port + prefix,\"brown/orange\");\n\t\t$tw.utils.log(\"(press ctrl-C to exit)\",\"red\");\n\t});\n\t// Listen\n\treturn server.listen(port,host);\n};\n\nexports.Server = Server;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "library"
        },
        "$:/core/modules/browser-messaging.js": {
            "title": "$:/core/modules/browser-messaging.js",
            "text": "/*\\\ntitle: $:/core/modules/browser-messaging.js\ntype: application/javascript\nmodule-type: startup\n\nBrowser message handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"browser-messaging\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*\nLoad a specified url as an iframe and call the callback when it is loaded. If the url is already loaded then the existing iframe instance is used\n*/\nfunction loadIFrame(url,callback) {\n\t// Check if iframe already exists\n\tvar iframeInfo = $tw.browserMessaging.iframeInfoMap[url];\n\tif(iframeInfo) {\n\t\t// We've already got the iframe\n\t\tcallback(null,iframeInfo);\n\t} else {\n\t\t// Create the iframe and save it in the list\n\t\tvar iframe = document.createElement(\"iframe\");\n\t\tiframeInfo = {\n\t\t\turl: url,\n\t\t\tstatus: \"loading\",\n\t\t\tdomNode: iframe\n\t\t};\n\t\t$tw.browserMessaging.iframeInfoMap[url] = iframeInfo;\n\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t// Add the iframe to the DOM and hide it\n\t\tiframe.style.display = \"none\";\n\t\tiframe.setAttribute(\"library\",\"true\");\n\t\tdocument.body.appendChild(iframe);\n\t\t// Set up onload\n\t\tiframe.onload = function() {\n\t\t\tiframeInfo.status = \"loaded\";\n\t\t\tsaveIFrameInfoTiddler(iframeInfo);\n\t\t\tcallback(null,iframeInfo);\n\t\t};\n\t\tiframe.onerror = function() {\n\t\t\tcallback(\"Cannot load iframe\");\n\t\t};\n\t\ttry {\n\t\t\tiframe.src = url;\n\t\t} catch(ex) {\n\t\t\tcallback(ex);\n\t\t}\n\t}\n}\n\n/*\nUnload library iframe for given url\n*/\nfunction unloadIFrame(url){\n\t$tw.utils.each(document.getElementsByTagName('iframe'), function(iframe) {\n\t\tif(iframe.getAttribute(\"library\") === \"true\" &&\n\t\t  iframe.getAttribute(\"src\") === url) {\n\t\t\tiframe.parentNode.removeChild(iframe);\n\t\t}\n\t});\n}\n\nfunction saveIFrameInfoTiddler(iframeInfo) {\n\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),{\n\t\ttitle: \"$:/temp/ServerConnection/\" + iframeInfo.url,\n\t\ttext: iframeInfo.status,\n\t\ttags: [\"$:/tags/ServerConnection\"],\n\t\turl: iframeInfo.url\n\t},$tw.wiki.getModificationFields()));\n}\n\nexports.startup = function() {\n\t// Initialise the store of iframes we've created\n\t$tw.browserMessaging = {\n\t\tiframeInfoMap: {} // Hashmap by URL of {url:,status:\"loading/loaded\",domNode:}\n\t};\n\t// Listen for widget messages to control loading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\tif(url) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers.json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-info\",\n\t\t\t\t\t\t\tinfoTitlePrefix: paramObject.infoTitlePrefix || \"$:/temp/RemoteAssetInfo/\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for widget messages to control unloading the plugin library\n\t$tw.rootWidget.addEventListener(\"tm-unload-plugin-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url;\n\t\t$tw.browserMessaging.iframeInfoMap[url] = undefined;\n\t\tif(url) {\n\t\t\tunloadIFrame(url);\n\t\t\t$tw.utils.each(\n\t\t\t\t$tw.wiki.filterTiddlers(\"[[$:/temp/ServerConnection/\" + url + \"]] [prefix[$:/temp/RemoteAssetInfo/\" + url + \"/]]\"),\n\t\t\t\tfunction(title) {\n\t\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-load-plugin-from-library\",function(event) {\n\t\tvar paramObject = event.paramObject || {},\n\t\t\turl = paramObject.url,\n\t\t\ttitle = paramObject.title;\n\t\tif(url && title) {\n\t\t\tloadIFrame(url,function(err,iframeInfo) {\n\t\t\t\tif(err) {\n\t\t\t\t\talert($tw.language.getString(\"Error/LoadingPluginLibrary\") + \": \" + url);\n\t\t\t\t} else {\n\t\t\t\t\tiframeInfo.domNode.contentWindow.postMessage({\n\t\t\t\t\t\tverb: \"GET\",\n\t\t\t\t\t\turl: \"recipes/library/tiddlers/\" + encodeURIComponent(title) + \".json\",\n\t\t\t\t\t\tcookies: {\n\t\t\t\t\t\t\ttype: \"save-tiddler\",\n\t\t\t\t\t\t\turl: url\n\t\t\t\t\t\t}\n\t\t\t\t\t},\"*\");\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Listen for window messages from other windows\n\twindow.addEventListener(\"message\",function listener(event){\n\t\t// console.log(\"browser-messaging: \",document.location.toString())\n\t\t// console.log(\"browser-messaging: Received message from\",event.origin);\n\t\t// console.log(\"browser-messaging: Message content\",event.data);\n\t\tswitch(event.data.verb) {\n\t\t\tcase \"GET-RESPONSE\":\n\t\t\t\tif(event.data.status.charAt(0) === \"2\") {\n\t\t\t\t\tif(event.data.cookies) {\n\t\t\t\t\t\tif(event.data.cookies.type === \"save-info\") {\n\t\t\t\t\t\t\tvar tiddlers = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.utils.each(tiddlers,function(tiddler) {\n\t\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler($tw.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\t\t\t\t\ttitle: event.data.cookies.infoTitlePrefix + event.data.cookies.url + \"/\" + tiddler.title,\n\t\t\t\t\t\t\t\t\t\"original-title\": tiddler.title,\n\t\t\t\t\t\t\t\t\ttext: \"\",\n\t\t\t\t\t\t\t\t\ttype: \"text/vnd.tiddlywiki\",\n\t\t\t\t\t\t\t\t\t\"original-type\": tiddler.type,\n\t\t\t\t\t\t\t\t\t\"plugin-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-plugin-type\": tiddler[\"plugin-type\"],\n\t\t\t\t\t\t\t\t\t\"module-type\": undefined,\n\t\t\t\t\t\t\t\t\t\"original-module-type\": tiddler[\"module-type\"],\n\t\t\t\t\t\t\t\t\ttags: [\"$:/tags/RemoteAssetInfo\"],\n\t\t\t\t\t\t\t\t\t\"original-tags\": $tw.utils.stringifyList(tiddler.tags || []),\n\t\t\t\t\t\t\t\t\t\"server-url\": event.data.cookies.url\n\t\t\t\t\t\t\t\t},$tw.wiki.getModificationFields()));\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t} else if(event.data.cookies.type === \"save-tiddler\") {\n\t\t\t\t\t\t\tvar tiddler = JSON.parse(event.data.body);\n\t\t\t\t\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(tiddler));\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\t},false);\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/commands.js": {
            "title": "$:/core/modules/startup/commands.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/commands.js\ntype: application/javascript\nmodule-type: startup\n\nCommand processing\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"commands\";\nexports.platforms = [\"node\"];\nexports.after = [\"story\"];\nexports.synchronous = false;\n\nexports.startup = function(callback) {\n\t// On the server, start a commander with the command line arguments\n\tvar commander = new $tw.Commander(\n\t\t$tw.boot.argv,\n\t\tfunction(err) {\n\t\t\tif(err) {\n\t\t\t\treturn $tw.utils.error(\"Error: \" + err);\n\t\t\t}\n\t\t\tcallback();\n\t\t},\n\t\t$tw.wiki,\n\t\t{output: process.stdout, error: process.stderr}\n\t);\n\tcommander.execute();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/CSSescape.js": {
            "title": "$:/core/modules/startup/CSSescape.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/CSSescape.js\ntype: application/javascript\nmodule-type: startup\n\nPolyfill for CSS.escape()\n\n\\*/\n(function(root,factory){\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"css-escape\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n/*! https://mths.be/cssescape v1.5.1 by @mathias | MIT license */\n// https://github.com/umdjs/umd/blob/master/returnExports.js\nexports.startup = factory(root);\n}(typeof global != 'undefined' ? global : this, function(root) {\n\n\tif (root.CSS && root.CSS.escape) {\n\t\treturn;\n\t}\n\n\t// https://drafts.csswg.org/cssom/#serialize-an-identifier\n\tvar cssEscape = function(value) {\n\t\tif (arguments.length == 0) {\n\t\t\tthrow new TypeError('`CSS.escape` requires an argument.');\n\t\t}\n\t\tvar string = String(value);\n\t\tvar length = string.length;\n\t\tvar index = -1;\n\t\tvar codeUnit;\n\t\tvar result = '';\n\t\tvar firstCodeUnit = string.charCodeAt(0);\n\t\twhile (++index < length) {\n\t\t\tcodeUnit = string.charCodeAt(index);\n\t\t\t// Note: there’s no need to special-case astral symbols, surrogate\n\t\t\t// pairs, or lone surrogates.\n\n\t\t\t// If the character is NULL (U+0000), then the REPLACEMENT CHARACTER\n\t\t\t// (U+FFFD).\n\t\t\tif (codeUnit == 0x0000) {\n\t\t\t\tresult += '\\uFFFD';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is in the range [\\1-\\1F] (U+0001 to U+001F) or is\n\t\t\t\t// U+007F, […]\n\t\t\t\t(codeUnit >= 0x0001 && codeUnit <= 0x001F) || codeUnit == 0x007F ||\n\t\t\t\t// If the character is the first character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039), […]\n\t\t\t\t(index == 0 && codeUnit >= 0x0030 && codeUnit <= 0x0039) ||\n\t\t\t\t// If the character is the second character and is in the range [0-9]\n\t\t\t\t// (U+0030 to U+0039) and the first character is a `-` (U+002D), […]\n\t\t\t\t(\n\t\t\t\t\tindex == 1 &&\n\t\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 &&\n\t\t\t\t\tfirstCodeUnit == 0x002D\n\t\t\t\t)\n\t\t\t) {\n\t\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character-as-code-point\n\t\t\t\tresult += '\\\\' + codeUnit.toString(16) + ' ';\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t// If the character is the first character and is a `-` (U+002D), and\n\t\t\t\t// there is no second character, […]\n\t\t\t\tindex == 0 &&\n\t\t\t\tlength == 1 &&\n\t\t\t\tcodeUnit == 0x002D\n\t\t\t) {\n\t\t\t\tresult += '\\\\' + string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If the character is not handled by one of the above rules and is\n\t\t\t// greater than or equal to U+0080, is `-` (U+002D) or `_` (U+005F), or\n\t\t\t// is in one of the ranges [0-9] (U+0030 to U+0039), [A-Z] (U+0041 to\n\t\t\t// U+005A), or [a-z] (U+0061 to U+007A), […]\n\t\t\tif (\n\t\t\t\tcodeUnit >= 0x0080 ||\n\t\t\t\tcodeUnit == 0x002D ||\n\t\t\t\tcodeUnit == 0x005F ||\n\t\t\t\tcodeUnit >= 0x0030 && codeUnit <= 0x0039 ||\n\t\t\t\tcodeUnit >= 0x0041 && codeUnit <= 0x005A ||\n\t\t\t\tcodeUnit >= 0x0061 && codeUnit <= 0x007A\n\t\t\t) {\n\t\t\t\t// the character itself\n\t\t\t\tresult += string.charAt(index);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Otherwise, the escaped character.\n\t\t\t// https://drafts.csswg.org/cssom/#escape-a-character\n\t\t\tresult += '\\\\' + string.charAt(index);\n\n\t\t}\n\t\treturn result;\n\t};\n\n\tif (!root.CSS) {\n\t\troot.CSS = {};\n\t}\n\n\troot.CSS.escape = cssEscape;\n\n}));\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/favicon.js": {
            "title": "$:/core/modules/startup/favicon.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/favicon.js\ntype: application/javascript\nmodule-type: startup\n\nFavicon handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"favicon\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\t\t\n// Favicon tiddler\nvar FAVICON_TITLE = \"$:/favicon.ico\";\n\nexports.startup = function() {\n\t// Set up the favicon\n\tsetFavicon();\n\t// Reset the favicon when the tiddler changes\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,FAVICON_TITLE)) {\n\t\t\tsetFavicon();\n\t\t}\n\t});\n};\n\nfunction setFavicon() {\n\tvar tiddler = $tw.wiki.getTiddler(FAVICON_TITLE);\n\tif(tiddler) {\n\t\tvar faviconLink = document.getElementById(\"faviconLink\");\n\t\tfaviconLink.setAttribute(\"href\",\"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text);\n\t}\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/info.js": {
            "title": "$:/core/modules/startup/info.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/info.js\ntype: application/javascript\nmodule-type: startup\n\nInitialise $:/info tiddlers via $:/temp/info-plugin pseudo-plugin\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"info\";\nexports.before = [\"startup\"];\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_INFO_PLUGIN = \"$:/temp/info-plugin\";\n\nexports.startup = function() {\n\t// Collect up the info tiddlers\n\tvar infoTiddlerFields = {};\n\t// Give each info module a chance to fill in as many info tiddlers as they want\n\t$tw.modules.forEachModuleOfType(\"info\",function(title,moduleExports) {\n\t\tif(moduleExports && moduleExports.getInfoTiddlerFields) {\n\t\t\tvar tiddlerFieldsArray = moduleExports.getInfoTiddlerFields(infoTiddlerFields);\n\t\t\t$tw.utils.each(tiddlerFieldsArray,function(fields) {\n\t\t\t\tif(fields) {\n\t\t\t\t\tinfoTiddlerFields[fields.title] = fields;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n\t// Bake the info tiddlers into a plugin. We use the non-standard plugin-type \"info\" because ordinary plugins are only registered asynchronously after being loaded dynamically\n\tvar fields = {\n\t\ttitle: TITLE_INFO_PLUGIN,\n\t\ttype: \"application/json\",\n\t\t\"plugin-type\": \"info\",\n\t\ttext: JSON.stringify({tiddlers: infoTiddlerFields},null,$tw.config.preferences.jsonSpaces)\n\t};\n\t$tw.wiki.addTiddler(new $tw.Tiddler(fields));\n\t$tw.wiki.readPluginInfo([TITLE_INFO_PLUGIN]);\n\t$tw.wiki.registerPluginTiddlers(\"info\");\n\t$tw.wiki.unpackPluginTiddlers();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/load-modules.js": {
            "title": "$:/core/modules/startup/load-modules.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/load-modules.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"load-modules\";\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Load modules\n\t$tw.modules.applyMethods(\"utils\",$tw.utils);\n\tif($tw.node) {\n\t\t$tw.modules.applyMethods(\"utils-node\",$tw.utils);\n\t}\n\t$tw.modules.applyMethods(\"global\",$tw);\n\t$tw.modules.applyMethods(\"config\",$tw.config);\n\t$tw.Tiddler.fieldModules = $tw.modules.getModulesByTypeAsHashmap(\"tiddlerfield\");\n\t$tw.modules.applyMethods(\"tiddlermethod\",$tw.Tiddler.prototype);\n\t$tw.modules.applyMethods(\"wikimethod\",$tw.Wiki.prototype);\n\t$tw.wiki.addIndexersToWiki();\n\t$tw.modules.applyMethods(\"tiddlerdeserializer\",$tw.Wiki.tiddlerDeserializerModules);\n\t$tw.macros = $tw.modules.getModulesByTypeAsHashmap(\"macro\");\n\t$tw.wiki.initParsers();\n\t$tw.Commander.initCommands();\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/password.js": {
            "title": "$:/core/modules/startup/password.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/password.js\ntype: application/javascript\nmodule-type: startup\n\nPassword handling\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"password\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t$tw.rootWidget.addEventListener(\"tm-set-password\",function(event) {\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: $tw.language.getString(\"Encryption/PromptSetPassword\"),\n\t\t\tnoUserName: true,\n\t\t\tsubmitText: $tw.language.getString(\"Encryption/SetPassword\"),\n\t\t\tcanCancel: true,\n\t\t\trepeatPassword: true,\n\t\t\tcallback: function(data) {\n\t\t\t\tif(data) {\n\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t}\n\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t}\n\t\t});\n\t});\n\t$tw.rootWidget.addEventListener(\"tm-clear-password\",function(event) {\n\t\tif($tw.browser) {\n\t\t\tif(!confirm($tw.language.getString(\"Encryption/ConfirmClearPassword\"))) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t$tw.crypto.setPassword(null);\n\t});\n\t// Ensure that $:/isEncrypted is maintained properly\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.utils.hop(changes,\"$:/isEncrypted\")) {\n\t\t\t$tw.crypto.updateCryptoStateTiddler();\n\t\t}\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/plugins.js": {
            "title": "$:/core/modules/startup/plugins.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/plugins.js\ntype: application/javascript\nmodule-type: startup\n\nStartup logic concerned with managing plugins\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"plugins\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\nvar TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE = \"$:/status/RequireReloadDueToPluginChange\";\n\nvar PREFIX_CONFIG_REGISTER_PLUGIN_TYPE = \"$:/config/RegisterPluginType/\";\n\nexports.startup = function() {\n\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"no\"});\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tvar changesToProcess = [],\n\t\t\trequireReloadDueToPluginChange = false;\n\t\t$tw.utils.each(Object.keys(changes),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\t\trequiresReload = $tw.wiki.doesPluginRequireReload(title);\n\t\t\tif(requiresReload) {\n\t\t\t\trequireReloadDueToPluginChange = true;\n\t\t\t} else if(tiddler) {\n\t\t\t\tvar pluginType = tiddler.fields[\"plugin-type\"];\n\t\t\t\tif($tw.wiki.getTiddlerText(PREFIX_CONFIG_REGISTER_PLUGIN_TYPE + (tiddler.fields[\"plugin-type\"] || \"\"),\"no\") === \"yes\") {\n\t\t\t\t\tchangesToProcess.push(title);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tif(requireReloadDueToPluginChange) {\n\t\t\t$tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: \"yes\"});\n\t\t}\n\t\t// Read or delete the plugin info of the changed tiddlers\n\t\tif(changesToProcess.length > 0) {\n\t\t\tvar changes = $tw.wiki.readPluginInfo(changesToProcess);\n\t\t\tif(changes.modifiedPlugins.length > 0 || changes.deletedPlugins.length > 0) {\n\t\t\t\t// (Re-)register any modified plugins\n\t\t\t\t$tw.wiki.registerPluginTiddlers(null,changes.modifiedPlugins);\n\t\t\t\t// Unregister any deleted plugins\n\t\t\t\t$tw.wiki.unregisterPluginTiddlers(null,changes.deletedPlugins);\n\t\t\t\t// Unpack the shadow tiddlers\n\t\t\t\t$tw.wiki.unpackPluginTiddlers();\n\t\t\t}\n\t\t}\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/render.js": {
            "title": "$:/core/modules/startup/render.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/render.js\ntype: application/javascript\nmodule-type: startup\n\nTitle, stylesheet and page rendering\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"render\";\nexports.platforms = [\"browser\"];\nexports.after = [\"story\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar PAGE_TITLE_TITLE = \"$:/core/wiki/title\";\nvar PAGE_STYLESHEET_TITLE = \"$:/core/ui/PageStylesheet\";\nvar PAGE_TEMPLATE_TITLE = \"$:/core/ui/PageTemplate\";\n\n// Time (in ms) that we defer refreshing changes to draft tiddlers\nvar DRAFT_TIDDLER_TIMEOUT_TITLE = \"$:/config/Drafts/TypingTimeout\";\nvar THROTTLE_REFRESH_TIMEOUT = 400;\n\nexports.startup = function() {\n\t// Set up the title\n\t$tw.titleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TITLE_TITLE,{document: $tw.fakeDocument, parseAsInline: true});\n\t$tw.titleContainer = $tw.fakeDocument.createElement(\"div\");\n\t$tw.titleWidgetNode.render($tw.titleContainer,null);\n\tdocument.title = $tw.titleContainer.textContent;\n\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\tif($tw.titleWidgetNode.refresh(changes,$tw.titleContainer,null)) {\n\t\t\tdocument.title = $tw.titleContainer.textContent;\n\t\t}\n\t});\n\t// Set up the styles\n\t$tw.styleWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_STYLESHEET_TITLE,{document: $tw.fakeDocument});\n\t$tw.styleContainer = $tw.fakeDocument.createElement(\"style\");\n\t$tw.styleWidgetNode.render($tw.styleContainer,null);\n\t$tw.styleElement = document.createElement(\"style\");\n\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\tdocument.head.insertBefore($tw.styleElement,document.head.firstChild);\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"styleRefresh\",function(changes) {\n\t\tif($tw.styleWidgetNode.refresh(changes,$tw.styleContainer,null)) {\n\t\t\t$tw.styleElement.innerHTML = $tw.styleContainer.textContent;\n\t\t}\n\t}));\n\t// Display the $:/core/ui/PageTemplate tiddler to kick off the display\n\t$tw.perf.report(\"mainRender\",function() {\n\t\t$tw.pageWidgetNode = $tw.wiki.makeTranscludeWidget(PAGE_TEMPLATE_TITLE,{document: document, parentWidget: $tw.rootWidget});\n\t\t$tw.pageContainer = document.createElement(\"div\");\n\t\t$tw.utils.addClass($tw.pageContainer,\"tc-page-container-wrapper\");\n\t\tdocument.body.insertBefore($tw.pageContainer,document.body.firstChild);\n\t\t$tw.pageWidgetNode.render($tw.pageContainer,null);\n   \t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t})();\n\t// Remove any splash screen elements\n\tvar removeList = document.querySelectorAll(\".tc-remove-when-wiki-loaded\");\n\t$tw.utils.each(removeList,function(removeItem) {\n\t\tif(removeItem.parentNode) {\n\t\t\tremoveItem.parentNode.removeChild(removeItem);\n\t\t}\n\t});\n\t// Prepare refresh mechanism\n\tvar deferredChanges = Object.create(null),\n\t\ttimerId;\n\tfunction refresh() {\n\t\t// Process the refresh\n\t\t$tw.hooks.invokeHook(\"th-page-refreshing\");\n\t\t$tw.pageWidgetNode.refresh(deferredChanges);\n\t\tdeferredChanges = Object.create(null);\n\t\t$tw.hooks.invokeHook(\"th-page-refreshed\");\n\t}\n\t// Add the change event handler\n\t$tw.wiki.addEventListener(\"change\",$tw.perf.report(\"mainRefresh\",function(changes) {\n\t\t// Check if only tiddlers that are throttled have changed\n\t\tvar onlyThrottledTiddlersHaveChanged = true;\n\t\tfor(var title in changes) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(!tiddler || !(tiddler.hasField(\"draft.of\") || tiddler.hasField(\"throttle.refresh\"))) {\n\t\t\t\tonlyThrottledTiddlersHaveChanged = false;\n\t\t\t}\n\t\t}\n\t\t// Defer the change if only drafts have changed\n\t\tif(timerId) {\n\t\t\tclearTimeout(timerId);\n\t\t}\n\t\ttimerId = null;\n\t\tif(onlyThrottledTiddlersHaveChanged) {\n\t\t\tvar timeout = parseInt($tw.wiki.getTiddlerText(DRAFT_TIDDLER_TIMEOUT_TITLE,\"\"),10);\n\t\t\tif(isNaN(timeout)) {\n\t\t\t\ttimeout = THROTTLE_REFRESH_TIMEOUT;\n\t\t\t}\n\t\t\ttimerId = setTimeout(refresh,timeout);\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t} else {\n\t\t\t$tw.utils.extend(deferredChanges,changes);\n\t\t\trefresh();\n\t\t}\n\t}));\n\t// Fix up the link between the root widget and the page container\n\t$tw.rootWidget.domNodes = [$tw.pageContainer];\n\t$tw.rootWidget.children = [$tw.pageWidgetNode];\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/rootwidget.js": {
            "title": "$:/core/modules/startup/rootwidget.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/rootwidget.js\ntype: application/javascript\nmodule-type: startup\n\nSetup the root widget and the core root widget handlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"rootwidget\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.before = [\"story\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// Install the modal message mechanism\n\t$tw.modal = new $tw.utils.Modal($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-modal\",function(event) {\n\t\t$tw.modal.display(event.param,{variables: event.paramObject, event: event});\n\t});\n\t// Install the notification  mechanism\n\t$tw.notifier = new $tw.utils.Notifier($tw.wiki);\n\t$tw.rootWidget.addEventListener(\"tm-notify\",function(event) {\n\t\t$tw.notifier.display(event.param,{variables: event.paramObject});\n\t});\n\t// Install the copy-to-clipboard  mechanism\n\t$tw.rootWidget.addEventListener(\"tm-copy-to-clipboard\",function(event) {\n\t\t$tw.utils.copyToClipboard(event.param);\n\t});\n\t// Install the tm-focus-selector message\n\t$tw.rootWidget.addEventListener(\"tm-focus-selector\",function(event) {\n\t\tvar selector = event.param || \"\",\n\t\t\telement;\n\t\ttry {\n\t\t\telement = document.querySelector(selector);\n\t\t} catch(e) {\n\t\t\tconsole.log(\"Error in selector: \",selector)\n\t\t}\n\t\tif(element && element.focus) {\n\t\t\telement.focus(event.paramObject);\n\t\t}\n\t});\n\t// Install the scroller\n\t$tw.pageScroller = new $tw.utils.PageScroller();\n\t$tw.rootWidget.addEventListener(\"tm-scroll\",function(event) {\n\t\t$tw.pageScroller.handleEvent(event);\n\t});\n\tvar fullscreen = $tw.utils.getFullScreenApis();\n\tif(fullscreen) {\n\t\t$tw.rootWidget.addEventListener(\"tm-full-screen\",function(event) {\n\t\t\tvar fullScreenDocument = event.event ? event.event.target.ownerDocument : document;\n\t\t\tif(event.param === \"enter\") {\n\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t} else if(event.param === \"exit\") {\n\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t} else {\n\t\t\t\tif(fullScreenDocument[fullscreen._fullscreenElement]) {\n\t\t\t\t\tfullScreenDocument[fullscreen._exitFullscreen]();\n\t\t\t\t} else {\n\t\t\t\t\tfullScreenDocument.documentElement[fullscreen._requestFullscreen](Element.ALLOW_KEYBOARD_INPUT);\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t}\n\t// If we're being viewed on a data: URI then give instructions for how to save\n\tif(document.location.protocol === \"data:\") {\n\t\t$tw.rootWidget.dispatchEvent({\n\t\t\ttype: \"tm-modal\",\n\t\t\tparam: \"$:/language/Modals/SaveInstructions\"\n\t\t});\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup.js": {
            "title": "$:/core/modules/startup.js",
            "text": "/*\\\ntitle: $:/core/modules/startup.js\ntype: application/javascript\nmodule-type: startup\n\nMiscellaneous startup logic for both the client and server.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"startup\";\nexports.after = [\"load-modules\"];\nexports.synchronous = true;\n\n// Set to `true` to enable performance instrumentation\nvar PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE = \"$:/config/Performance/Instrumentation\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nexports.startup = function() {\n\tvar modules,n,m,f;\n\t// Minimal browser detection\n\tif($tw.browser) {\n\t\t$tw.browser.isIE = (/msie|trident/i.test(navigator.userAgent));\n\t\t$tw.browser.isFirefox = !!document.mozFullScreenEnabled;\n\t}\n\t// Platform detection\n\t$tw.platform = {};\n\tif($tw.browser) {\n\t\t$tw.platform.isMac = /Mac/.test(navigator.platform);\n\t\t$tw.platform.isWindows = /win/i.test(navigator.platform);\n\t\t$tw.platform.isLinux = /Linux/i.test(navigator.platform);\n\t} else {\n\t\tswitch(require(\"os\").platform()) {\n\t\t\tcase \"darwin\":\n\t\t\t\t$tw.platform.isMac = true;\n\t\t\t\tbreak;\n\t\t\tcase \"win32\":\n\t\t\t\t$tw.platform.isWindows = true;\n\t\t\t\tbreak;\n\t\t\tcase \"freebsd\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t\tcase \"linux\":\n\t\t\t\t$tw.platform.isLinux = true;\n\t\t\t\tbreak;\n\t\t}\n\t}\n\t// Initialise version\n\t$tw.version = $tw.utils.extractVersionInfo();\n\t// Set up the performance framework\n\t$tw.perf = new $tw.Performance($tw.wiki.getTiddlerText(PERFORMANCE_INSTRUMENTATION_CONFIG_TITLE,\"no\") === \"yes\");\n\t// Create a root widget for attaching event handlers. By using it as the parentWidget for another widget tree, one can reuse the event handlers\n\t$tw.rootWidget = new widget.widget({\n\t\ttype: \"widget\",\n\t\tchildren: []\n\t},{\n\t\twiki: $tw.wiki,\n\t\tdocument: $tw.browser ? document : $tw.fakeDocument\n\t});\n\t// Execute any startup actions\n\tvar executeStartupTiddlers = function(tag) {\n\t\t$tw.utils.each($tw.wiki.filterTiddlers(\"[all[shadows+tiddlers]tag[\" + tag + \"]!has[draft.of]]\"),function(title) {\n\t\t\t$tw.rootWidget.invokeActionString($tw.wiki.getTiddlerText(title),$tw.rootWidget);\n\t\t});\n\t};\n\texecuteStartupTiddlers(\"$:/tags/StartupAction\");\n\tif($tw.browser) {\n\t\texecuteStartupTiddlers(\"$:/tags/StartupAction/Browser\");\t\t\n\t}\n\tif($tw.node) {\n\t\texecuteStartupTiddlers(\"$:/tags/StartupAction/Node\");\t\t\n\t}\n\t// Kick off the language manager and switcher\n\t$tw.language = new $tw.Language();\n\t$tw.languageSwitcher = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"language\",\n\t\tcontrollerTitle: \"$:/language\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/languages/en-GB\"\n\t\t],\n\t\tonSwitch: function(plugins) {\n\t\t\tif($tw.browser) {\n\t\t\t\tvar pluginTiddler = $tw.wiki.getTiddler(plugins[0]);\n\t\t\t\tif(pluginTiddler) {\n\t\t\t\t\tdocument.documentElement.setAttribute(\"dir\",pluginTiddler.getFieldString(\"text-direction\") || \"auto\");\n\t\t\t\t} else {\n\t\t\t\t\tdocument.documentElement.removeAttribute(\"dir\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\t// Kick off the theme manager\n\t$tw.themeManager = new $tw.PluginSwitcher({\n\t\twiki: $tw.wiki,\n\t\tpluginType: \"theme\",\n\t\tcontrollerTitle: \"$:/theme\",\n\t\tdefaultPlugins: [\n\t\t\t\"$:/themes/tiddlywiki/snowwhite\",\n\t\t\t\"$:/themes/tiddlywiki/vanilla\"\n\t\t]\n\t});\n\t// Kick off the keyboard manager\n\t$tw.keyboardManager = new $tw.KeyboardManager();\n\t// Listen for shortcuts\n\tif($tw.browser) {\n\t\t$tw.utils.addEventListeners(document,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t}]);\n\t}\n\t// Clear outstanding tiddler store change events to avoid an unnecessary refresh cycle at startup\n\t$tw.wiki.clearTiddlerEventQueue();\n\t// Find a working syncadaptor\n\t$tw.syncadaptor = undefined;\n\t$tw.modules.forEachModuleOfType(\"syncadaptor\",function(title,module) {\n\t\tif(!$tw.syncadaptor && module.adaptorClass) {\n\t\t\t$tw.syncadaptor = new module.adaptorClass({wiki: $tw.wiki});\n\t\t}\n\t});\n\t// Set up the syncer object if we've got a syncadaptor\n\tif($tw.syncadaptor) {\n\t\t$tw.syncer = new $tw.Syncer({wiki: $tw.wiki, syncadaptor: $tw.syncadaptor});\n\t}\n\t// Setup the saver handler\n\t$tw.saverHandler = new $tw.SaverHandler({\n\t\twiki: $tw.wiki,\n\t\tdirtyTracking: !$tw.syncadaptor,\n\t\tpreloadDirty: $tw.boot.preloadDirty || []\n\t});\n\t// Host-specific startup\n\tif($tw.browser) {\n\t\t// Install the popup manager\n\t\t$tw.popup = new $tw.utils.Popup();\n\t\t// Install the animator\n\t\t$tw.anim = new $tw.utils.Animator();\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/story.js": {
            "title": "$:/core/modules/startup/story.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/story.js\ntype: application/javascript\nmodule-type: startup\n\nLoad core modules\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"story\";\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Default story and history lists\nvar DEFAULT_STORY_TITLE = \"$:/StoryList\";\nvar DEFAULT_HISTORY_TITLE = \"$:/HistoryList\";\n\n// Default tiddlers\nvar DEFAULT_TIDDLERS_TITLE = \"$:/DefaultTiddlers\";\n\n// Config\nvar CONFIG_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/UpdateAddressBar\"; // Can be \"no\", \"permalink\", \"permaview\"\nvar CONFIG_UPDATE_HISTORY = \"$:/config/Navigation/UpdateHistory\"; // Can be \"yes\" or \"no\"\nvar CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD = \"$:/config/Navigation/Permalinkview/CopyToClipboard\"; // Can be \"yes\" (default) or \"no\"\nvar CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR = \"$:/config/Navigation/Permalinkview/UpdateAddressBar\"; // Can be \"yes\" (default) or \"no\"\n\n\n// Links to help, if there is no param\nvar HELP_OPEN_EXTERNAL_WINDOW = \"http://tiddlywiki.com/#WidgetMessage%3A%20tm-open-external-window\";\n\nexports.startup = function() {\n\t// Open startup tiddlers\n\topenStartupTiddlers({\n\t\tdisableHistory: $tw.boot.disableStartupNavigation\n\t});\n\tif($tw.browser) {\n\t\t// Set up location hash update\n\t\t$tw.wiki.addEventListener(\"change\",function(changes) {\n\t\t\tif($tw.utils.hop(changes,DEFAULT_STORY_TITLE) || $tw.utils.hop(changes,DEFAULT_HISTORY_TITLE)) {\n\t\t\t\tupdateLocationHash({\n\t\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_UPDATE_ADDRESS_BAR,\"permaview\").trim(),\n\t\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim()\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t\t// Listen for changes to the browser location hash\n\t\twindow.addEventListener(\"hashchange\",function() {\n\t\t\tvar hash = $tw.utils.getLocationHash();\n\t\t\tif(hash !== $tw.locationHash) {\n\t\t\t\t$tw.locationHash = hash;\n\t\t\t\topenStartupTiddlers({defaultToCurrentStory: true});\n\t\t\t}\n\t\t},false);\n\t\t// Listen for the tm-browser-refresh message\n\t\t$tw.rootWidget.addEventListener(\"tm-browser-refresh\",function(event) {\n\t\t\twindow.location.reload(true);\n\t\t});\n\t\t// Listen for tm-open-external-window message\n\t\t$tw.rootWidget.addEventListener(\"tm-open-external-window\",function(event) {\n\t\t\tvar paramObject = event.paramObject || {},\n\t\t\t\tstrUrl = event.param || HELP_OPEN_EXTERNAL_WINDOW,\n\t\t\t\tstrWindowName = paramObject.windowName,\n\t\t\t\tstrWindowFeatures = paramObject.windowFeatures;\n\t\t\twindow.open(strUrl, strWindowName, strWindowFeatures);\n\t\t});\n\t\t// Listen for the tm-print message\n\t\t$tw.rootWidget.addEventListener(\"tm-print\",function(event) {\n\t\t\t(event.event.view || window).print();\n\t\t});\n\t\t// Listen for the tm-home message\n\t\t$tw.rootWidget.addEventListener(\"tm-home\",function(event) {\n\t\t\twindow.location.hash = \"\";\n\t\t\tvar storyFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE),\n\t\t\t\tstoryList = $tw.wiki.filterTiddlers(storyFilter);\n\t\t\t//invoke any hooks that might change the default story list\n\t\t\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t\t\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t\t\tif(storyList[0]) {\n\t\t\t\t$tw.wiki.addToHistory(storyList[0]);\n\t\t\t}\n\t\t});\n\t\t// Listen for the tm-permalink message\n\t\t$tw.rootWidget.addEventListener(\"tm-permalink\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permalink\" : \"none\"\n\t\t\t});\n\t\t});\n\t\t// Listen for the tm-permaview message\n\t\t$tw.rootWidget.addEventListener(\"tm-permaview\",function(event) {\n\t\t\tupdateLocationHash({\n\t\t\t\tupdateAddressBar: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_UPDATE_ADDRESS_BAR,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\",\n\t\t\t\tupdateHistory: $tw.wiki.getTiddlerText(CONFIG_UPDATE_HISTORY,\"no\").trim(),\n\t\t\t\ttargetTiddler: event.param || event.tiddlerTitle,\n\t\t\t\tcopyToClipboard: $tw.wiki.getTiddlerText(CONFIG_PERMALINKVIEW_COPY_TO_CLIPBOARD,\"yes\").trim() === \"yes\" ? \"permaview\" : \"none\"\n\t\t\t});\t\t\t\t\n\t\t});\n\t}\n};\n\n/*\nProcess the location hash to open the specified tiddlers. Options:\ndisableHistory: if true $:/History is NOT updated\ndefaultToCurrentStory: If true, the current story is retained as the default, instead of opening the default tiddlers\n*/\nfunction openStartupTiddlers(options) {\n\toptions = options || {};\n\t// Work out the target tiddler and the story filter. \"null\" means \"unspecified\"\n\tvar target = null,\n\t\tstoryFilter = null;\n\tif($tw.locationHash.length > 1) {\n\t\tvar hash = $tw.locationHash.substr(1),\n\t\t\tsplit = hash.indexOf(\":\");\n\t\tif(split === -1) {\n\t\t\ttarget = decodeURIComponent(hash.trim());\n\t\t} else {\n\t\t\ttarget = decodeURIComponent(hash.substr(0,split).trim());\n\t\t\tstoryFilter = decodeURIComponent(hash.substr(split + 1).trim());\n\t\t}\n\t}\n\t// If the story wasn't specified use the current tiddlers or a blank story\n\tif(storyFilter === null) {\n\t\tif(options.defaultToCurrentStory) {\n\t\t\tvar currStoryList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE);\n\t\t\tstoryFilter = $tw.utils.stringifyList(currStoryList);\n\t\t} else {\n\t\t\tif(target && target !== \"\") {\n\t\t\t\tstoryFilter = \"\";\n\t\t\t} else {\n\t\t\t\tstoryFilter = $tw.wiki.getTiddlerText(DEFAULT_TIDDLERS_TITLE);\n\t\t\t}\n\t\t}\n\t}\n\t// Process the story filter to get the story list\n\tvar storyList = $tw.wiki.filterTiddlers(storyFilter);\n\t// Invoke any hooks that want to change the default story list\n\tstoryList = $tw.hooks.invokeHook(\"th-opening-default-tiddlers-list\",storyList);\n\t// If the target tiddler isn't included then splice it in at the top\n\tif(target && storyList.indexOf(target) === -1) {\n\t\tstoryList.unshift(target);\n\t}\n\t// Save the story list\n\t$tw.wiki.addTiddler({title: DEFAULT_STORY_TITLE, text: \"\", list: storyList},$tw.wiki.getModificationFields());\n\t// Update history\n\tif(!options.disableHistory) {\n\t\t// If a target tiddler was specified add it to the history stack\n\t\tif(target && target !== \"\") {\n\t\t\t// The target tiddler doesn't need double square brackets, but we'll silently remove them if they're present\n\t\t\tif(target.indexOf(\"[[\") === 0 && target.substr(-2) === \"]]\") {\n\t\t\t\ttarget = target.substr(2,target.length - 4);\n\t\t\t}\n\t\t\t$tw.wiki.addToHistory(target);\n\t\t} else if(storyList.length > 0) {\n\t\t\t$tw.wiki.addToHistory(storyList[0]);\n\t\t}\t\t\n\t}\n}\n\n/*\noptions: See below\noptions.updateAddressBar: \"permalink\", \"permaview\" or \"no\" (defaults to \"permaview\")\noptions.updateHistory: \"yes\" or \"no\" (defaults to \"no\")\noptions.copyToClipboard: \"permalink\", \"permaview\" or \"no\" (defaults to \"no\")\noptions.targetTiddler: optional title of target tiddler for permalink\n*/\nfunction updateLocationHash(options) {\n\t// Get the story and the history stack\n\tvar storyList = $tw.wiki.getTiddlerList(DEFAULT_STORY_TITLE),\n\t\thistoryList = $tw.wiki.getTiddlerData(DEFAULT_HISTORY_TITLE,[]),\n\t\ttargetTiddler = \"\";\n\tif(options.targetTiddler) {\n\t\ttargetTiddler = options.targetTiddler;\n\t} else {\n\t\t// The target tiddler is the one at the top of the stack\n\t\tif(historyList.length > 0) {\n\t\t\ttargetTiddler = historyList[historyList.length-1].title;\n\t\t}\n\t\t// Blank the target tiddler if it isn't present in the story\n\t\tif(storyList.indexOf(targetTiddler) === -1) {\n\t\t\ttargetTiddler = \"\";\n\t\t}\n\t}\n\t// Assemble the location hash\n\tswitch(options.updateAddressBar) {\n\t\tcase \"permalink\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler);\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.locationHash = \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList));\n\t\t\tbreak;\n\t}\n\t// Copy URL to the clipboard\n\tswitch(options.copyToClipboard) {\n\t\tcase \"permalink\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler));\n\t\t\tbreak;\n\t\tcase \"permaview\":\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getLocationPath() + \"#\" + encodeURIComponent(targetTiddler) + \":\" + encodeURIComponent($tw.utils.stringifyList(storyList)));\n\t\t\tbreak;\n\t}\n\t// Only change the location hash if we must, thus avoiding unnecessary onhashchange events\n\tif($tw.utils.getLocationHash() !== $tw.locationHash) {\n\t\tif(options.updateHistory === \"yes\") {\n\t\t\t// Assign the location hash so that history is updated\n\t\t\twindow.location.hash = $tw.locationHash;\n\t\t} else {\n\t\t\t// We use replace so that browser history isn't affected\n\t\t\twindow.location.replace(window.location.toString().split(\"#\")[0] + $tw.locationHash);\n\t\t}\n\t}\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/startup/windows.js": {
            "title": "$:/core/modules/startup/windows.js",
            "text": "/*\\\ntitle: $:/core/modules/startup/windows.js\ntype: application/javascript\nmodule-type: startup\n\nSetup root widget handlers for the messages concerned with opening external browser windows\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"windows\";\nexports.platforms = [\"browser\"];\nexports.after = [\"startup\"];\nexports.synchronous = true;\n\n// Global to keep track of open windows (hashmap by title)\nvar windows = {};\n\nexports.startup = function() {\n\t// Handle open window message\n\t$tw.rootWidget.addEventListener(\"tm-open-window\",function(event) {\n\t\t// Get the parameters\n\t\tvar refreshHandler,\n\t\t\ttitle = event.param || event.tiddlerTitle,\n\t\t\tparamObject = event.paramObject || {},\n\t\t\twindowTitle = paramObject.windowTitle || title,\n\t\t\ttemplate = paramObject.template || \"$:/core/templates/single.tiddler.window\",\n\t\t\twidth = paramObject.width || \"700\",\n\t\t\theight = paramObject.height || \"600\",\n\t\t\tvariables = $tw.utils.extend({},paramObject,{currentTiddler: title});\n\t\t// Open the window\n\t\tvar srcWindow,\n\t\t    srcDocument;\n\t\t// In case that popup blockers deny opening a new window\n\t\ttry {\n\t\t\tsrcWindow = window.open(\"\",\"external-\" + title,\"scrollbars,width=\" + width + \",height=\" + height),\n\t\t\tsrcDocument = srcWindow.document;\n\t\t}\n\t\tcatch(e) {\n\t\t\treturn;\n\t\t}\n\t\twindows[title] = srcWindow;\n\t\t// Check for reopening the same window\n\t\tif(srcWindow.haveInitialisedWindow) {\n\t\t\treturn;\n\t\t}\n\t\t// Initialise the document\n\t\tsrcDocument.write(\"<html><head></head><body class='tc-body tc-single-tiddler-window'></body></html>\");\n\t\tsrcDocument.close();\n\t\tsrcDocument.title = windowTitle;\n\t\tsrcWindow.addEventListener(\"beforeunload\",function(event) {\n\t\t\tdelete windows[title];\n\t\t\t$tw.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t},false);\n\t\t// Set up the styles\n\t\tvar styleWidgetNode = $tw.wiki.makeTranscludeWidget(\"$:/core/ui/PageStylesheet\",{\n\t\t\t\tdocument: $tw.fakeDocument,\n\t\t\t\tvariables: variables,\n\t\t\t\timportPageMacros: true}),\n\t\t\tstyleContainer = $tw.fakeDocument.createElement(\"style\");\n\t\tstyleWidgetNode.render(styleContainer,null);\n\t\tvar styleElement = srcDocument.createElement(\"style\");\n\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\tsrcDocument.head.insertBefore(styleElement,srcDocument.head.firstChild);\n\t\t// Render the text of the tiddler\n\t\tvar parser = $tw.wiki.parseTiddler(template),\n\t\t\twidgetNode = $tw.wiki.makeWidget(parser,{document: srcDocument, parentWidget: $tw.rootWidget, variables: variables});\n\t\twidgetNode.render(srcDocument.body,srcDocument.body.firstChild);\n\t\t// Function to handle refreshes\n\t\trefreshHandler = function(changes) {\n\t\t\tif(styleWidgetNode.refresh(changes,styleContainer,null)) {\n\t\t\t\tstyleElement.innerHTML = styleContainer.textContent;\n\t\t\t}\n\t\t\twidgetNode.refresh(changes);\n\t\t};\n\t\t$tw.wiki.addEventListener(\"change\",refreshHandler);\n\t\t// Listen for keyboard shortcuts\n\t\t$tw.utils.addEventListeners(srcDocument,[{\n\t\t\tname: \"keydown\",\n\t\t\thandlerObject: $tw.keyboardManager,\n\t\t\thandlerMethod: \"handleKeydownEvent\"\n\t\t},{\n\t\t\tname: \"click\",\n\t\t\thandlerObject: $tw.popup,\n\t\t\thandlerMethod: \"handleEvent\"\n\t\t}]);\n\t\tsrcWindow.haveInitialisedWindow = true;\n\t});\n\t// Close open windows when unloading main window\n\t$tw.addUnloadTask(function() {\n\t\t$tw.utils.each(windows,function(win) {\n\t\t\twin.close();\n\t\t});\n\t});\n\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/core/modules/story.js": {
            "title": "$:/core/modules/story.js",
            "text": "/*\\\ntitle: $:/core/modules/story.js\ntype: application/javascript\nmodule-type: global\n\nLightweight object for managing interactions with the story and history lists.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nConstruct Story object with options:\nwiki: reference to wiki object to use to resolve tiddler titles\nstoryTitle: title of story list tiddler\nhistoryTitle: title of history list tiddler\n*/\nfunction Story(options) {\n\toptions = options || {};\n\tthis.wiki = options.wiki || $tw.wiki;\n\tthis.storyTitle = options.storyTitle || \"$:/StoryList\";\n\tthis.historyTitle = options.historyTitle || \"$:/HistoryList\";\n};\n\nStory.prototype.navigateTiddler = function(navigateTo,navigateFromTitle,navigateFromClientRect) {\n\tthis.addToStory(navigateTo,navigateFromTitle);\n\tthis.addToHistory(navigateTo,navigateFromClientRect);\n};\n\nStory.prototype.getStoryList = function() {\n\treturn this.wiki.getTiddlerList(this.storyTitle) || [];\n};\n\nStory.prototype.addToStory = function(navigateTo,navigateFromTitle,options) {\n\toptions = options || {};\n\tvar storyList = this.getStoryList();\n\t// See if the tiddler is already there\n\tvar slot = storyList.indexOf(navigateTo);\n\t// Quit if it already exists in the story river\n\tif(slot >= 0) {\n\t\treturn;\n\t}\n\t// First we try to find the position of the story element we navigated from\n\tvar fromIndex = storyList.indexOf(navigateFromTitle);\n\tif(fromIndex >= 0) {\n\t\t// The tiddler is added from inside the river\n\t\t// Determine where to insert the tiddler; Fallback is \"below\"\n\t\tswitch(options.openLinkFromInsideRiver) {\n\t\t\tcase \"top\":\n\t\t\t\tslot = 0;\n\t\t\t\tbreak;\n\t\t\tcase \"bottom\":\n\t\t\t\tslot = storyList.length;\n\t\t\t\tbreak;\n\t\t\tcase \"above\":\n\t\t\t\tslot = fromIndex;\n\t\t\t\tbreak;\n\t\t\tcase \"below\": // Intentional fall-through\n\t\t\tdefault:\n\t\t\t\tslot = fromIndex + 1;\n\t\t\t\tbreak;\n\t\t}\n\t} else {\n\t\t// The tiddler is opened from outside the river. Determine where to insert the tiddler; default is \"top\"\n\t\tif(options.openLinkFromOutsideRiver === \"bottom\") {\n\t\t\t// Insert at bottom\n\t\t\tslot = storyList.length;\n\t\t} else {\n\t\t\t// Insert at top\n\t\t\tslot = 0;\n\t\t}\n\t}\n\t// Add the tiddler\n\tstoryList.splice(slot,0,navigateTo);\n\t// Save the story\n\tthis.saveStoryList(storyList);\n};\n\nStory.prototype.saveStoryList = function(storyList) {\n\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\t{title: this.storyTitle},\n\t\tstoryTiddler,\n\t\t{list: storyList},\n\t\tthis.wiki.getModificationFields()\n\t));\n};\n\nStory.prototype.addToHistory = function(navigateTo,navigateFromClientRect) {\n\tvar titles = $tw.utils.isArray(navigateTo) ? navigateTo : [navigateTo];\n\t// Add a new record to the top of the history stack\n\tvar historyList = this.wiki.getTiddlerData(this.historyTitle,[]);\n\t$tw.utils.each(titles,function(title) {\n\t\thistoryList.push({title: title, fromPageRect: navigateFromClientRect});\n\t});\n\tthis.wiki.setTiddlerData(this.historyTitle,historyList,{\"current-tiddler\": titles[titles.length-1]});\n};\n\nStory.prototype.storyCloseTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCloseAllTiddlers = function() {\n// TBD\n};\n\nStory.prototype.storyCloseOtherTiddlers = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyEditTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyDeleteTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storySaveTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyCancelTiddler = function(targetTitle) {\n// TBD\n};\n\nStory.prototype.storyNewTiddler = function(targetTitle) {\n// TBD\n};\n\nexports.Story = Story;\n\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/storyviews/classic.js": {
            "title": "$:/core/modules/storyviews/classic.js",
            "text": "/*\\\ntitle: $:/core/modules/storyviews/classic.js\ntype: application/javascript\nmodule-type: storyview\n\nViews the story as a linear sequence\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ClassicStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nClassicStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration()\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\tif(duration) {\n\t\t// Scroll the node into view\n\t\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\t\n\t} else {\n\t\ttargetElement.scrollIntoView();\n\t}\n};\n\nClassicStoryView.prototype.insert = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar computedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Reset the margin once the transition is over\n\t\tsetTimeout(function() {\n\t\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t\t{transition: \"none\"},\n\t\t\t\t{marginBottom: \"\"}\n\t\t\t]);\n\t\t},duration);\n\t\t// Set up the initial position of the element\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t// Transition to the final position\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t]);\n\t}\n};\n\nClassicStoryView.prototype.remove = function(widget) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tif(duration) {\n\t\tvar targetElement = widget.findFirstDomNode(),\n\t\t\tremoveElement = function() {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t};\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(targetElement instanceof Element)) {\n\t\t\tremoveElement();\n\t\t\treturn;\n\t\t}\n\t\t// Get the current height of the tiddler\n\t\tvar currWidth = targetElement.offsetWidth,\n\t\t\tcomputedStyle = window.getComputedStyle(targetElement),\n\t\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\t\tcurrHeight = targetElement.offsetHeight + currMarginTop;\n\t\t// Remove the dom nodes of the widget at the end of the transition\n\t\tsetTimeout(removeElement,duration);\n\t\t// Animate the closure\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"translateX(0px)\"},\n\t\t\t{marginBottom:  currMarginBottom + \"px\"},\n\t\t\t{opacity: \"1.0\"}\n\t\t]);\n\t\t$tw.utils.forceLayout(targetElement);\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"opacity \" + duration + \"ms \" + easing + \", \" +\n\t\t\t\t\t\t\"margin-bottom \" + duration + \"ms \" + easing},\n\t\t\t{transform: \"translateX(-\" + currWidth + \"px)\"},\n\t\t\t{marginBottom: (-currHeight) + \"px\"},\n\t\t\t{opacity: \"0.0\"}\n\t\t]);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n};\n\nexports.classic = ClassicStoryView;\n\n})();",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/storyviews/pop.js": {
            "title": "$:/core/modules/storyviews/pop.js",
            "text": "/*\\\ntitle: $:/core/modules/storyviews/pop.js\ntype: application/javascript\nmodule-type: storyview\n\nAnimates list insertions and removals\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar PopStoryView = function(listWidget) {\n\tthis.listWidget = listWidget;\n};\n\nPopStoryView.prototype.navigateTo = function(historyInfo) {\n\tvar listElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Scroll the node into view\n\tthis.listWidget.dispatchEvent({type: \"tm-scroll\", target: targetElement});\n};\n\nPopStoryView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Reset once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(targetElement,[\n\t\t\t{transition: \"none\"},\n\t\t\t{transform: \"none\"}\n\t\t]);\n\t\t$tw.utils.setStyle(widget.document.body,[\n\t\t\t{\"overflow-x\": \"\"}\n\t\t]);\n\t},duration);\n\t// Prevent the page from overscrolling due to the zoom factor\n\t$tw.utils.setStyle(widget.document.body,[\n\t\t{\"overflow-x\": \"hidden\"}\n\t]);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(2)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t// Transition to the final position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n};\n\nPopStoryView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\tif(targetElement && targetElement.parentNode) {\n\t\t\t\twidget.removeChildDomNodes();\n\t\t\t}\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Remove the element at the end of the transition\n\tsetTimeout(removeElement,duration);\n\t// Animate the closure\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: \"none\"},\n\t\t{transform: \"scale(1)\"},\n\t\t{opacity: \"1.0\"}\n\t]);\n\t$tw.utils.forceLayout(targetElement);\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{transform: \"scale(0.1)\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n};\n\nexports.pop = PopStoryView;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/storyviews/zoomin.js": {
            "title": "$:/core/modules/storyviews/zoomin.js",
            "text": "/*\\\ntitle: $:/core/modules/storyviews/zoomin.js\ntype: application/javascript\nmodule-type: storyview\n\nZooms between individual tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar easing = \"cubic-bezier(0.645, 0.045, 0.355, 1)\"; // From http://easings.net/#easeInOutCubic\n\nvar ZoominListView = function(listWidget) {\n\tvar self = this;\n\tthis.listWidget = listWidget;\n\t// Get the index of the tiddler that is at the top of the history\n\tvar history = this.listWidget.wiki.getTiddlerDataCached(this.listWidget.historyTitle,[]),\n\t\ttargetTiddler;\n\tif(history.length > 0) {\n\t\ttargetTiddler = history[history.length-1].title;\n\t}\n\t// Make all the tiddlers position absolute, and hide all but the top (or first) one\n\t$tw.utils.each(this.listWidget.children,function(itemWidget,index) {\n\t\tvar domNode = itemWidget.findFirstDomNode();\n\t\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\t\tif(!(domNode instanceof Element)) {\n\t\t\treturn;\n\t\t}\n\t\tif((targetTiddler && targetTiddler !== itemWidget.parseTreeNode.itemTitle) || (!targetTiddler && index)) {\n\t\t\tdomNode.style.display = \"none\";\n\t\t} else {\n\t\t\tself.currentTiddlerDomNode = domNode;\n\t\t}\n\t\t$tw.utils.addClass(domNode,\"tc-storyview-zoomin-tiddler\");\n\t});\n};\n\nZoominListView.prototype.navigateTo = function(historyInfo) {\n\tvar duration = $tw.utils.getAnimationDuration(),\n\t\tlistElementIndex = this.listWidget.findListItem(0,historyInfo.title);\n\tif(listElementIndex === undefined) {\n\t\treturn;\n\t}\n\tvar listItemWidget = this.listWidget.children[listElementIndex],\n\t\ttargetElement = listItemWidget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the new tiddler be position absolute and visible so that we can measure it\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"0 0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{opacity: \"0.0\"}\n\t]);\n\t// Get the position of the source node, or use the centre of the window as the source position\n\tvar sourceBounds = historyInfo.fromPageRect || {\n\t\t\tleft: window.innerWidth/2 - 2,\n\t\t\ttop: window.innerHeight/2 - 2,\n\t\t\twidth: window.innerWidth/8,\n\t\t\theight: window.innerHeight/8\n\t\t};\n\t// Try to find the title node in the target tiddler\n\tvar titleDomNode = findTitleDomNode(listItemWidget) || listItemWidget.findFirstDomNode(),\n\t\tzoomBounds = titleDomNode.getBoundingClientRect();\n\t// Compute the transform for the target tiddler to make the title lie over the source rectange\n\tvar targetBounds = targetElement.getBoundingClientRect(),\n\t\tscale = sourceBounds.width / zoomBounds.width,\n\t\tx = sourceBounds.left - targetBounds.left - (zoomBounds.left - targetBounds.left) * scale,\n\t\ty = sourceBounds.top - targetBounds.top - (zoomBounds.top - targetBounds.top) * scale;\n\t// Transform the target tiddler to its starting position\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(targetElement);\n\t// Apply the ending transitions with a timeout to ensure that the previously applied transformations are applied first\n\tvar self = this,\n\t\tprevCurrentTiddler = this.currentTiddlerDomNode;\n\tthis.currentTiddlerDomNode = targetElement;\n\t// Transform the target tiddler to its natural size\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{zIndex: \"500\"},\n\t]);\n\t// Transform the previous tiddler out of the way and then hide it\n\tif(prevCurrentTiddler && prevCurrentTiddler !== targetElement) {\n\t\tscale = zoomBounds.width / sourceBounds.width;\n\t\tx =  zoomBounds.left - targetBounds.left - (sourceBounds.left - targetBounds.left) * scale;\n\t\ty =  zoomBounds.top - targetBounds.top - (sourceBounds.top - targetBounds.top) * scale;\n\t\t$tw.utils.setStyle(prevCurrentTiddler,[\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transformOrigin: \"0 0\"},\n\t\t\t{transform: \"translateX(\" + x + \"px) translateY(\" + y + \"px) scale(\" + scale + \")\"},\n\t\t\t{zIndex: \"0\"}\n\t\t]);\n\t\t// Hide the tiddler when the transition has finished\n\t\tsetTimeout(function() {\n\t\t\tif(self.currentTiddlerDomNode !== prevCurrentTiddler) {\n\t\t\t\tprevCurrentTiddler.style.display = \"none\";\n\t\t\t}\n\t\t},duration);\n\t}\n\t// Scroll the target into view\n//\t$tw.pageScroller.scrollIntoView(targetElement);\n};\n\n/*\nFind the first child DOM node of a widget that has the class \"tc-title\"\n*/\nfunction findTitleDomNode(widget,targetClass) {\n\ttargetClass = targetClass || \"tc-title\";\n\tvar domNode = widget.findFirstDomNode();\n\tif(domNode && domNode.querySelector) {\n\t\treturn domNode.querySelector(\".\" + targetClass);\n\t}\n\treturn null;\n}\n\nZoominListView.prototype.insert = function(widget) {\n\tvar targetElement = widget.findFirstDomNode();\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\treturn;\n\t}\n\t// Make the newly inserted node position absolute and hidden\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"none\"}\n\t]);\n};\n\nZoominListView.prototype.remove = function(widget) {\n\tvar targetElement = widget.findFirstDomNode(),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\tremoveElement = function() {\n\t\t\twidget.removeChildDomNodes();\n\t\t};\n\t// Abandon if the list entry isn't a DOM element (it might be a text node)\n\tif(!(targetElement instanceof Element)) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Abandon if hidden\n\tif(targetElement.style.display != \"block\" ) {\n\t\tremoveElement();\n\t\treturn;\n\t}\n\t// Set up the tiddler that is being closed\n\t$tw.utils.addClass(targetElement,\"tc-storyview-zoomin-tiddler\");\n\t$tw.utils.setStyle(targetElement,[\n\t\t{display: \"block\"},\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t{transition: \"none\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\t// We'll move back to the previous or next element in the story\n\tvar toWidget = widget.previousSibling();\n\tif(!toWidget) {\n\t\ttoWidget = widget.nextSibling();\n\t}\n\tvar toWidgetDomNode = toWidget && toWidget.findFirstDomNode();\n\t// Set up the tiddler we're moving back in\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.addClass(toWidgetDomNode,\"tc-storyview-zoomin-tiddler\");\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{display: \"block\"},\n\t\t\t{transformOrigin: \"50% 50%\"},\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(10)\"},\n\t\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t\t{opacity: \"0\"},\n\t\t\t{zIndex: \"500\"}\n\t\t]);\n\t\tthis.currentTiddlerDomNode = toWidgetDomNode;\n\t}\n\t// Animate them both\n\t// Force layout\n\t$tw.utils.forceLayout(this.listWidget.parentDomNode);\n\t// First, the tiddler we're closing\n\t$tw.utils.setStyle(targetElement,[\n\t\t{transformOrigin: \"50% 50%\"},\n\t\t{transform: \"translateX(0px) translateY(0px) scale(0.1)\"},\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms \" + easing + \", opacity \" + duration + \"ms \" + easing},\n\t\t{opacity: \"0\"},\n\t\t{zIndex: \"0\"}\n\t]);\n\tsetTimeout(removeElement,duration);\n\t// Now the tiddler we're going back to\n\tif(toWidgetDomNode) {\n\t\t$tw.utils.setStyle(toWidgetDomNode,[\n\t\t\t{transform: \"translateX(0px) translateY(0px) scale(1)\"},\n\t\t\t{opacity: \"1\"}\n\t\t]);\n\t}\n\treturn true; // Indicate that we'll delete the DOM node\n};\n\nexports.zoomin = ZoominListView;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "storyview"
        },
        "$:/core/modules/syncer.js": {
            "title": "$:/core/modules/syncer.js",
            "text": "/*\\\ntitle: $:/core/modules/syncer.js\ntype: application/javascript\nmodule-type: global\n\nThe syncer tracks changes to the store and synchronises them to a remote data store represented as a \"sync adaptor\"\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDefaults\n*/\nSyncer.prototype.titleIsLoggedIn = \"$:/status/IsLoggedIn\";\nSyncer.prototype.titleIsAnonymous = \"$:/status/IsAnonymous\";\nSyncer.prototype.titleIsReadOnly = \"$:/status/IsReadOnly\";\nSyncer.prototype.titleUserName = \"$:/status/UserName\";\nSyncer.prototype.titleSyncFilter = \"$:/config/SyncFilter\";\nSyncer.prototype.titleSyncPollingInterval = \"$:/config/SyncPollingInterval\";\nSyncer.prototype.titleSyncDisableLazyLoading = \"$:/config/SyncDisableLazyLoading\";\nSyncer.prototype.titleSavedNotification = \"$:/language/Notifications/Save/Done\";\nSyncer.prototype.titleSyncThrottleInterval = \"$:/config/SyncThrottleInterval\";\nSyncer.prototype.taskTimerInterval = 1 * 1000; // Interval for sync timer\nSyncer.prototype.throttleInterval = 1 * 1000; // Defer saving tiddlers if they've changed in the last 1s...\nSyncer.prototype.errorRetryInterval = 5 * 1000; // Interval to retry after an error\nSyncer.prototype.fallbackInterval = 10 * 1000; // Unless the task is older than 10s\nSyncer.prototype.pollTimerInterval = 60 * 1000; // Interval for polling for changes from the adaptor\n\n/*\nInstantiate the syncer with the following options:\nsyncadaptor: reference to syncadaptor to be used\nwiki: wiki to be synced\n*/\nfunction Syncer(options) {\n\tvar self = this;\n\tthis.wiki = options.wiki;\n\t// Save parameters\n\tthis.syncadaptor = options.syncadaptor;\n\tthis.disableUI = !!options.disableUI;\n\tthis.titleIsLoggedIn = options.titleIsLoggedIn || this.titleIsLoggedIn;\n\tthis.titleUserName = options.titleUserName || this.titleUserName;\n\tthis.titleSyncFilter = options.titleSyncFilter || this.titleSyncFilter;\n\tthis.titleSavedNotification = options.titleSavedNotification || this.titleSavedNotification;\n\tthis.taskTimerInterval = options.taskTimerInterval || this.taskTimerInterval;\n\tthis.throttleInterval = options.throttleInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncThrottleInterval,\"\"),10) || this.throttleInterval;\n\tthis.errorRetryInterval = options.errorRetryInterval || this.errorRetryInterval;\n\tthis.fallbackInterval = options.fallbackInterval || this.fallbackInterval;\n\tthis.pollTimerInterval = options.pollTimerInterval || parseInt(this.wiki.getTiddlerText(this.titleSyncPollingInterval,\"\"),10) || this.pollTimerInterval;\n\tthis.logging = \"logging\" in options ? options.logging : true;\n\t// Make a logger\n\tthis.logger = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\")  + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\"),{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging,\n\t\tsaveHistory: true\n\t});\n\t// Make another logger for connection errors\n\tthis.loggerConnection = new $tw.utils.Logger(\"syncer\" + ($tw.browser ? \"-browser\" : \"\") + ($tw.node ? \"-server\" : \"\")  + (this.syncadaptor.name ? (\"-\" + this.syncadaptor.name) : \"\") + \"-connection\",{\n\t\tcolour: \"cyan\",\n\t\tenable: this.logging\n\t});\n\t// Ask the syncadaptor to use the main logger\n\tif(this.syncadaptor.setLoggerSaveBuffer) {\n\t\tthis.syncadaptor.setLoggerSaveBuffer(this.logger);\n\t}\n\t// Compile the dirty tiddler filter\n\tthis.filterFn = this.wiki.compileFilter(this.wiki.getTiddlerText(this.titleSyncFilter));\n\t// Record information for known tiddlers\n\tthis.readTiddlerInfo();\n\tthis.titlesToBeLoaded = {}; // Hashmap of titles of tiddlers that need loading from the server\n\tthis.titlesHaveBeenLazyLoaded = {}; // Hashmap of titles of tiddlers that have already been lazily loaded from the server\n\t// Timers\n\tthis.taskTimerId = null; // Timer for task dispatch\n\tthis.pollTimerId = null; // Timer for polling server\n\t// Number of outstanding requests\n\tthis.numTasksInProgress = 0;\n\t// Listen out for changes to tiddlers\n\tthis.wiki.addEventListener(\"change\",function(changes) {\n\t\t// Filter the changes to just include ones that are being synced\n\t\tvar filteredChanges = self.getSyncedTiddlers(function(callback) {\n\t\t\t$tw.utils.each(changes,function(change,title) {\n\t\t\t\tvar tiddler = self.wiki.tiddlerExists(title) && self.wiki.getTiddler(title);\n\t\t\t\tcallback(tiddler,title);\n\t\t\t});\n\t\t});\n\t\tif(filteredChanges.length > 0) {\n\t\t\tself.processTaskQueue();\n\t\t} else {\n\t\t\t// Look for deletions of tiddlers we're already syncing\t\n\t\t\tvar outstandingDeletion = false\n\t\t\t$tw.utils.each(changes,function(change,title,object) {\n\t\t\t\tif(change.deleted && $tw.utils.hop(self.tiddlerInfo,title)) {\n\t\t\t\t\toutstandingDeletion = true;\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(outstandingDeletion) {\n\t\t\t\tself.processTaskQueue();\n\t\t\t}\n\t\t}\n\t});\n\t// Browser event handlers\n\tif($tw.browser && !this.disableUI) {\n\t\t// Set up our beforeunload handler\n\t\t$tw.addUnloadTask(function(event) {\n\t\t\tvar confirmationMessage;\n\t\t\tif(self.isDirty()) {\n\t\t\t\tconfirmationMessage = $tw.language.getString(\"UnsavedChangesWarning\");\n\t\t\t\tevent.returnValue = confirmationMessage; // Gecko\n\t\t\t}\n\t\t\treturn confirmationMessage;\n\t\t});\n\t\t// Listen out for login/logout/refresh events in the browser\n\t\t$tw.rootWidget.addEventListener(\"tm-login\",function() {\n\t\t\tself.handleLoginEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-logout\",function() {\n\t\t\tself.handleLogoutEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-server-refresh\",function() {\n\t\t\tself.handleRefreshEvent();\n\t\t});\n\t\t$tw.rootWidget.addEventListener(\"tm-copy-syncer-logs-to-clipboard\",function() {\n\t\t\t$tw.utils.copyToClipboard($tw.utils.getSystemInfo() + \"\\n\\nLog:\\n\" + self.logger.getBuffer());\n\t\t});\n\t}\n\t// Listen out for lazyLoad events\n\tif(!this.disableUI && $tw.wiki.getTiddlerText(this.titleSyncDisableLazyLoading) !== \"yes\") {\n\t\tthis.wiki.addEventListener(\"lazyLoad\",function(title) {\n\t\t\tself.handleLazyLoadEvent(title);\n\t\t});\t\t\n\t}\n\t// Get the login status\n\tthis.getStatus(function(err,isLoggedIn) {\n\t\t// Do a sync from the server\n\t\tself.syncFromServer();\n\t});\n}\n\n/*\nShow a generic network error alert\n*/\nSyncer.prototype.displayError = function(msg,err) {\n\tif(err === ($tw.language.getString(\"Error/XMLHttpRequest\") + \": 0\")) {\n\t\tthis.loggerConnection.alert($tw.language.getString(\"Error/NetworkErrorAlert\"));\n\t\tthis.logger.log(msg + \":\",err);\n\t} else {\n\t\tthis.logger.alert(msg + \":\",err);\n\t}\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getSyncedTiddlers = function(source) {\n\treturn this.filterFn.call(this.wiki,source);\n};\n\n/*\nReturn an array of the tiddler titles that are subjected to syncing\n*/\nSyncer.prototype.getTiddlerRevision = function(title) {\n\tif(this.syncadaptor && this.syncadaptor.getTiddlerRevision) {\n\t\treturn this.syncadaptor.getTiddlerRevision(title);\n\t} else {\n\t\treturn this.wiki.getTiddler(title).fields.revision;\t\n\t} \n};\n\n/*\nRead (or re-read) the latest tiddler info from the store\n*/\nSyncer.prototype.readTiddlerInfo = function() {\n\t// Hashmap by title of {revision:,changeCount:,adaptorInfo:}\n\t// \"revision\" is the revision of the tiddler last seen on the server, and \"changecount\" is the corresponding local changecount\n\tthis.tiddlerInfo = {};\n\t// Record information for known tiddlers\n\tvar self = this,\n\t\ttiddlers = this.getSyncedTiddlers();\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.tiddlerExists(title) && self.wiki.getTiddler(title);\n\t\tself.tiddlerInfo[title] = {\n\t\t\trevision: self.getTiddlerRevision(title),\n\t\t\tadaptorInfo: self.syncadaptor && self.syncadaptor.getTiddlerInfo(tiddler),\n\t\t\tchangeCount: self.wiki.getChangeCount(title)\n\t\t};\n\t});\n};\n\n/*\nChecks whether the wiki is dirty (ie the window shouldn't be closed)\n*/\nSyncer.prototype.isDirty = function() {\n\tthis.logger.log(\"Checking dirty status\");\n\t// Check tiddlers that are in the store and included in the filter function\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(this.wiki.tiddlerExists(title)) {\n\t\t\tif(tiddlerInfo) {\n\t\t\t\t// If the tiddler is known on the server and has been modified locally then it needs to be saved to the server\n\t\t\t\tif($tw.wiki.getChangeCount(title) > tiddlerInfo.changeCount) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// If the tiddler isn't known on the server then it needs to be saved to the server\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t}\n\t// Check tiddlers that are known from the server but not currently in the store\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\tif(!this.wiki.tiddlerExists(titles[index])) {\n\t\t\t// There must be a pending delete\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nUpdate the document body with the class \"tc-dirty\" if the wiki has unsaved/unsynced changes\n*/\nSyncer.prototype.updateDirtyStatus = function() {\n\tif($tw.browser && !this.disableUI) {\n\t\tvar dirty = this.isDirty();\n\t\t$tw.utils.toggleClass(document.body,\"tc-dirty\",dirty);\n\t\tif(!dirty) {\n\t\t\tthis.loggerConnection.clearAlerts();\n\t\t}\n\t}\n};\n\n/*\nSave an incoming tiddler in the store, and updates the associated tiddlerInfo\n*/\nSyncer.prototype.storeTiddler = function(tiddlerFields) {\n\t// Save the tiddler\n\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\tthis.wiki.addTiddler(tiddler);\n\t// Save the tiddler revision and changeCount details\n\tthis.tiddlerInfo[tiddlerFields.title] = {\n\t\trevision: this.getTiddlerRevision(tiddlerFields.title),\n\t\tadaptorInfo: this.syncadaptor.getTiddlerInfo(tiddler),\n\t\tchangeCount: this.wiki.getChangeCount(tiddlerFields.title)\n\t};\n};\n\nSyncer.prototype.getStatus = function(callback) {\n\tvar self = this;\n\t// Check if the adaptor supports getStatus()\n\tif(this.syncadaptor && this.syncadaptor.getStatus) {\n\t\t// Mark us as not logged in\n\t\tthis.wiki.addTiddler({title: this.titleIsLoggedIn,text: \"no\"});\n\t\t// Get login status\n\t\tthis.syncadaptor.getStatus(function(err,isLoggedIn,username,isReadOnly,isAnonymous) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\t// Set the various status tiddlers\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsReadOnly,text: isReadOnly ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsAnonymous,text: isAnonymous ? \"yes\" : \"no\"});\n\t\t\t\tself.wiki.addTiddler({title: self.titleIsLoggedIn,text: isLoggedIn ? \"yes\" : \"no\"});\n\t\t\t\tif(isLoggedIn) {\n\t\t\t\t\tself.wiki.addTiddler({title: self.titleUserName,text: username || \"\"});\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Invoke the callback\n\t\t\tif(callback) {\n\t\t\t\tcallback(err,isLoggedIn,username);\n\t\t\t}\n\t\t});\n\t} else {\n\t\tcallback(null,true,\"UNAUTHENTICATED\");\n\t}\n};\n\n/*\nSynchronise from the server by reading the skinny tiddler list and queuing up loads for any tiddlers that we don't already have up to date\n*/\nSyncer.prototype.syncFromServer = function() {\n\tvar self = this,\n\t\tcancelNextSync = function() {\n\t\t\tif(self.pollTimerId) {\n\t\t\t\tclearTimeout(self.pollTimerId);\n\t\t\t\tself.pollTimerId = null;\n\t\t\t}\n\t\t},\n\t\ttriggerNextSync = function() {\n\t\t\tself.pollTimerId = setTimeout(function() {\n\t\t\t\tself.pollTimerId = null;\n\t\t\t\tself.syncFromServer.call(self);\n\t\t\t},self.pollTimerInterval);\n\t\t};\n\tif(this.syncadaptor && this.syncadaptor.getUpdatedTiddlers) {\n\t\tthis.logger.log(\"Retrieving updated tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getUpdatedTiddlers(self,function(err,updates) {\n\t\t\ttriggerNextSync();\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif(updates) {\n\t\t\t\t$tw.utils.each(updates.modifications,function(title) {\n\t\t\t\t\tself.titlesToBeLoaded[title] = true;\n\t\t\t\t});\n\t\t\t\t$tw.utils.each(updates.deletions,function(title) {\n\t\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t\t});\n\t\t\t\tif(updates.modifications.length > 0 || updates.deletions.length > 0) {\n\t\t\t\t\tself.processTaskQueue();\n\t\t\t\t}\t\t\t\t\n\t\t\t}\n\t\t});\n\t} else if(this.syncadaptor && this.syncadaptor.getSkinnyTiddlers) {\n\t\tthis.logger.log(\"Retrieving skinny tiddler list\");\n\t\tcancelNextSync();\n\t\tthis.syncadaptor.getSkinnyTiddlers(function(err,tiddlers) {\n\t\t\ttriggerNextSync();\n\t\t\t// Check for errors\n\t\t\tif(err) {\n\t\t\t\tself.displayError($tw.language.getString(\"Error/RetrievingSkinny\"),err);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\t// Keep track of which tiddlers we already know about have been reported this time\n\t\t\tvar previousTitles = Object.keys(self.tiddlerInfo);\n\t\t\t// Process each incoming tiddler\n\t\t\tfor(var t=0; t<tiddlers.length; t++) {\n\t\t\t\t// Get the incoming tiddler fields, and the existing tiddler\n\t\t\t\tvar tiddlerFields = tiddlers[t],\n\t\t\t\t\tincomingRevision = tiddlerFields.revision + \"\",\n\t\t\t\t\ttiddler = self.wiki.tiddlerExists(tiddlerFields.title) && self.wiki.getTiddler(tiddlerFields.title),\n\t\t\t\t\ttiddlerInfo = self.tiddlerInfo[tiddlerFields.title],\n\t\t\t\t\tcurrRevision = tiddlerInfo ? tiddlerInfo.revision : null,\n\t\t\t\t\tindexInPreviousTitles = previousTitles.indexOf(tiddlerFields.title);\n\t\t\t\tif(indexInPreviousTitles !== -1) {\n\t\t\t\t\tpreviousTitles.splice(indexInPreviousTitles,1);\n\t\t\t\t}\n\t\t\t\t// Ignore the incoming tiddler if it's the same as the revision we've already got\n\t\t\t\tif(currRevision !== incomingRevision) {\n\t\t\t\t\t// Only load the skinny version if we don't already have a fat version of the tiddler\n\t\t\t\t\tif(!tiddler || tiddler.fields.text === undefined) {\n\t\t\t\t\t\tself.storeTiddler(tiddlerFields);\n\t\t\t\t\t}\n\t\t\t\t\t// Do a full load of this tiddler\n\t\t\t\t\tself.titlesToBeLoaded[tiddlerFields.title] = true;\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Delete any tiddlers that were previously reported but missing this time\n\t\t\t$tw.utils.each(previousTitles,function(title) {\n\t\t\t\tdelete self.tiddlerInfo[title];\n\t\t\t\tself.logger.log(\"Deleting tiddler missing from server:\",title);\n\t\t\t\tself.wiki.deleteTiddler(title);\n\t\t\t});\n\t\t\tself.processTaskQueue();\n\t\t});\n\t}\n};\n\n/*\nForce load a tiddler from the server\n*/\nSyncer.prototype.enqueueLoadTiddler = function(title) {\n\tthis.titlesToBeLoaded[title] = true;\n\tthis.processTaskQueue();\n};\n\n/*\nLazily load a skinny tiddler if we can\n*/\nSyncer.prototype.handleLazyLoadEvent = function(title) {\n\t// Ignore if the syncadaptor doesn't handle it\n\tif(!this.syncadaptor.supportsLazyLoading) {\n\t\treturn;\n\t}\n\t// Don't lazy load the same tiddler twice\n\tif(!this.titlesHaveBeenLazyLoaded[title]) {\n\t\t// Don't lazy load if the tiddler isn't included in the sync filter\n\t\tif(this.getSyncedTiddlers().indexOf(title) !== -1) {\n\t\t\t// Mark the tiddler as needing loading, and having already been lazily loaded\n\t\t\tthis.titlesToBeLoaded[title] = true;\n\t\t\tthis.titlesHaveBeenLazyLoaded[title] = true;\n\t\t}\n\t}\n};\n\n/*\nDispay a password prompt and allow the user to login\n*/\nSyncer.prototype.handleLoginEvent = function() {\n\tvar self = this;\n\tthis.getStatus(function(err,isLoggedIn,username) {\n\t\tif(!err && !isLoggedIn) {\n\t\t\t$tw.passwordPrompt.createPrompt({\n\t\t\t\tserviceName: $tw.language.getString(\"LoginToTiddlySpace\"),\n\t\t\t\tcallback: function(data) {\n\t\t\t\t\tself.login(data.username,data.password,function(err,isLoggedIn) {\n\t\t\t\t\t\tself.syncFromServer();\n\t\t\t\t\t});\n\t\t\t\t\treturn true; // Get rid of the password prompt\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t});\n};\n\n/*\nAttempt to login to TiddlyWeb.\n\tusername: username\n\tpassword: password\n\tcallback: invoked with arguments (err,isLoggedIn)\n*/\nSyncer.prototype.login = function(username,password,callback) {\n\tthis.logger.log(\"Attempting to login as\",username);\n\tvar self = this;\n\tif(this.syncadaptor.login) {\n\t\tthis.syncadaptor.login(username,password,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.getStatus(function(err,isLoggedIn,username) {\n\t\t\t\tif(callback) {\n\t\t\t\t\tcallback(err,isLoggedIn);\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t} else {\n\t\tcallback(null,true);\n\t}\n};\n\n/*\nAttempt to log out of TiddlyWeb\n*/\nSyncer.prototype.handleLogoutEvent = function() {\n\tthis.logger.log(\"Attempting to logout\");\n\tvar self = this;\n\tif(this.syncadaptor.logout) {\n\t\tthis.syncadaptor.logout(function(err) {\n\t\t\tif(err) {\n\t\t\t\tself.logger.alert(err);\n\t\t\t} else {\n\t\t\t\tself.getStatus();\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nImmediately refresh from the server\n*/\nSyncer.prototype.handleRefreshEvent = function() {\n\tthis.syncFromServer();\n};\n\n/*\nProcess the next task\n*/\nSyncer.prototype.processTaskQueue = function() {\n\tvar self = this;\n\t// Only process a task if the sync adaptor is fully initialised and we're not already performing\n\t// a task. If we are already performing a task then we'll dispatch the next one when it completes\n\tif((!this.syncadaptor.isReady || this.syncadaptor.isReady()) && this.numTasksInProgress === 0) {\n\t\t// Choose the next task to perform\n\t\tvar task = this.chooseNextTask();\n\t\t// Perform the task if we had one\n\t\tif(typeof task === \"object\" && task !== null) {\n\t\t\tthis.numTasksInProgress += 1;\n\t\t\ttask.run(function(err) {\n\t\t\t\tself.numTasksInProgress -= 1;\n\t\t\t\tif(err) {\n\t\t\t\t\tself.displayError(\"Sync error while processing \" + task.type + \" of '\" + task.title + \"'\",err);\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\tself.triggerTimeout(self.errorRetryInterval);\n\t\t\t\t} else {\n\t\t\t\t\tself.updateDirtyStatus();\n\t\t\t\t\t// Process the next task\n\t\t\t\t\tself.processTaskQueue.call(self);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\t// No task is ready so update the status\n\t\t\tthis.updateDirtyStatus();\n\t\t\t// And trigger a timeout if there is a pending task\n\t\t\tif(task === true) {\n\t\t\t\tthis.triggerTimeout();\t\t\t\t\n\t\t\t}\n\t\t}\n\t} else {\n\t\tthis.updateDirtyStatus();\t\t\n\t}\n};\n\nSyncer.prototype.triggerTimeout = function(interval) {\n\tvar self = this;\n\tif(!this.taskTimerId) {\n\t\tthis.taskTimerId = setTimeout(function() {\n\t\t\tself.taskTimerId = null;\n\t\t\tself.processTaskQueue.call(self);\n\t\t},interval || self.taskTimerInterval);\n\t}\n};\n\n/*\nChoose the next sync task. We prioritise saves, then deletes, then loads from the server\n\nReturns either a task object, null if there's no upcoming tasks, or the boolean true if there are pending tasks that aren't yet due\n*/\nSyncer.prototype.chooseNextTask = function() {\n\tvar thresholdLastSaved = (new Date()) - this.throttleInterval,\n\t\thavePending = null;\n\t// First we look for tiddlers that have been modified locally and need saving back to the server\n\tvar titles = this.getSyncedTiddlers();\n\tfor(var index=0; index<titles.length; index++) {\n\t\tvar title = titles[index],\n\t\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title),\n\t\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\tif(tiddler) {\n\t\t\t// If the tiddler is not known on the server, or has been modified locally no more recently than the threshold then it needs to be saved to the server\n\t\t\tvar hasChanged = !tiddlerInfo || $tw.wiki.getChangeCount(title) > tiddlerInfo.changeCount,\n\t\t\t\tisReadyToSave = !tiddlerInfo || !tiddlerInfo.timestampLastSaved || tiddlerInfo.timestampLastSaved < thresholdLastSaved;\n\t\t\tif(hasChanged) {\n\t\t\t\tif(isReadyToSave) {\n\t\t\t\t\treturn new SaveTiddlerTask(this,title); \t\t\t\t\t\n\t\t\t\t} else {\n\t\t\t\t\thavePending = true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Second, we check tiddlers that are known from the server but not currently in the store, and so need deleting on the server\n\ttitles = Object.keys(this.tiddlerInfo);\n\tfor(index=0; index<titles.length; index++) {\n\t\ttitle = titles[index];\n\t\ttiddlerInfo = this.tiddlerInfo[title];\n\t\ttiddler = this.wiki.tiddlerExists(title) && this.wiki.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\treturn new DeleteTiddlerTask(this,title);\n\t\t}\n\t}\n\t// Check for tiddlers that need loading\n\ttitle = Object.keys(this.titlesToBeLoaded)[0];\n\tif(title) {\n\t\tdelete this.titlesToBeLoaded[title];\n\t\treturn new LoadTiddlerTask(this,title);\n\t}\n\t// No tasks are ready\n\treturn havePending;\n};\n\nfunction SaveTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"save\";\n}\n\nSaveTiddlerTask.prototype.run = function(callback) {\n\tvar self = this,\n\t\tchangeCount = this.syncer.wiki.getChangeCount(this.title),\n\t\ttiddler = this.syncer.wiki.tiddlerExists(this.title) && this.syncer.wiki.getTiddler(this.title);\n\tthis.syncer.logger.log(\"Dispatching 'save' task:\",this.title);\n\tif(tiddler) {\n\t\tthis.syncer.syncadaptor.saveTiddler(tiddler,function(err,adaptorInfo,revision) {\n\t\t\t// If there's an error, exit without changing any internal state\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\t// Adjust the info stored about this tiddler\n\t\t\tself.syncer.tiddlerInfo[self.title] = {\n\t\t\t\tchangeCount: changeCount,\n\t\t\t\tadaptorInfo: adaptorInfo,\n\t\t\t\trevision: revision,\n\t\t\t\ttimestampLastSaved: new Date()\n\t\t\t};\n\t\t\t// Invoke the callback\n\t\t\tcallback(null);\n\t\t});\n\t} else {\n\t\tthis.syncer.logger.log(\" Not Dispatching 'save' task:\",this.title,\"tiddler does not exist\");\n\t\t$tw.utils.nextTick(callback(null));\n\t}\n};\n\nfunction DeleteTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"delete\";\n}\n\nDeleteTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'delete' task:\",this.title);\n\tthis.syncer.syncadaptor.deleteTiddler(this.title,function(err) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Remove the info stored about this tiddler\n\t\tdelete self.syncer.tiddlerInfo[self.title];\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t},{\n\t\ttiddlerInfo: self.syncer.tiddlerInfo[this.title]\n\t});\n};\n\nfunction LoadTiddlerTask(syncer,title) {\n\tthis.syncer = syncer;\n\tthis.title = title;\n\tthis.type = \"load\";\n}\n\nLoadTiddlerTask.prototype.run = function(callback) {\n\tvar self = this;\n\tthis.syncer.logger.log(\"Dispatching 'load' task:\",this.title);\n\tthis.syncer.syncadaptor.loadTiddler(this.title,function(err,tiddlerFields) {\n\t\t// If there's an error, exit without changing any internal state\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\t// Update the info stored about this tiddler\n\t\tif(tiddlerFields) {\n\t\t\tself.syncer.storeTiddler(tiddlerFields);\n\t\t}\n\t\t// Invoke the callback\n\t\tcallback(null);\n\t});\n};\n\nexports.Syncer = Syncer;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/tiddler.js": {
            "title": "$:/core/modules/tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/tiddler.js\ntype: application/javascript\nmodule-type: tiddlermethod\n\nExtension methods for the $tw.Tiddler object (constructor and methods required at boot time are in boot/boot.js)\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.hasTag = function(tag) {\n\treturn this.fields.tags && this.fields.tags.indexOf(tag) !== -1;\n};\n\nexports.isPlugin = function() {\n\treturn this.fields.type === \"application/json\" && this.hasField(\"plugin-type\");\n};\n\nexports.isDraft = function() {\n\treturn this.hasField(\"draft.of\");\n};\n\nexports.getFieldString = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn \"\";\n\t}\n\t// Parse the field with the associated module (if any)\n\tvar fieldModule = $tw.Tiddler.fieldModules[field];\n\tif(fieldModule && fieldModule.stringify) {\n\t\treturn fieldModule.stringify.call(this,value);\n\t} else {\n\t\treturn value.toString();\n\t}\n};\n\n/*\nGet the value of a field as a list\n*/\nexports.getFieldList = function(field) {\n\tvar value = this.fields[field];\n\t// Check for a missing field\n\tif(value === undefined || value === null) {\n\t\treturn [];\n\t}\n\treturn $tw.utils.parseStringArray(value);\n};\n\n/*\nGet all the fields as a hashmap of strings. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStrings = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [];\n\tvar fields = {};\n\tfor(var field in this.fields) {\n\t\tif($tw.utils.hop(this.fields,field)) {\n\t\t\tif(exclude.indexOf(field) === -1) {\n\t\t\t\tfields[field] = this.getFieldString(field);\n\t\t\t}\n\t\t}\n\t}\n\treturn fields;\n};\n\n/*\nGet all the fields as a name:value block. Options:\n\texclude: an array of field names to exclude\n*/\nexports.getFieldStringBlock = function(options) {\n\toptions = options || {};\n\tvar exclude = options.exclude || [],\n\t\tfields = Object.keys(this.fields).sort(),\n\t\tresult = [];\n\tfor(var t=0; t<fields.length; t++) {\n\t\tvar field = fields[t];\n\t\tif(exclude.indexOf(field) === -1) {\n\t\t\tresult.push(field + \": \" + this.getFieldString(field));\n\t\t}\n\t}\n\treturn result.join(\"\\n\");\n};\n\nexports.getFieldDay = function(field) {\n\tif(this.cache && this.cache.day && $tw.utils.hop(this.cache.day,field) ) {\n\t\treturn this.cache.day[field];\n\t}\n\tvar day = \"\";\n\tif(this.fields[field]) {\n\t\tday = (new Date($tw.utils.parseDate(this.fields[field]))).setHours(0,0,0,0);\n\t}\n\tthis.cache.day = this.cache.day || {};\n\tthis.cache.day[field] = day;\n\treturn day;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "tiddlermethod"
        },
        "$:/core/modules/upgraders/plugins.js": {
            "title": "$:/core/modules/upgraders/plugins.js",
            "text": "/*\\\ntitle: $:/core/modules/upgraders/plugins.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that checks that plugins are newer than any already installed version\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar UPGRADE_LIBRARY_TITLE = \"$:/UpgradeLibrary\";\n\nvar BLOCKED_PLUGINS = {\n\t\"$:/themes/tiddlywiki/stickytitles\": {\n\t\tversions: [\"*\"]\n\t},\n\t\"$:/plugins/tiddlywiki/fullscreen\": {\n\t\tversions: [\"*\"]\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tupgradeLibrary,\n\t\tgetLibraryTiddler = function(title) {\n\t\t\tif(!upgradeLibrary) {\n\t\t\t\tupgradeLibrary = wiki.getTiddlerData(UPGRADE_LIBRARY_TITLE,{});\n\t\t\t\tupgradeLibrary.tiddlers = upgradeLibrary.tiddlers || {};\n\t\t\t}\n\t\t\treturn upgradeLibrary.tiddlers[title];\n\t\t};\n\n\t// Go through all the incoming tiddlers\n\t$tw.utils.each(titles,function(title) {\n\t\tvar incomingTiddler = tiddlers[title];\n\t\t// Check if we're dealing with a plugin\n\t\tif(incomingTiddler && incomingTiddler[\"plugin-type\"]) {\n\t\t\t// Check whether the plugin contains JS modules\n\t\t\tvar requiresReload = $tw.wiki.doesPluginInfoRequireReload(JSON.parse(incomingTiddler.text)) ? ($tw.wiki.getTiddlerText(\"$:/language/ControlPanel/Plugins/PluginWillRequireReload\") + \" \") : \"\";\n\t\t\tmessages[title] = requiresReload;\n\t\t\tif(incomingTiddler.version) {\n\t\t\t\t// Upgrade the incoming plugin if it is in the upgrade library\n\t\t\t\tvar libraryTiddler = getLibraryTiddler(title);\n\t\t\t\tif(libraryTiddler && libraryTiddler[\"plugin-type\"] && libraryTiddler.version) {\n\t\t\t\t\ttiddlers[title] = libraryTiddler;\n\t\t\t\t\tmessages[title] = requiresReload + $tw.language.getString(\"Import/Upgrader/Plugins/Upgraded\",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}});\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t\t// Suppress the incoming plugin if it is older than the currently installed one\n\t\t\t\tvar existingTiddler = wiki.getTiddler(title);\n\t\t\t\tif(existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t\t\t\t// Reject the incoming plugin by blanking all its fields\n\t\t\t\t\tif($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) {\n\t\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\t\tmessages[title] = requiresReload + $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Version\",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}});\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\t// Check whether the plugin is on the blocked list\n\t\t\tvar blockInfo = BLOCKED_PLUGINS[title];\n\t\t\tif(blockInfo) {\n\t\t\t\tif(blockInfo.versions.indexOf(\"*\") !== -1 || (incomingTiddler.version && blockInfo.versions.indexOf(incomingTiddler.version) !== -1)) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/Plugins/Suppressed/Incompatible\");\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/upgraders/system.js": {
            "title": "$:/core/modules/upgraders/system.js",
            "text": "/*\\\ntitle: $:/core/modules/upgraders/system.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that suppresses certain system tiddlers that shouldn't be imported\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar DONT_IMPORT_LIST = [\"$:/StoryList\",\"$:/HistoryList\"],\n\tDONT_IMPORT_PREFIX_LIST = [\"$:/temp/\",\"$:/state/\",\"$:/Import\"],\n\tWARN_IMPORT_PREFIX_LIST = [\"$:/core/modules/\"];\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {},\n\t\tshowAlert = false;\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tif(DONT_IMPORT_LIST.indexOf(title) !== -1) {\n\t\t\ttiddlers[title] = Object.create(null);\n\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Suppressed\");\n\t\t} else {\n\t\t\tfor(var t=0; t<DONT_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = DONT_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix) {\n\t\t\t\t\ttiddlers[title] = Object.create(null);\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/State/Suppressed\");\n\t\t\t\t}\n\t\t\t}\n\t\t\tfor(var t=0; t<WARN_IMPORT_PREFIX_LIST.length; t++) {\n\t\t\t\tvar prefix = WARN_IMPORT_PREFIX_LIST[t];\n\t\t\t\tif(title.substr(0,prefix.length) === prefix && wiki.isShadowTiddler(title)) {\n\t\t\t\t\tshowAlert = true;\n\t\t\t\t\tmessages[title] = $tw.language.getString(\"Import/Upgrader/System/Warning\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\tif(showAlert) {\n\t\tvar logger = new $tw.utils.Logger(\"import\");\n\t\tlogger.alert($tw.language.getString(\"Import/Upgrader/System/Alert\"));\n\t}\n\treturn messages;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/upgraders/themetweaks.js": {
            "title": "$:/core/modules/upgraders/themetweaks.js",
            "text": "/*\\\ntitle: $:/core/modules/upgraders/themetweaks.js\ntype: application/javascript\nmodule-type: upgrader\n\nUpgrader module that handles the change in theme tweak storage introduced in 5.0.14-beta.\n\nPreviously, theme tweaks were stored in two data tiddlers:\n\n* $:/themes/tiddlywiki/vanilla/metrics\n* $:/themes/tiddlywiki/vanilla/settings\n\nNow, each tweak is stored in its own separate tiddler.\n\nThis upgrader copies any values from the old format to the new. The old data tiddlers are not deleted in case they have been used to store additional indexes.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar MAPPINGS = {\n\t\"$:/themes/tiddlywiki/vanilla/metrics\": {\n\t\t\"fontsize\": \"$:/themes/tiddlywiki/vanilla/metrics/fontsize\",\n\t\t\"lineheight\": \"$:/themes/tiddlywiki/vanilla/metrics/lineheight\",\n\t\t\"storyleft\": \"$:/themes/tiddlywiki/vanilla/metrics/storyleft\",\n\t\t\"storytop\": \"$:/themes/tiddlywiki/vanilla/metrics/storytop\",\n\t\t\"storyright\": \"$:/themes/tiddlywiki/vanilla/metrics/storyright\",\n\t\t\"storywidth\": \"$:/themes/tiddlywiki/vanilla/metrics/storywidth\",\n\t\t\"tiddlerwidth\": \"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"\n\t},\n\t\"$:/themes/tiddlywiki/vanilla/settings\": {\n\t\t\"fontfamily\": \"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"\n\t}\n};\n\nexports.upgrade = function(wiki,titles,tiddlers) {\n\tvar self = this,\n\t\tmessages = {};\n\t// Check for tiddlers on our list\n\t$tw.utils.each(titles,function(title) {\n\t\tvar mapping = MAPPINGS[title];\n\t\tif(mapping) {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlers[title]),\n\t\t\t\ttiddlerData = wiki.getTiddlerDataCached(tiddler,{});\n\t\t\tfor(var index in mapping) {\n\t\t\t\tvar mappedTitle = mapping[index];\n\t\t\t\tif(!tiddlers[mappedTitle] || tiddlers[mappedTitle].title !== mappedTitle) {\n\t\t\t\t\ttiddlers[mappedTitle] = {\n\t\t\t\t\t\ttitle: mappedTitle,\n\t\t\t\t\t\ttext: tiddlerData[index]\n\t\t\t\t\t};\n\t\t\t\t\tmessages[mappedTitle] = $tw.language.getString(\"Import/Upgrader/ThemeTweaks/Created\",{variables: {\n\t\t\t\t\t\tfrom: title + \"##\" + index\n\t\t\t\t\t}});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t});\n\treturn messages;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "upgrader"
        },
        "$:/core/modules/utils/base64-utf8/base64-utf8.module.js": {
            "text": "(function(){// From https://gist.github.com/Nijikokun/5192472\n//\n// UTF8 Module\n//\n// Cleaner and modularized utf-8 encoding and decoding library for javascript.\n//\n// copyright: MIT\n// author: Nijiko Yonskai, @nijikokun, nijikokun@gmail.com\n!function(r,e,o,t){void 0!==o.module&&o.module.exports?o.module.exports=e.apply(o):void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"utf8\",[],e):o.utf8=e.apply(o)}(0,function(){return{encode:function(r){if(\"string\"!=typeof r)return r;r=r.replace(/\\r\\n/g,\"\\n\");for(var e,o=\"\",t=0;t<r.length;t++)(e=r.charCodeAt(t))<128?o+=String.fromCharCode(e):e>127&&e<2048?(o+=String.fromCharCode(e>>6|192),o+=String.fromCharCode(63&e|128)):(o+=String.fromCharCode(e>>12|224),o+=String.fromCharCode(e>>6&63|128),o+=String.fromCharCode(63&e|128));return o},decode:function(r){if(\"string\"!=typeof r)return r;for(var e=\"\",o=0,t=0;o<r.length;)(t=r.charCodeAt(o))<128?(e+=String.fromCharCode(t),o++):t>191&&t<224?(e+=String.fromCharCode((31&t)<<6|63&r.charCodeAt(o+1)),o+=2):(e+=String.fromCharCode((15&t)<<12|(63&r.charCodeAt(o+1))<<6|63&r.charCodeAt(o+2)),o+=3);return e}}},this),function(r,e,o,t){if(void 0!==o.module&&o.module.exports){if(t&&o.require)for(var n=0;n<t.length;n++)o[t[n]]=o.require(t[n]);o.module.exports=e.apply(o)}else void 0!==o.define&&\"function\"===o.define&&o.define.amd?define(\"base64\",t||[],e):o.base64=e.apply(o)}(0,function(r){var e=r||this.utf8,o=\"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";return{encode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=e.encode(r);for(var t,n,i,d,f,a,h,c=\"\",u=0;u<r.length;)d=(t=r.charCodeAt(u++))>>2,f=(3&t)<<4|(n=r.charCodeAt(u++))>>4,a=(15&n)<<2|(i=r.charCodeAt(u++))>>6,h=63&i,isNaN(n)?a=h=64:isNaN(i)&&(h=64),c+=o.charAt(d)+o.charAt(f)+o.charAt(a)+o.charAt(h);return c},decode:function(r){if(void 0===e)throw{error:\"MissingMethod\",message:\"UTF8 Module is missing.\"};if(\"string\"!=typeof r)return r;r=r.replace(/[^A-Za-z0-9\\+\\/\\=]/g,\"\");for(var t,n,i,d,f,a,h=\"\",c=0;c<r.length;)t=o.indexOf(r.charAt(c++))<<2|(d=o.indexOf(r.charAt(c++)))>>4,n=(15&d)<<4|(f=o.indexOf(r.charAt(c++)))>>2,i=(3&f)<<6|(a=o.indexOf(r.charAt(c++))),h+=String.fromCharCode(t),64!=f&&(h+=String.fromCharCode(n)),64!=a&&(h+=String.fromCharCode(i));return e.decode(h)}}},this,[\"utf8\"]);}).call(exports);",
            "type": "application/javascript",
            "title": "$:/core/modules/utils/base64-utf8/base64-utf8.module.js",
            "module-type": "library"
        },
        "$:/core/modules/utils/crypto.js": {
            "title": "$:/core/modules/utils/crypto.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/crypto.js\ntype: application/javascript\nmodule-type: utils\n\nUtility functions related to crypto.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nLook for an encrypted store area in the text of a TiddlyWiki file\n*/\nexports.extractEncryptedStoreArea = function(text) {\n\tvar encryptedStoreAreaStartMarker = \"<pre id=\\\"encryptedStoreArea\\\" type=\\\"text/plain\\\" style=\\\"display:none;\\\">\",\n\t\tencryptedStoreAreaStart = text.indexOf(encryptedStoreAreaStartMarker);\n\tif(encryptedStoreAreaStart !== -1) {\n\t\tvar encryptedStoreAreaEnd = text.indexOf(\"</pre>\",encryptedStoreAreaStart);\n\t\tif(encryptedStoreAreaEnd !== -1) {\n\t\t\treturn $tw.utils.htmlDecode(text.substring(encryptedStoreAreaStart + encryptedStoreAreaStartMarker.length,encryptedStoreAreaEnd-1));\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If the password is not provided then the password in the password store will be used\n*/\nexports.decryptStoreArea = function(encryptedStoreArea,password) {\n\tvar decryptedText = $tw.crypto.decrypt(encryptedStoreArea,password);\n\tif(decryptedText) {\n\t\tvar json = JSON.parse(decryptedText),\n\t\t\ttiddlers = [];\n\t\tfor(var title in json) {\n\t\t\tif(title !== \"$:/isEncrypted\") {\n\t\t\t\ttiddlers.push(json[title]);\n\t\t\t}\n\t\t}\n\t\treturn tiddlers;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n\n/*\nAttempt to extract the tiddlers from an encrypted store area using the current password. If that fails, the user is prompted for a password.\nencryptedStoreArea: text of the TiddlyWiki encrypted store area\ncallback: function(tiddlers) called with the array of decrypted tiddlers\n\nThe following configuration settings are supported:\n\n$tw.config.usePasswordVault: causes any password entered by the user to also be put into the system password vault\n*/\nexports.decryptStoreAreaInteractive = function(encryptedStoreArea,callback,options) {\n\t// Try to decrypt with the current password\n\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea);\n\tif(tiddlers) {\n\t\tcallback(tiddlers);\n\t} else {\n\t\t// Prompt for a new password and keep trying\n\t\t$tw.passwordPrompt.createPrompt({\n\t\t\tserviceName: \"Enter a password to decrypt the imported TiddlyWiki\",\n\t\t\tnoUserName: true,\n\t\t\tcanCancel: true,\n\t\t\tsubmitText: \"Decrypt\",\n\t\t\tcallback: function(data) {\n\t\t\t\t// Exit if the user cancelled\n\t\t\t\tif(!data) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t\t// Attempt to decrypt the tiddlers\n\t\t\t\tvar tiddlers = $tw.utils.decryptStoreArea(encryptedStoreArea,data.password);\n\t\t\t\tif(tiddlers) {\n\t\t\t\t\tif($tw.config.usePasswordVault) {\n\t\t\t\t\t\t$tw.crypto.setPassword(data.password);\n\t\t\t\t\t}\n\t\t\t\t\tcallback(tiddlers);\n\t\t\t\t\t// Exit and remove the password prompt\n\t\t\t\t\treturn true;\n\t\t\t\t} else {\n\t\t\t\t\t// We didn't decrypt everything, so continue to prompt for password\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/csv.js": {
            "title": "$:/core/modules/utils/csv.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/csv.js\ntype: application/javascript\nmodule-type: utils\n\nA barebones CSV parser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nParse a CSV string with a header row and return an array of hashmaps.\n*/\nexports.parseCsvStringWithHeader = function(text,options) {\n\toptions = options || {};\n\tvar separator = options.separator || \",\",\n\t\trows = text.split(/\\r?\\n/mg).map(function(row) {\n\t\t\treturn $tw.utils.trim(row);\n\t\t}).filter(function(row) {\n\t\t\treturn row !== \"\";\n\t\t});\n\tif(rows.length < 1) {\n\t\treturn \"Missing header row\";\n\t}\n\tvar headings = rows[0].split(separator),\n\t\tresults = [];\n\tfor(var row=1; row<rows.length; row++) {\n\t\tvar columns = rows[row].split(separator),\n\t\t\tcolumnResult = Object.create(null);\n\t\tif(columns.length !== headings.length) {\n\t\t\treturn \"Malformed CSV row '\" + rows[row] + \"'\";\n\t\t}\n\t\tfor(var column=0; column<columns.length; column++) {\n\t\t\tvar columnName = headings[column];\n\t\t\tcolumnResult[columnName] = $tw.utils.trim(columns[column] || \"\");\n\t\t}\n\t\tresults.push(columnResult);\t\t\t\n\t}\n\treturn results;\n}\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/diff-match-patch/diff_match_patch.js": {
            "text": "(function(){function diff_match_patch(){this.Diff_Timeout=1;this.Diff_EditCost=4;this.Match_Threshold=.5;this.Match_Distance=1E3;this.Patch_DeleteThreshold=.5;this.Patch_Margin=4;this.Match_MaxBits=32}var DIFF_DELETE=-1,DIFF_INSERT=1,DIFF_EQUAL=0;\ndiff_match_patch.prototype.diff_main=function(a,b,c,d){\"undefined\"==typeof d&&(d=0>=this.Diff_Timeout?Number.MAX_VALUE:(new Date).getTime()+1E3*this.Diff_Timeout);if(null==a||null==b)throw Error(\"Null input. (diff_main)\");if(a==b)return a?[[DIFF_EQUAL,a]]:[];\"undefined\"==typeof c&&(c=!0);var e=c,f=this.diff_commonPrefix(a,b);c=a.substring(0,f);a=a.substring(f);b=b.substring(f);f=this.diff_commonSuffix(a,b);var g=a.substring(a.length-f);a=a.substring(0,a.length-f);b=b.substring(0,b.length-f);a=this.diff_compute_(a,\nb,e,d);c&&a.unshift([DIFF_EQUAL,c]);g&&a.push([DIFF_EQUAL,g]);this.diff_cleanupMerge(a);return a};\ndiff_match_patch.prototype.diff_compute_=function(a,b,c,d){if(!a)return[[DIFF_INSERT,b]];if(!b)return[[DIFF_DELETE,a]];var e=a.length>b.length?a:b,f=a.length>b.length?b:a,g=e.indexOf(f);return-1!=g?(c=[[DIFF_INSERT,e.substring(0,g)],[DIFF_EQUAL,f],[DIFF_INSERT,e.substring(g+f.length)]],a.length>b.length&&(c[0][0]=c[2][0]=DIFF_DELETE),c):1==f.length?[[DIFF_DELETE,a],[DIFF_INSERT,b]]:(e=this.diff_halfMatch_(a,b))?(b=e[1],f=e[3],a=e[4],e=this.diff_main(e[0],e[2],c,d),c=this.diff_main(b,f,c,d),e.concat([[DIFF_EQUAL,\na]],c)):c&&100<a.length&&100<b.length?this.diff_lineMode_(a,b,d):this.diff_bisect_(a,b,d)};\ndiff_match_patch.prototype.diff_lineMode_=function(a,b,c){var d=this.diff_linesToChars_(a,b);a=d.chars1;b=d.chars2;d=d.lineArray;a=this.diff_main(a,b,!1,c);this.diff_charsToLines_(a,d);this.diff_cleanupSemantic(a);a.push([DIFF_EQUAL,\"\"]);for(var e=d=b=0,f=\"\",g=\"\";b<a.length;){switch(a[b][0]){case DIFF_INSERT:e++;g+=a[b][1];break;case DIFF_DELETE:d++;f+=a[b][1];break;case DIFF_EQUAL:if(1<=d&&1<=e){a.splice(b-d-e,d+e);b=b-d-e;d=this.diff_main(f,g,!1,c);for(e=d.length-1;0<=e;e--)a.splice(b,0,d[e]);b+=\nd.length}d=e=0;g=f=\"\"}b++}a.pop();return a};\ndiff_match_patch.prototype.diff_bisect_=function(a,b,c){for(var d=a.length,e=b.length,f=Math.ceil((d+e)/2),g=2*f,h=Array(g),l=Array(g),k=0;k<g;k++)h[k]=-1,l[k]=-1;h[f+1]=0;l[f+1]=0;k=d-e;for(var m=0!=k%2,p=0,x=0,w=0,q=0,t=0;t<f&&!((new Date).getTime()>c);t++){for(var v=-t+p;v<=t-x;v+=2){var n=f+v;var r=v==-t||v!=t&&h[n-1]<h[n+1]?h[n+1]:h[n-1]+1;for(var y=r-v;r<d&&y<e&&a.charAt(r)==b.charAt(y);)r++,y++;h[n]=r;if(r>d)x+=2;else if(y>e)p+=2;else if(m&&(n=f+k-v,0<=n&&n<g&&-1!=l[n])){var u=d-l[n];if(r>=\nu)return this.diff_bisectSplit_(a,b,r,y,c)}}for(v=-t+w;v<=t-q;v+=2){n=f+v;u=v==-t||v!=t&&l[n-1]<l[n+1]?l[n+1]:l[n-1]+1;for(r=u-v;u<d&&r<e&&a.charAt(d-u-1)==b.charAt(e-r-1);)u++,r++;l[n]=u;if(u>d)q+=2;else if(r>e)w+=2;else if(!m&&(n=f+k-v,0<=n&&n<g&&-1!=h[n]&&(r=h[n],y=f+r-n,u=d-u,r>=u)))return this.diff_bisectSplit_(a,b,r,y,c)}}return[[DIFF_DELETE,a],[DIFF_INSERT,b]]};\ndiff_match_patch.prototype.diff_bisectSplit_=function(a,b,c,d,e){var f=a.substring(0,c),g=b.substring(0,d);a=a.substring(c);b=b.substring(d);f=this.diff_main(f,g,!1,e);e=this.diff_main(a,b,!1,e);return f.concat(e)};\ndiff_match_patch.prototype.diff_linesToChars_=function(a,b){function c(a){for(var b=\"\",c=0,f=-1,g=d.length;f<a.length-1;){f=a.indexOf(\"\\n\",c);-1==f&&(f=a.length-1);var h=a.substring(c,f+1);c=f+1;(e.hasOwnProperty?e.hasOwnProperty(h):void 0!==e[h])?b+=String.fromCharCode(e[h]):(b+=String.fromCharCode(g),e[h]=g,d[g++]=h)}return b}var d=[],e={};d[0]=\"\";var f=c(a),g=c(b);return{chars1:f,chars2:g,lineArray:d}};\ndiff_match_patch.prototype.diff_charsToLines_=function(a,b){for(var c=0;c<a.length;c++){for(var d=a[c][1],e=[],f=0;f<d.length;f++)e[f]=b[d.charCodeAt(f)];a[c][1]=e.join(\"\")}};diff_match_patch.prototype.diff_commonPrefix=function(a,b){if(!a||!b||a.charAt(0)!=b.charAt(0))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(f,e)==b.substring(f,e)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonSuffix=function(a,b){if(!a||!b||a.charAt(a.length-1)!=b.charAt(b.length-1))return 0;for(var c=0,d=Math.min(a.length,b.length),e=d,f=0;c<e;)a.substring(a.length-e,a.length-f)==b.substring(b.length-e,b.length-f)?f=c=e:d=e,e=Math.floor((d-c)/2+c);return e};\ndiff_match_patch.prototype.diff_commonOverlap_=function(a,b){var c=a.length,d=b.length;if(0==c||0==d)return 0;c>d?a=a.substring(c-d):c<d&&(b=b.substring(0,c));c=Math.min(c,d);if(a==b)return c;d=0;for(var e=1;;){var f=a.substring(c-e);f=b.indexOf(f);if(-1==f)return d;e+=f;if(0==f||a.substring(c-e)==b.substring(0,e))d=e,e++}};\ndiff_match_patch.prototype.diff_halfMatch_=function(a,b){function c(a,b,c){for(var d=a.substring(c,c+Math.floor(a.length/4)),e=-1,g=\"\",h,k,l,m;-1!=(e=b.indexOf(d,e+1));){var p=f.diff_commonPrefix(a.substring(c),b.substring(e)),u=f.diff_commonSuffix(a.substring(0,c),b.substring(0,e));g.length<u+p&&(g=b.substring(e-u,e)+b.substring(e,e+p),h=a.substring(0,c-u),k=a.substring(c+p),l=b.substring(0,e-u),m=b.substring(e+p))}return 2*g.length>=a.length?[h,k,l,m,g]:null}if(0>=this.Diff_Timeout)return null;\nvar d=a.length>b.length?a:b,e=a.length>b.length?b:a;if(4>d.length||2*e.length<d.length)return null;var f=this,g=c(d,e,Math.ceil(d.length/4));d=c(d,e,Math.ceil(d.length/2));if(g||d)g=d?g?g[4].length>d[4].length?g:d:d:g;else return null;if(a.length>b.length){d=g[0];e=g[1];var h=g[2];var l=g[3]}else h=g[0],l=g[1],d=g[2],e=g[3];return[d,e,h,l,g[4]]};\ndiff_match_patch.prototype.diff_cleanupSemantic=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=0,h=0,l=0,k=0;f<a.length;)a[f][0]==DIFF_EQUAL?(c[d++]=f,g=l,h=k,k=l=0,e=a[f][1]):(a[f][0]==DIFF_INSERT?l+=a[f][1].length:k+=a[f][1].length,e&&e.length<=Math.max(g,h)&&e.length<=Math.max(l,k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,d--,f=0<d?c[d-1]:-1,k=l=h=g=0,e=null,b=!0)),f++;b&&this.diff_cleanupMerge(a);this.diff_cleanupSemanticLossless(a);for(f=1;f<a.length;){if(a[f-1][0]==\nDIFF_DELETE&&a[f][0]==DIFF_INSERT){b=a[f-1][1];c=a[f][1];d=this.diff_commonOverlap_(b,c);e=this.diff_commonOverlap_(c,b);if(d>=e){if(d>=b.length/2||d>=c.length/2)a.splice(f,0,[DIFF_EQUAL,c.substring(0,d)]),a[f-1][1]=b.substring(0,b.length-d),a[f+1][1]=c.substring(d),f++}else if(e>=b.length/2||e>=c.length/2)a.splice(f,0,[DIFF_EQUAL,b.substring(0,e)]),a[f-1][0]=DIFF_INSERT,a[f-1][1]=c.substring(0,c.length-e),a[f+1][0]=DIFF_DELETE,a[f+1][1]=b.substring(e),f++;f++}f++}};\ndiff_match_patch.prototype.diff_cleanupSemanticLossless=function(a){function b(a,b){if(!a||!b)return 6;var c=a.charAt(a.length-1),d=b.charAt(0),e=c.match(diff_match_patch.nonAlphaNumericRegex_),f=d.match(diff_match_patch.nonAlphaNumericRegex_),g=e&&c.match(diff_match_patch.whitespaceRegex_),h=f&&d.match(diff_match_patch.whitespaceRegex_);c=g&&c.match(diff_match_patch.linebreakRegex_);d=h&&d.match(diff_match_patch.linebreakRegex_);var k=c&&a.match(diff_match_patch.blanklineEndRegex_),l=d&&b.match(diff_match_patch.blanklineStartRegex_);\nreturn k||l?5:c||d?4:e&&!g&&h?3:g||h?2:e||f?1:0}for(var c=1;c<a.length-1;){if(a[c-1][0]==DIFF_EQUAL&&a[c+1][0]==DIFF_EQUAL){var d=a[c-1][1],e=a[c][1],f=a[c+1][1],g=this.diff_commonSuffix(d,e);if(g){var h=e.substring(e.length-g);d=d.substring(0,d.length-g);e=h+e.substring(0,e.length-g);f=h+f}g=d;h=e;for(var l=f,k=b(d,e)+b(e,f);e.charAt(0)===f.charAt(0);){d+=e.charAt(0);e=e.substring(1)+f.charAt(0);f=f.substring(1);var m=b(d,e)+b(e,f);m>=k&&(k=m,g=d,h=e,l=f)}a[c-1][1]!=g&&(g?a[c-1][1]=g:(a.splice(c-\n1,1),c--),a[c][1]=h,l?a[c+1][1]=l:(a.splice(c+1,1),c--))}c++}};diff_match_patch.nonAlphaNumericRegex_=/[^a-zA-Z0-9]/;diff_match_patch.whitespaceRegex_=/\\s/;diff_match_patch.linebreakRegex_=/[\\r\\n]/;diff_match_patch.blanklineEndRegex_=/\\n\\r?\\n$/;diff_match_patch.blanklineStartRegex_=/^\\r?\\n\\r?\\n/;\ndiff_match_patch.prototype.diff_cleanupEfficiency=function(a){for(var b=!1,c=[],d=0,e=null,f=0,g=!1,h=!1,l=!1,k=!1;f<a.length;)a[f][0]==DIFF_EQUAL?(a[f][1].length<this.Diff_EditCost&&(l||k)?(c[d++]=f,g=l,h=k,e=a[f][1]):(d=0,e=null),l=k=!1):(a[f][0]==DIFF_DELETE?k=!0:l=!0,e&&(g&&h&&l&&k||e.length<this.Diff_EditCost/2&&3==g+h+l+k)&&(a.splice(c[d-1],0,[DIFF_DELETE,e]),a[c[d-1]+1][0]=DIFF_INSERT,d--,e=null,g&&h?(l=k=!0,d=0):(d--,f=0<d?c[d-1]:-1,l=k=!1),b=!0)),f++;b&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_cleanupMerge=function(a){a.push([DIFF_EQUAL,\"\"]);for(var b=0,c=0,d=0,e=\"\",f=\"\",g;b<a.length;)switch(a[b][0]){case DIFF_INSERT:d++;f+=a[b][1];b++;break;case DIFF_DELETE:c++;e+=a[b][1];b++;break;case DIFF_EQUAL:1<c+d?(0!==c&&0!==d&&(g=this.diff_commonPrefix(f,e),0!==g&&(0<b-c-d&&a[b-c-d-1][0]==DIFF_EQUAL?a[b-c-d-1][1]+=f.substring(0,g):(a.splice(0,0,[DIFF_EQUAL,f.substring(0,g)]),b++),f=f.substring(g),e=e.substring(g)),g=this.diff_commonSuffix(f,e),0!==g&&(a[b][1]=f.substring(f.length-\ng)+a[b][1],f=f.substring(0,f.length-g),e=e.substring(0,e.length-g))),0===c?a.splice(b-d,c+d,[DIFF_INSERT,f]):0===d?a.splice(b-c,c+d,[DIFF_DELETE,e]):a.splice(b-c-d,c+d,[DIFF_DELETE,e],[DIFF_INSERT,f]),b=b-c-d+(c?1:0)+(d?1:0)+1):0!==b&&a[b-1][0]==DIFF_EQUAL?(a[b-1][1]+=a[b][1],a.splice(b,1)):b++,c=d=0,f=e=\"\"}\"\"===a[a.length-1][1]&&a.pop();c=!1;for(b=1;b<a.length-1;)a[b-1][0]==DIFF_EQUAL&&a[b+1][0]==DIFF_EQUAL&&(a[b][1].substring(a[b][1].length-a[b-1][1].length)==a[b-1][1]?(a[b][1]=a[b-1][1]+a[b][1].substring(0,\na[b][1].length-a[b-1][1].length),a[b+1][1]=a[b-1][1]+a[b+1][1],a.splice(b-1,1),c=!0):a[b][1].substring(0,a[b+1][1].length)==a[b+1][1]&&(a[b-1][1]+=a[b+1][1],a[b][1]=a[b][1].substring(a[b+1][1].length)+a[b+1][1],a.splice(b+1,1),c=!0)),b++;c&&this.diff_cleanupMerge(a)};\ndiff_match_patch.prototype.diff_xIndex=function(a,b){var c=0,d=0,e=0,f=0,g;for(g=0;g<a.length;g++){a[g][0]!==DIFF_INSERT&&(c+=a[g][1].length);a[g][0]!==DIFF_DELETE&&(d+=a[g][1].length);if(c>b)break;e=c;f=d}return a.length!=g&&a[g][0]===DIFF_DELETE?f:f+(b-e)};\ndiff_match_patch.prototype.diff_prettyHtml=function(a){for(var b=[],c=/&/g,d=/</g,e=/>/g,f=/\\n/g,g=0;g<a.length;g++){var h=a[g][0],l=a[g][1].replace(c,\"&amp;\").replace(d,\"&lt;\").replace(e,\"&gt;\").replace(f,\"&para;<br>\");switch(h){case DIFF_INSERT:b[g]='<ins style=\"background:#e6ffe6;\">'+l+\"</ins>\";break;case DIFF_DELETE:b[g]='<del style=\"background:#ffe6e6;\">'+l+\"</del>\";break;case DIFF_EQUAL:b[g]=\"<span>\"+l+\"</span>\"}}return b.join(\"\")};\ndiff_match_patch.prototype.diff_text1=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_INSERT&&(b[c]=a[c][1]);return b.join(\"\")};diff_match_patch.prototype.diff_text2=function(a){for(var b=[],c=0;c<a.length;c++)a[c][0]!==DIFF_DELETE&&(b[c]=a[c][1]);return b.join(\"\")};\ndiff_match_patch.prototype.diff_levenshtein=function(a){for(var b=0,c=0,d=0,e=0;e<a.length;e++){var f=a[e][1];switch(a[e][0]){case DIFF_INSERT:c+=f.length;break;case DIFF_DELETE:d+=f.length;break;case DIFF_EQUAL:b+=Math.max(c,d),d=c=0}}return b+=Math.max(c,d)};\ndiff_match_patch.prototype.diff_toDelta=function(a){for(var b=[],c=0;c<a.length;c++)switch(a[c][0]){case DIFF_INSERT:b[c]=\"+\"+encodeURI(a[c][1]);break;case DIFF_DELETE:b[c]=\"-\"+a[c][1].length;break;case DIFF_EQUAL:b[c]=\"=\"+a[c][1].length}return b.join(\"\\t\").replace(/%20/g,\" \")};\ndiff_match_patch.prototype.diff_fromDelta=function(a,b){for(var c=[],d=0,e=0,f=b.split(/\\t/g),g=0;g<f.length;g++){var h=f[g].substring(1);switch(f[g].charAt(0)){case \"+\":try{c[d++]=[DIFF_INSERT,decodeURI(h)]}catch(k){throw Error(\"Illegal escape in diff_fromDelta: \"+h);}break;case \"-\":case \"=\":var l=parseInt(h,10);if(isNaN(l)||0>l)throw Error(\"Invalid number in diff_fromDelta: \"+h);h=a.substring(e,e+=l);\"=\"==f[g].charAt(0)?c[d++]=[DIFF_EQUAL,h]:c[d++]=[DIFF_DELETE,h];break;default:if(f[g])throw Error(\"Invalid diff operation in diff_fromDelta: \"+\nf[g]);}}if(e!=a.length)throw Error(\"Delta length (\"+e+\") does not equal source text length (\"+a.length+\").\");return c};diff_match_patch.prototype.match_main=function(a,b,c){if(null==a||null==b||null==c)throw Error(\"Null input. (match_main)\");c=Math.max(0,Math.min(c,a.length));return a==b?0:a.length?a.substring(c,c+b.length)==b?c:this.match_bitap_(a,b,c):-1};\ndiff_match_patch.prototype.match_bitap_=function(a,b,c){function d(a,d){var e=a/b.length,g=Math.abs(c-d);return f.Match_Distance?e+g/f.Match_Distance:g?1:e}if(b.length>this.Match_MaxBits)throw Error(\"Pattern too long for this browser.\");var e=this.match_alphabet_(b),f=this,g=this.Match_Threshold,h=a.indexOf(b,c);-1!=h&&(g=Math.min(d(0,h),g),h=a.lastIndexOf(b,c+b.length),-1!=h&&(g=Math.min(d(0,h),g)));var l=1<<b.length-1;h=-1;for(var k,m,p=b.length+a.length,x,w=0;w<b.length;w++){k=0;for(m=p;k<m;)d(w,\nc+m)<=g?k=m:p=m,m=Math.floor((p-k)/2+k);p=m;k=Math.max(1,c-m+1);var q=Math.min(c+m,a.length)+b.length;m=Array(q+2);for(m[q+1]=(1<<w)-1;q>=k;q--){var t=e[a.charAt(q-1)];m[q]=0===w?(m[q+1]<<1|1)&t:(m[q+1]<<1|1)&t|(x[q+1]|x[q])<<1|1|x[q+1];if(m[q]&l&&(t=d(w,q-1),t<=g))if(g=t,h=q-1,h>c)k=Math.max(1,2*c-h);else break}if(d(w+1,c)>g)break;x=m}return h};\ndiff_match_patch.prototype.match_alphabet_=function(a){for(var b={},c=0;c<a.length;c++)b[a.charAt(c)]=0;for(c=0;c<a.length;c++)b[a.charAt(c)]|=1<<a.length-c-1;return b};\ndiff_match_patch.prototype.patch_addContext_=function(a,b){if(0!=b.length){for(var c=b.substring(a.start2,a.start2+a.length1),d=0;b.indexOf(c)!=b.lastIndexOf(c)&&c.length<this.Match_MaxBits-this.Patch_Margin-this.Patch_Margin;)d+=this.Patch_Margin,c=b.substring(a.start2-d,a.start2+a.length1+d);d+=this.Patch_Margin;(c=b.substring(a.start2-d,a.start2))&&a.diffs.unshift([DIFF_EQUAL,c]);(d=b.substring(a.start2+a.length1,a.start2+a.length1+d))&&a.diffs.push([DIFF_EQUAL,d]);a.start1-=c.length;a.start2-=\nc.length;a.length1+=c.length+d.length;a.length2+=c.length+d.length}};\ndiff_match_patch.prototype.patch_make=function(a,b,c){if(\"string\"==typeof a&&\"string\"==typeof b&&\"undefined\"==typeof c){var d=a;b=this.diff_main(d,b,!0);2<b.length&&(this.diff_cleanupSemantic(b),this.diff_cleanupEfficiency(b))}else if(a&&\"object\"==typeof a&&\"undefined\"==typeof b&&\"undefined\"==typeof c)b=a,d=this.diff_text1(b);else if(\"string\"==typeof a&&b&&\"object\"==typeof b&&\"undefined\"==typeof c)d=a;else if(\"string\"==typeof a&&\"string\"==typeof b&&c&&\"object\"==typeof c)d=a,b=c;else throw Error(\"Unknown call format to patch_make.\");\nif(0===b.length)return[];c=[];a=new diff_match_patch.patch_obj;for(var e=0,f=0,g=0,h=d,l=0;l<b.length;l++){var k=b[l][0],m=b[l][1];e||k===DIFF_EQUAL||(a.start1=f,a.start2=g);switch(k){case DIFF_INSERT:a.diffs[e++]=b[l];a.length2+=m.length;d=d.substring(0,g)+m+d.substring(g);break;case DIFF_DELETE:a.length1+=m.length;a.diffs[e++]=b[l];d=d.substring(0,g)+d.substring(g+m.length);break;case DIFF_EQUAL:m.length<=2*this.Patch_Margin&&e&&b.length!=l+1?(a.diffs[e++]=b[l],a.length1+=m.length,a.length2+=m.length):\nm.length>=2*this.Patch_Margin&&e&&(this.patch_addContext_(a,h),c.push(a),a=new diff_match_patch.patch_obj,e=0,h=d,f=g)}k!==DIFF_INSERT&&(f+=m.length);k!==DIFF_DELETE&&(g+=m.length)}e&&(this.patch_addContext_(a,h),c.push(a));return c};\ndiff_match_patch.prototype.patch_deepCopy=function(a){for(var b=[],c=0;c<a.length;c++){var d=a[c],e=new diff_match_patch.patch_obj;e.diffs=[];for(var f=0;f<d.diffs.length;f++)e.diffs[f]=d.diffs[f].slice();e.start1=d.start1;e.start2=d.start2;e.length1=d.length1;e.length2=d.length2;b[c]=e}return b};\ndiff_match_patch.prototype.patch_apply=function(a,b){if(0==a.length)return[b,[]];a=this.patch_deepCopy(a);var c=this.patch_addPadding(a);b=c+b+c;this.patch_splitMax(a);for(var d=0,e=[],f=0;f<a.length;f++){var g=a[f].start2+d,h=this.diff_text1(a[f].diffs),l=-1;if(h.length>this.Match_MaxBits){var k=this.match_main(b,h.substring(0,this.Match_MaxBits),g);-1!=k&&(l=this.match_main(b,h.substring(h.length-this.Match_MaxBits),g+h.length-this.Match_MaxBits),-1==l||k>=l)&&(k=-1)}else k=this.match_main(b,h,\ng);if(-1==k)e[f]=!1,d-=a[f].length2-a[f].length1;else if(e[f]=!0,d=k-g,g=-1==l?b.substring(k,k+h.length):b.substring(k,l+this.Match_MaxBits),h==g)b=b.substring(0,k)+this.diff_text2(a[f].diffs)+b.substring(k+h.length);else if(g=this.diff_main(h,g,!1),h.length>this.Match_MaxBits&&this.diff_levenshtein(g)/h.length>this.Patch_DeleteThreshold)e[f]=!1;else{this.diff_cleanupSemanticLossless(g);h=0;var m;for(l=0;l<a[f].diffs.length;l++){var p=a[f].diffs[l];p[0]!==DIFF_EQUAL&&(m=this.diff_xIndex(g,h));p[0]===\nDIFF_INSERT?b=b.substring(0,k+m)+p[1]+b.substring(k+m):p[0]===DIFF_DELETE&&(b=b.substring(0,k+m)+b.substring(k+this.diff_xIndex(g,h+p[1].length)));p[0]!==DIFF_DELETE&&(h+=p[1].length)}}}b=b.substring(c.length,b.length-c.length);return[b,e]};\ndiff_match_patch.prototype.patch_addPadding=function(a){for(var b=this.Patch_Margin,c=\"\",d=1;d<=b;d++)c+=String.fromCharCode(d);for(d=0;d<a.length;d++)a[d].start1+=b,a[d].start2+=b;d=a[0];var e=d.diffs;if(0==e.length||e[0][0]!=DIFF_EQUAL)e.unshift([DIFF_EQUAL,c]),d.start1-=b,d.start2-=b,d.length1+=b,d.length2+=b;else if(b>e[0][1].length){var f=b-e[0][1].length;e[0][1]=c.substring(e[0][1].length)+e[0][1];d.start1-=f;d.start2-=f;d.length1+=f;d.length2+=f}d=a[a.length-1];e=d.diffs;0==e.length||e[e.length-\n1][0]!=DIFF_EQUAL?(e.push([DIFF_EQUAL,c]),d.length1+=b,d.length2+=b):b>e[e.length-1][1].length&&(f=b-e[e.length-1][1].length,e[e.length-1][1]+=c.substring(0,f),d.length1+=f,d.length2+=f);return c};\ndiff_match_patch.prototype.patch_splitMax=function(a){for(var b=this.Match_MaxBits,c=0;c<a.length;c++)if(!(a[c].length1<=b)){var d=a[c];a.splice(c--,1);for(var e=d.start1,f=d.start2,g=\"\";0!==d.diffs.length;){var h=new diff_match_patch.patch_obj,l=!0;h.start1=e-g.length;h.start2=f-g.length;\"\"!==g&&(h.length1=h.length2=g.length,h.diffs.push([DIFF_EQUAL,g]));for(;0!==d.diffs.length&&h.length1<b-this.Patch_Margin;){g=d.diffs[0][0];var k=d.diffs[0][1];g===DIFF_INSERT?(h.length2+=k.length,f+=k.length,h.diffs.push(d.diffs.shift()),\nl=!1):g===DIFF_DELETE&&1==h.diffs.length&&h.diffs[0][0]==DIFF_EQUAL&&k.length>2*b?(h.length1+=k.length,e+=k.length,l=!1,h.diffs.push([g,k]),d.diffs.shift()):(k=k.substring(0,b-h.length1-this.Patch_Margin),h.length1+=k.length,e+=k.length,g===DIFF_EQUAL?(h.length2+=k.length,f+=k.length):l=!1,h.diffs.push([g,k]),k==d.diffs[0][1]?d.diffs.shift():d.diffs[0][1]=d.diffs[0][1].substring(k.length))}g=this.diff_text2(h.diffs);g=g.substring(g.length-this.Patch_Margin);k=this.diff_text1(d.diffs).substring(0,\nthis.Patch_Margin);\"\"!==k&&(h.length1+=k.length,h.length2+=k.length,0!==h.diffs.length&&h.diffs[h.diffs.length-1][0]===DIFF_EQUAL?h.diffs[h.diffs.length-1][1]+=k:h.diffs.push([DIFF_EQUAL,k]));l||a.splice(++c,0,h)}}};diff_match_patch.prototype.patch_toText=function(a){for(var b=[],c=0;c<a.length;c++)b[c]=a[c];return b.join(\"\")};\ndiff_match_patch.prototype.patch_fromText=function(a){var b=[];if(!a)return b;a=a.split(\"\\n\");for(var c=0,d=/^@@ -(\\d+),?(\\d*) \\+(\\d+),?(\\d*) @@$/;c<a.length;){var e=a[c].match(d);if(!e)throw Error(\"Invalid patch string: \"+a[c]);var f=new diff_match_patch.patch_obj;b.push(f);f.start1=parseInt(e[1],10);\"\"===e[2]?(f.start1--,f.length1=1):\"0\"==e[2]?f.length1=0:(f.start1--,f.length1=parseInt(e[2],10));f.start2=parseInt(e[3],10);\"\"===e[4]?(f.start2--,f.length2=1):\"0\"==e[4]?f.length2=0:(f.start2--,f.length2=\nparseInt(e[4],10));for(c++;c<a.length;){e=a[c].charAt(0);try{var g=decodeURI(a[c].substring(1))}catch(h){throw Error(\"Illegal escape in patch_fromText: \"+g);}if(\"-\"==e)f.diffs.push([DIFF_DELETE,g]);else if(\"+\"==e)f.diffs.push([DIFF_INSERT,g]);else if(\" \"==e)f.diffs.push([DIFF_EQUAL,g]);else if(\"@\"==e)break;else if(\"\"!==e)throw Error('Invalid patch mode \"'+e+'\" in: '+g);c++}}return b};diff_match_patch.patch_obj=function(){this.diffs=[];this.start2=this.start1=null;this.length2=this.length1=0};\ndiff_match_patch.patch_obj.prototype.toString=function(){for(var a=[\"@@ -\"+(0===this.length1?this.start1+\",0\":1==this.length1?this.start1+1:this.start1+1+\",\"+this.length1)+\" +\"+(0===this.length2?this.start2+\",0\":1==this.length2?this.start2+1:this.start2+1+\",\"+this.length2)+\" @@\\n\"],b,c=0;c<this.diffs.length;c++){switch(this.diffs[c][0]){case DIFF_INSERT:b=\"+\";break;case DIFF_DELETE:b=\"-\";break;case DIFF_EQUAL:b=\" \"}a[c+1]=b+encodeURI(this.diffs[c][1])+\"\\n\"}return a.join(\"\").replace(/%20/g,\" \")};\nthis.diff_match_patch=diff_match_patch;this.DIFF_DELETE=DIFF_DELETE;this.DIFF_INSERT=DIFF_INSERT;this.DIFF_EQUAL=DIFF_EQUAL;\n}).call(exports);",
            "type": "application/javascript",
            "title": "$:/core/modules/utils/diff-match-patch/diff_match_patch.js",
            "module-type": "library"
        },
        "$:/core/modules/utils/dom/animations/slide.js": {
            "title": "$:/core/modules/utils/dom/animations/slide.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/animations/slide.js\ntype: application/javascript\nmodule-type: animation\n\nA simple slide animation that varies the height of the element\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction slideOpen(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration();\n\t// Get the current height of the domNode\n\tvar computedStyle = window.getComputedStyle(domNode),\n\t\tcurrMarginBottom = parseInt(computedStyle.marginBottom,10),\n\t\tcurrMarginTop = parseInt(computedStyle.marginTop,10),\n\t\tcurrPaddingBottom = parseInt(computedStyle.paddingBottom,10),\n\t\tcurrPaddingTop = parseInt(computedStyle.paddingTop,10),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Reset the margin once the transition is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"none\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginBottom: currMarginBottom + \"px\"},\n\t\t{marginTop: currMarginTop + \"px\"},\n\t\t{paddingBottom: currPaddingBottom + \"px\"},\n\t\t{paddingTop: currPaddingTop + \"px\"},\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n}\n\nfunction slideClosed(domNode,options) {\n\toptions = options || {};\n\tvar duration = options.duration || $tw.utils.getAnimationDuration(),\n\t\tcurrHeight = domNode.offsetHeight;\n\t// Clear the properties we've set when the animation is over\n\tsetTimeout(function() {\n\t\t$tw.utils.setStyle(domNode,[\n\t\t\t{transition: \"none\"},\n\t\t\t{marginBottom: \"\"},\n\t\t\t{marginTop: \"\"},\n\t\t\t{paddingBottom: \"\"},\n\t\t\t{paddingTop: \"\"},\n\t\t\t{height: \"auto\"},\n\t\t\t{opacity: \"\"}\n\t\t]);\n\t\tif(options.callback) {\n\t\t\toptions.callback();\n\t\t}\n\t},duration);\n\t// Set up the initial position of the element\n\t$tw.utils.setStyle(domNode,[\n\t\t{height: currHeight + \"px\"},\n\t\t{opacity: \"1\"}\n\t]);\n\t$tw.utils.forceLayout(domNode);\n\t// Transition to the final position\n\t$tw.utils.setStyle(domNode,[\n\t\t{transition: \"margin-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"margin-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-top \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"padding-bottom \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"height \" + duration + \"ms ease-in-out, \" +\n\t\t\t\t\t\"opacity \" + duration + \"ms ease-in-out\"},\n\t\t{marginTop: \"0px\"},\n\t\t{marginBottom: \"0px\"},\n\t\t{paddingTop: \"0px\"},\n\t\t{paddingBottom: \"0px\"},\n\t\t{height: \"0px\"},\n\t\t{opacity: \"0\"}\n\t]);\n}\n\nexports.slide = {\n\topen: slideOpen,\n\tclose: slideClosed\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "animation"
        },
        "$:/core/modules/utils/dom/animator.js": {
            "title": "$:/core/modules/utils/dom/animator.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/animator.js\ntype: application/javascript\nmodule-type: utils\n\nOrchestrates animations and transitions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Animator() {\n\t// Get the registered animation modules\n\tthis.animations = {};\n\t$tw.modules.applyMethods(\"animation\",this.animations);\n}\n\nAnimator.prototype.perform = function(type,domNode,options) {\n\toptions = options || {};\n\t// Find an animation that can handle this type\n\tvar chosenAnimation;\n\t$tw.utils.each(this.animations,function(animation,name) {\n\t\tif($tw.utils.hop(animation,type)) {\n\t\t\tchosenAnimation = animation[type];\n\t\t}\n\t});\n\tif(!chosenAnimation) {\n\t\tchosenAnimation = function(domNode,options) {\n\t\t\tif(options.callback) {\n\t\t\t\toptions.callback();\n\t\t\t}\n\t\t};\n\t}\n\t// Call the animation\n\tchosenAnimation(domNode,options);\n};\n\nexports.Animator = Animator;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/browser.js": {
            "title": "$:/core/modules/utils/dom/browser.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/browser.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser feature detection\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nSet style properties of an element\n\telement: dom node\n\tstyles: ordered array of {name: value} pairs\n*/\nexports.setStyle = function(element,styles) {\n\tif(element.nodeType === 1) { // Element.ELEMENT_NODE\n\t\tfor(var t=0; t<styles.length; t++) {\n\t\t\tfor(var styleName in styles[t]) {\n\t\t\t\telement.style[$tw.utils.convertStyleNameToPropertyName(styleName)] = styles[t][styleName];\n\t\t\t}\n\t\t}\n\t}\n};\n\n/*\nConverts a standard CSS property name into the local browser-specific equivalent. For example:\n\t\"background-color\" --> \"backgroundColor\"\n\t\"transition\" --> \"webkitTransition\"\n*/\n\nvar styleNameCache = {}; // We'll cache the style name conversions\n\nexports.convertStyleNameToPropertyName = function(styleName) {\n\t// Return from the cache if we can\n\tif(styleNameCache[styleName]) {\n\t\treturn styleNameCache[styleName];\n\t}\n\t// Convert it by first removing any hyphens\n\tvar propertyName = $tw.utils.unHyphenateCss(styleName);\n\t// Then check if it needs a prefix\n\tif($tw.browser && document.body.style[propertyName] === undefined) {\n\t\tvar prefixes = [\"O\",\"MS\",\"Moz\",\"webkit\"];\n\t\tfor(var t=0; t<prefixes.length; t++) {\n\t\t\tvar prefixedName = prefixes[t] + propertyName.substr(0,1).toUpperCase() + propertyName.substr(1);\n\t\t\tif(document.body.style[prefixedName] !== undefined) {\n\t\t\t\tpropertyName = prefixedName;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\t// Put it in the cache too\n\tstyleNameCache[styleName] = propertyName;\n\treturn propertyName;\n};\n\n/*\nConverts a JS format CSS property name back into the dashed form used in CSS declarations. For example:\n\t\"backgroundColor\" --> \"background-color\"\n\t\"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.convertPropertyNameToStyleName = function(propertyName) {\n\t// Rehyphenate the name\n\tvar styleName = $tw.utils.hyphenateCss(propertyName);\n\t// If there's a webkit prefix, add a dash (other browsers have uppercase prefixes, and so get the dash automatically)\n\tif(styleName.indexOf(\"webkit\") === 0) {\n\t\tstyleName = \"-\" + styleName;\n\t} else if(styleName.indexOf(\"-m-s\") === 0) {\n\t\tstyleName = \"-ms\" + styleName.substr(4);\n\t}\n\treturn styleName;\n};\n\n/*\nRound trip a stylename to a property name and back again. For example:\n\t\"transform\" --> \"webkitTransform\" --> \"-webkit-transform\"\n*/\nexports.roundTripPropertyName = function(propertyName) {\n\treturn $tw.utils.convertPropertyNameToStyleName($tw.utils.convertStyleNameToPropertyName(propertyName));\n};\n\n/*\nConverts a standard event name into the local browser specific equivalent. For example:\n\t\"animationEnd\" --> \"webkitAnimationEnd\"\n*/\n\nvar eventNameCache = {}; // We'll cache the conversions\n\nvar eventNameMappings = {\n\t\"transitionEnd\": {\n\t\tcorrespondingCssProperty: \"transition\",\n\t\tmappings: {\n\t\t\ttransition: \"transitionend\",\n\t\t\tOTransition: \"oTransitionEnd\",\n\t\t\tMSTransition: \"msTransitionEnd\",\n\t\t\tMozTransition: \"transitionend\",\n\t\t\twebkitTransition: \"webkitTransitionEnd\"\n\t\t}\n\t},\n\t\"animationEnd\": {\n\t\tcorrespondingCssProperty: \"animation\",\n\t\tmappings: {\n\t\t\tanimation: \"animationend\",\n\t\t\tOAnimation: \"oAnimationEnd\",\n\t\t\tMSAnimation: \"msAnimationEnd\",\n\t\t\tMozAnimation: \"animationend\",\n\t\t\twebkitAnimation: \"webkitAnimationEnd\"\n\t\t}\n\t}\n};\n\nexports.convertEventName = function(eventName) {\n\tif(eventNameCache[eventName]) {\n\t\treturn eventNameCache[eventName];\n\t}\n\tvar newEventName = eventName,\n\t\tmappings = eventNameMappings[eventName];\n\tif(mappings) {\n\t\tvar convertedProperty = $tw.utils.convertStyleNameToPropertyName(mappings.correspondingCssProperty);\n\t\tif(mappings.mappings[convertedProperty]) {\n\t\t\tnewEventName = mappings.mappings[convertedProperty];\n\t\t}\n\t}\n\t// Put it in the cache too\n\teventNameCache[eventName] = newEventName;\n\treturn newEventName;\n};\n\n/*\nReturn the names of the fullscreen APIs\n*/\nexports.getFullScreenApis = function() {\n\tvar d = document,\n\t\tdb = d.body,\n\t\tresult = {\n\t\t\"_requestFullscreen\": db.webkitRequestFullscreen !== undefined ? \"webkitRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.mozRequestFullScreen !== undefined ? \"mozRequestFullScreen\" :\n\t\t\t\t\t\t\tdb.msRequestFullscreen !== undefined ? \"msRequestFullscreen\" :\n\t\t\t\t\t\t\tdb.requestFullscreen !== undefined ? \"requestFullscreen\" : \"\",\n\t\t\"_exitFullscreen\": d.webkitExitFullscreen !== undefined ? \"webkitExitFullscreen\" :\n\t\t\t\t\t\t\td.mozCancelFullScreen !== undefined ? \"mozCancelFullScreen\" :\n\t\t\t\t\t\t\td.msExitFullscreen !== undefined ? \"msExitFullscreen\" :\n\t\t\t\t\t\t\td.exitFullscreen !== undefined ? \"exitFullscreen\" : \"\",\n\t\t\"_fullscreenElement\": d.webkitFullscreenElement !== undefined ? \"webkitFullscreenElement\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozFullScreenElement\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"msFullscreenElement\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenElement\" : \"\",\n\t\t\"_fullscreenChange\": d.webkitFullscreenElement !== undefined ? \"webkitfullscreenchange\" :\n\t\t\t\t\t\t\td.mozFullScreenElement !== undefined ? \"mozfullscreenchange\" :\n\t\t\t\t\t\t\td.msFullscreenElement !== undefined ? \"MSFullscreenChange\" :\n\t\t\t\t\t\t\td.fullscreenElement !== undefined ? \"fullscreenchange\" : \"\"\n\t};\n\tif(!result._requestFullscreen || !result._exitFullscreen || !result._fullscreenElement || !result._fullscreenChange) {\n\t\treturn null;\n\t} else {\n\t\treturn result;\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/csscolorparser.js": {
            "title": "$:/core/modules/utils/dom/csscolorparser.js",
            "text": "// (c) Dean McNamee <dean@gmail.com>, 2012.\n//\n// https://github.com/deanm/css-color-parser-js\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the \"Software\"), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING\n// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS\n// IN THE SOFTWARE.\n\n// http://www.w3.org/TR/css3-color/\nvar kCSSColorTable = {\n  \"transparent\": [0,0,0,0], \"aliceblue\": [240,248,255,1],\n  \"antiquewhite\": [250,235,215,1], \"aqua\": [0,255,255,1],\n  \"aquamarine\": [127,255,212,1], \"azure\": [240,255,255,1],\n  \"beige\": [245,245,220,1], \"bisque\": [255,228,196,1],\n  \"black\": [0,0,0,1], \"blanchedalmond\": [255,235,205,1],\n  \"blue\": [0,0,255,1], \"blueviolet\": [138,43,226,1],\n  \"brown\": [165,42,42,1], \"burlywood\": [222,184,135,1],\n  \"cadetblue\": [95,158,160,1], \"chartreuse\": [127,255,0,1],\n  \"chocolate\": [210,105,30,1], \"coral\": [255,127,80,1],\n  \"cornflowerblue\": [100,149,237,1], \"cornsilk\": [255,248,220,1],\n  \"crimson\": [220,20,60,1], \"cyan\": [0,255,255,1],\n  \"darkblue\": [0,0,139,1], \"darkcyan\": [0,139,139,1],\n  \"darkgoldenrod\": [184,134,11,1], \"darkgray\": [169,169,169,1],\n  \"darkgreen\": [0,100,0,1], \"darkgrey\": [169,169,169,1],\n  \"darkkhaki\": [189,183,107,1], \"darkmagenta\": [139,0,139,1],\n  \"darkolivegreen\": [85,107,47,1], \"darkorange\": [255,140,0,1],\n  \"darkorchid\": [153,50,204,1], \"darkred\": [139,0,0,1],\n  \"darksalmon\": [233,150,122,1], \"darkseagreen\": [143,188,143,1],\n  \"darkslateblue\": [72,61,139,1], \"darkslategray\": [47,79,79,1],\n  \"darkslategrey\": [47,79,79,1], \"darkturquoise\": [0,206,209,1],\n  \"darkviolet\": [148,0,211,1], \"deeppink\": [255,20,147,1],\n  \"deepskyblue\": [0,191,255,1], \"dimgray\": [105,105,105,1],\n  \"dimgrey\": [105,105,105,1], \"dodgerblue\": [30,144,255,1],\n  \"firebrick\": [178,34,34,1], \"floralwhite\": [255,250,240,1],\n  \"forestgreen\": [34,139,34,1], \"fuchsia\": [255,0,255,1],\n  \"gainsboro\": [220,220,220,1], \"ghostwhite\": [248,248,255,1],\n  \"gold\": [255,215,0,1], \"goldenrod\": [218,165,32,1],\n  \"gray\": [128,128,128,1], \"green\": [0,128,0,1],\n  \"greenyellow\": [173,255,47,1], \"grey\": [128,128,128,1],\n  \"honeydew\": [240,255,240,1], \"hotpink\": [255,105,180,1],\n  \"indianred\": [205,92,92,1], \"indigo\": [75,0,130,1],\n  \"ivory\": [255,255,240,1], \"khaki\": [240,230,140,1],\n  \"lavender\": [230,230,250,1], \"lavenderblush\": [255,240,245,1],\n  \"lawngreen\": [124,252,0,1], \"lemonchiffon\": [255,250,205,1],\n  \"lightblue\": [173,216,230,1], \"lightcoral\": [240,128,128,1],\n  \"lightcyan\": [224,255,255,1], \"lightgoldenrodyellow\": [250,250,210,1],\n  \"lightgray\": [211,211,211,1], \"lightgreen\": [144,238,144,1],\n  \"lightgrey\": [211,211,211,1], \"lightpink\": [255,182,193,1],\n  \"lightsalmon\": [255,160,122,1], \"lightseagreen\": [32,178,170,1],\n  \"lightskyblue\": [135,206,250,1], \"lightslategray\": [119,136,153,1],\n  \"lightslategrey\": [119,136,153,1], \"lightsteelblue\": [176,196,222,1],\n  \"lightyellow\": [255,255,224,1], \"lime\": [0,255,0,1],\n  \"limegreen\": [50,205,50,1], \"linen\": [250,240,230,1],\n  \"magenta\": [255,0,255,1], \"maroon\": [128,0,0,1],\n  \"mediumaquamarine\": [102,205,170,1], \"mediumblue\": [0,0,205,1],\n  \"mediumorchid\": [186,85,211,1], \"mediumpurple\": [147,112,219,1],\n  \"mediumseagreen\": [60,179,113,1], \"mediumslateblue\": [123,104,238,1],\n  \"mediumspringgreen\": [0,250,154,1], \"mediumturquoise\": [72,209,204,1],\n  \"mediumvioletred\": [199,21,133,1], \"midnightblue\": [25,25,112,1],\n  \"mintcream\": [245,255,250,1], \"mistyrose\": [255,228,225,1],\n  \"moccasin\": [255,228,181,1], \"navajowhite\": [255,222,173,1],\n  \"navy\": [0,0,128,1], \"oldlace\": [253,245,230,1],\n  \"olive\": [128,128,0,1], \"olivedrab\": [107,142,35,1],\n  \"orange\": [255,165,0,1], \"orangered\": [255,69,0,1],\n  \"orchid\": [218,112,214,1], \"palegoldenrod\": [238,232,170,1],\n  \"palegreen\": [152,251,152,1], \"paleturquoise\": [175,238,238,1],\n  \"palevioletred\": [219,112,147,1], \"papayawhip\": [255,239,213,1],\n  \"peachpuff\": [255,218,185,1], \"peru\": [205,133,63,1],\n  \"pink\": [255,192,203,1], \"plum\": [221,160,221,1],\n  \"powderblue\": [176,224,230,1], \"purple\": [128,0,128,1],\n  \"red\": [255,0,0,1], \"rosybrown\": [188,143,143,1],\n  \"royalblue\": [65,105,225,1], \"saddlebrown\": [139,69,19,1],\n  \"salmon\": [250,128,114,1], \"sandybrown\": [244,164,96,1],\n  \"seagreen\": [46,139,87,1], \"seashell\": [255,245,238,1],\n  \"sienna\": [160,82,45,1], \"silver\": [192,192,192,1],\n  \"skyblue\": [135,206,235,1], \"slateblue\": [106,90,205,1],\n  \"slategray\": [112,128,144,1], \"slategrey\": [112,128,144,1],\n  \"snow\": [255,250,250,1], \"springgreen\": [0,255,127,1],\n  \"steelblue\": [70,130,180,1], \"tan\": [210,180,140,1],\n  \"teal\": [0,128,128,1], \"thistle\": [216,191,216,1],\n  \"tomato\": [255,99,71,1], \"turquoise\": [64,224,208,1],\n  \"violet\": [238,130,238,1], \"wheat\": [245,222,179,1],\n  \"white\": [255,255,255,1], \"whitesmoke\": [245,245,245,1],\n  \"yellow\": [255,255,0,1], \"yellowgreen\": [154,205,50,1]}\n\nfunction clamp_css_byte(i) {  // Clamp to integer 0 .. 255.\n  i = Math.round(i);  // Seems to be what Chrome does (vs truncation).\n  return i < 0 ? 0 : i > 255 ? 255 : i;\n}\n\nfunction clamp_css_float(f) {  // Clamp to float 0.0 .. 1.0.\n  return f < 0 ? 0 : f > 1 ? 1 : f;\n}\n\nfunction parse_css_int(str) {  // int or percentage.\n  if (str[str.length - 1] === '%')\n    return clamp_css_byte(parseFloat(str) / 100 * 255);\n  return clamp_css_byte(parseInt(str));\n}\n\nfunction parse_css_float(str) {  // float or percentage.\n  if (str[str.length - 1] === '%')\n    return clamp_css_float(parseFloat(str) / 100);\n  return clamp_css_float(parseFloat(str));\n}\n\nfunction css_hue_to_rgb(m1, m2, h) {\n  if (h < 0) h += 1;\n  else if (h > 1) h -= 1;\n\n  if (h * 6 < 1) return m1 + (m2 - m1) * h * 6;\n  if (h * 2 < 1) return m2;\n  if (h * 3 < 2) return m1 + (m2 - m1) * (2/3 - h) * 6;\n  return m1;\n}\n\nfunction parseCSSColor(css_str) {\n  // Remove all whitespace, not compliant, but should just be more accepting.\n  var str = css_str.replace(/ /g, '').toLowerCase();\n\n  // Color keywords (and transparent) lookup.\n  if (str in kCSSColorTable) return kCSSColorTable[str].slice();  // dup.\n\n  // #abc and #abc123 syntax.\n  if (str[0] === '#') {\n    if (str.length === 4) {\n      var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.\n      if (!(iv >= 0 && iv <= 0xfff)) return null;  // Covers NaN.\n      return [((iv & 0xf00) >> 4) | ((iv & 0xf00) >> 8),\n              (iv & 0xf0) | ((iv & 0xf0) >> 4),\n              (iv & 0xf) | ((iv & 0xf) << 4),\n              1];\n    } else if (str.length === 7) {\n      var iv = parseInt(str.substr(1), 16);  // TODO(deanm): Stricter parsing.\n      if (!(iv >= 0 && iv <= 0xffffff)) return null;  // Covers NaN.\n      return [(iv & 0xff0000) >> 16,\n              (iv & 0xff00) >> 8,\n              iv & 0xff,\n              1];\n    }\n\n    return null;\n  }\n\n  var op = str.indexOf('('), ep = str.indexOf(')');\n  if (op !== -1 && ep + 1 === str.length) {\n    var fname = str.substr(0, op);\n    var params = str.substr(op+1, ep-(op+1)).split(',');\n    var alpha = 1;  // To allow case fallthrough.\n    switch (fname) {\n      case 'rgba':\n        if (params.length !== 4) return null;\n        alpha = parse_css_float(params.pop());\n        // Fall through.\n      case 'rgb':\n        if (params.length !== 3) return null;\n        return [parse_css_int(params[0]),\n                parse_css_int(params[1]),\n                parse_css_int(params[2]),\n                alpha];\n      case 'hsla':\n        if (params.length !== 4) return null;\n        alpha = parse_css_float(params.pop());\n        // Fall through.\n      case 'hsl':\n        if (params.length !== 3) return null;\n        var h = (((parseFloat(params[0]) % 360) + 360) % 360) / 360;  // 0 .. 1\n        // NOTE(deanm): According to the CSS spec s/l should only be\n        // percentages, but we don't bother and let float or percentage.\n        var s = parse_css_float(params[1]);\n        var l = parse_css_float(params[2]);\n        var m2 = l <= 0.5 ? l * (s + 1) : l + s - l * s;\n        var m1 = l * 2 - m2;\n        return [clamp_css_byte(css_hue_to_rgb(m1, m2, h+1/3) * 255),\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h) * 255),\n                clamp_css_byte(css_hue_to_rgb(m1, m2, h-1/3) * 255),\n                alpha];\n      default:\n        return null;\n    }\n  }\n\n  return null;\n}\n\ntry { exports.parseCSSColor = parseCSSColor } catch(e) { }\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom.js": {
            "title": "$:/core/modules/utils/dom.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static DOM-related utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nDetermines whether element 'a' contains element 'b'\nCode thanks to John Resig, http://ejohn.org/blog/comparing-document-position/\n*/\nexports.domContains = function(a,b) {\n\treturn a.contains ?\n\t\ta !== b && a.contains(b) :\n\t\t!!(a.compareDocumentPosition(b) & 16);\n};\n\nexports.removeChildren = function(node) {\n\twhile(node.hasChildNodes()) {\n\t\tnode.removeChild(node.firstChild);\n\t}\n};\n\nexports.hasClass = function(el,className) {\n\treturn el && el.className && el.className.toString().split(\" \").indexOf(className) !== -1;\n};\n\nexports.addClass = function(el,className) {\n\tvar c = el.className.split(\" \");\n\tif(c.indexOf(className) === -1) {\n\t\tc.push(className);\n\t\tel.className = c.join(\" \");\n\t}\n};\n\nexports.removeClass = function(el,className) {\n\tvar c = el.className.split(\" \"),\n\t\tp = c.indexOf(className);\n\tif(p !== -1) {\n\t\tc.splice(p,1);\n\t\tel.className = c.join(\" \");\n\t}\n};\n\nexports.toggleClass = function(el,className,status) {\n\tif(status === undefined) {\n\t\tstatus = !exports.hasClass(el,className);\n\t}\n\tif(status) {\n\t\texports.addClass(el,className);\n\t} else {\n\t\texports.removeClass(el,className);\n\t}\n};\n\n/*\nGet the first parent element that has scrollbars or use the body as fallback.\n*/\nexports.getScrollContainer = function(el) {\n\tvar doc = el.ownerDocument;\n\twhile(el.parentNode) {\t\n\t\tel = el.parentNode;\n\t\tif(el.scrollTop) {\n\t\t\treturn el;\n\t\t}\n\t}\n\treturn doc.body;\n};\n\n/*\nGet the scroll position of the viewport\nReturns:\n\t{\n\t\tx: horizontal scroll position in pixels,\n\t\ty: vertical scroll position in pixels\n\t}\n*/\nexports.getScrollPosition = function(srcWindow) {\n\tvar scrollWindow = srcWindow || window;\n\tif(\"scrollX\" in scrollWindow) {\n\t\treturn {x: scrollWindow.scrollX, y: scrollWindow.scrollY};\n\t} else {\n\t\treturn {x: scrollWindow.document.documentElement.scrollLeft, y: scrollWindow.document.documentElement.scrollTop};\n\t}\n};\n\n/*\nAdjust the height of a textarea to fit its content, preserving scroll position, and return the height\n*/\nexports.resizeTextAreaToFit = function(domNode,minHeight) {\n\t// Get the scroll container and register the current scroll position\n\tvar container = $tw.utils.getScrollContainer(domNode),\n\t\tscrollTop = container.scrollTop;\n    // Measure the specified minimum height\n\tdomNode.style.height = minHeight;\n\tvar measuredHeight = domNode.offsetHeight || parseInt(minHeight,10);\n\t// Set its height to auto so that it snaps to the correct height\n\tdomNode.style.height = \"auto\";\n\t// Calculate the revised height\n\tvar newHeight = Math.max(domNode.scrollHeight + domNode.offsetHeight - domNode.clientHeight,measuredHeight);\n\t// Only try to change the height if it has changed\n\tif(newHeight !== domNode.offsetHeight) {\n\t\tdomNode.style.height = newHeight + \"px\";\n\t\t// Make sure that the dimensions of the textarea are recalculated\n\t\t$tw.utils.forceLayout(domNode);\n\t\t// Set the container to the position we registered at the beginning\n\t\tcontainer.scrollTop = scrollTop;\n\t}\n\treturn newHeight;\n};\n\n/*\nGets the bounding rectangle of an element in absolute page coordinates\n*/\nexports.getBoundingPageRect = function(element) {\n\tvar scrollPos = $tw.utils.getScrollPosition(element.ownerDocument.defaultView),\n\t\tclientRect = element.getBoundingClientRect();\n\treturn {\n\t\tleft: clientRect.left + scrollPos.x,\n\t\twidth: clientRect.width,\n\t\tright: clientRect.right + scrollPos.x,\n\t\ttop: clientRect.top + scrollPos.y,\n\t\theight: clientRect.height,\n\t\tbottom: clientRect.bottom + scrollPos.y\n\t};\n};\n\n/*\nSaves a named password in the browser\n*/\nexports.savePassword = function(name,password) {\n\tvar done = false;\n\ttry {\n\t\twindow.localStorage.setItem(\"tw5-password-\" + name,password);\n\t\tdone = true;\n\t} catch(e) {\n\t}\n\tif(!done) {\n\t\t$tw.savedPasswords = $tw.savedPasswords || Object.create(null);\n\t\t$tw.savedPasswords[name] = password;\n\t}\n};\n\n/*\nRetrieve a named password from the browser\n*/\nexports.getPassword = function(name) {\n\tvar value;\n\ttry {\n\t\tvalue = window.localStorage.getItem(\"tw5-password-\" + name);\n\t} catch(e) {\n\t}\n\tif(value !== undefined) {\n\t\treturn value;\n\t} else {\n\t\treturn ($tw.savedPasswords || Object.create(null))[name] || \"\";\n\t}\n};\n\n/*\nForce layout of a dom node and its descendents\n*/\nexports.forceLayout = function(element) {\n\tvar dummy = element.offsetWidth;\n};\n\n/*\nPulse an element for debugging purposes\n*/\nexports.pulseElement = function(element) {\n\t// Event handler to remove the class at the end\n\telement.addEventListener($tw.browser.animationEnd,function handler(event) {\n\t\telement.removeEventListener($tw.browser.animationEnd,handler,false);\n\t\t$tw.utils.removeClass(element,\"pulse\");\n\t},false);\n\t// Apply the pulse class\n\t$tw.utils.removeClass(element,\"pulse\");\n\t$tw.utils.forceLayout(element);\n\t$tw.utils.addClass(element,\"pulse\");\n};\n\n/*\nAttach specified event handlers to a DOM node\ndomNode: where to attach the event handlers\nevents: array of event handlers to be added (see below)\nEach entry in the events array is an object with these properties:\nhandlerFunction: optional event handler function\nhandlerObject: optional event handler object\nhandlerMethod: optionally specifies object handler method name (defaults to `handleEvent`)\n*/\nexports.addEventListeners = function(domNode,events) {\n\t$tw.utils.each(events,function(eventInfo) {\n\t\tvar handler;\n\t\tif(eventInfo.handlerFunction) {\n\t\t\thandler = eventInfo.handlerFunction;\n\t\t} else if(eventInfo.handlerObject) {\n\t\t\tif(eventInfo.handlerMethod) {\n\t\t\t\thandler = function(event) {\n\t\t\t\t\teventInfo.handlerObject[eventInfo.handlerMethod].call(eventInfo.handlerObject,event);\n\t\t\t\t};\t\n\t\t\t} else {\n\t\t\t\thandler = eventInfo.handlerObject;\n\t\t\t}\n\t\t}\n\t\tdomNode.addEventListener(eventInfo.name,handler,false);\n\t});\n};\n\n/*\nGet the computed styles applied to an element as an array of strings of individual CSS properties\n*/\nexports.getComputedStyles = function(domNode) {\n\tvar textAreaStyles = window.getComputedStyle(domNode,null),\n\t\tstyleDefs = [],\n\t\tname;\n\tfor(var t=0; t<textAreaStyles.length; t++) {\n\t\tname = textAreaStyles[t];\n\t\tstyleDefs.push(name + \": \" + textAreaStyles.getPropertyValue(name) + \";\");\n\t}\n\treturn styleDefs;\n};\n\n/*\nApply a set of styles passed as an array of strings of individual CSS properties\n*/\nexports.setStyles = function(domNode,styleDefs) {\n\tdomNode.style.cssText = styleDefs.join(\"\");\n};\n\n/*\nCopy the computed styles from a source element to a destination element\n*/\nexports.copyStyles = function(srcDomNode,dstDomNode) {\n\t$tw.utils.setStyles(dstDomNode,$tw.utils.getComputedStyles(srcDomNode));\n};\n\n/*\nCopy plain text to the clipboard on browsers that support it\n*/\nexports.copyToClipboard = function(text,options) {\n\toptions = options || {};\n\tvar textArea = document.createElement(\"textarea\");\n\ttextArea.style.position = \"fixed\";\n\ttextArea.style.top = 0;\n\ttextArea.style.left = 0;\n\ttextArea.style.fontSize = \"12pt\";\n\ttextArea.style.width = \"2em\";\n\ttextArea.style.height = \"2em\";\n\ttextArea.style.padding = 0;\n\ttextArea.style.border = \"none\";\n\ttextArea.style.outline = \"none\";\n\ttextArea.style.boxShadow = \"none\";\n\ttextArea.style.background = \"transparent\";\n\ttextArea.value = text;\n\tdocument.body.appendChild(textArea);\n\ttextArea.select();\n\ttextArea.setSelectionRange(0,text.length);\n\tvar succeeded = false;\n\ttry {\n\t\tsucceeded = document.execCommand(\"copy\");\n\t} catch (err) {\n\t}\n\tif(!options.doNotNotify) {\n\t\t$tw.notifier.display(succeeded ? \"$:/language/Notifications/CopiedToClipboard/Succeeded\" : \"$:/language/Notifications/CopiedToClipboard/Failed\");\n\t}\n\tdocument.body.removeChild(textArea);\n};\n\nexports.getLocationPath = function() {\n\treturn window.location.toString().split(\"#\")[0];\n};\n\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/dragndrop.js": {
            "title": "$:/core/modules/utils/dom/dragndrop.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/dragndrop.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser data transfer utilities, used with the clipboard and drag and drop\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nOptions:\n\ndomNode: dom node to make draggable\ndragImageType: \"pill\" or \"dom\"\ndragTiddlerFn: optional function to retrieve the title of tiddler to drag\ndragFilterFn: optional function to retreive the filter defining a list of tiddlers to drag\nwidget: widget to use as the contect for the filter\n*/\nexports.makeDraggable = function(options) {\n\tvar dragImageType = options.dragImageType || \"dom\",\n\t\tdragImage,\n\t\tdomNode = options.domNode;\n\t// Make the dom node draggable (not necessary for anchor tags)\n\tif((domNode.tagName || \"\").toLowerCase() !== \"a\") {\n\t\tdomNode.setAttribute(\"draggable\",\"true\");\t\t\n\t}\n\t// Add event handlers\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"dragstart\", handlerFunction: function(event) {\n\t\t\tif(event.dataTransfer === undefined) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\t// Collect the tiddlers being dragged\n\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t    \tstartActions = options.startActions;\n\t\t\tif(dragFilter) {\n\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t}\n\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t// Check that we've something to drag\n\t\t\tif(titles.length > 0 && event.target === domNode) {\n\t\t\t\t// Mark the drag in progress\n\t\t\t\t$tw.dragInProgress = domNode;\n\t\t\t\t// Set the dragging class on the element being dragged\n\t\t\t\t$tw.utils.addClass(event.target,\"tc-dragging\");\n\t\t\t\t// Invoke drag-start actions if given\n\t\t\t\tif(startActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(startActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Create the drag image elements\n\t\t\t\tdragImage = options.widget.document.createElement(\"div\");\n\t\t\t\tdragImage.className = \"tc-tiddler-dragger\";\n\t\t\t\tvar inner = options.widget.document.createElement(\"div\");\n\t\t\t\tinner.className = \"tc-tiddler-dragger-inner\";\n\t\t\t\tinner.appendChild(options.widget.document.createTextNode(\n\t\t\t\t\ttitles.length === 1 ? \n\t\t\t\t\t\ttitles[0] :\n\t\t\t\t\t\ttitles.length + \" tiddlers\"\n\t\t\t\t));\n\t\t\t\tdragImage.appendChild(inner);\n\t\t\t\toptions.widget.document.body.appendChild(dragImage);\n\t\t\t\t// Set the data transfer properties\n\t\t\t\tvar dataTransfer = event.dataTransfer;\n\t\t\t\t// Set up the image\n\t\t\t\tdataTransfer.effectAllowed = \"all\";\n\t\t\t\tif(dataTransfer.setDragImage) {\n\t\t\t\t\tif(dragImageType === \"pill\") {\n\t\t\t\t\t\tdataTransfer.setDragImage(dragImage.firstChild,-16,-16);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvar r = domNode.getBoundingClientRect();\n\t\t\t\t\t\tdataTransfer.setDragImage(domNode,event.clientX-r.left,event.clientY-r.top);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Set up the data transfer\n\t\t\t\tif(dataTransfer.clearData) {\n\t\t\t\t\tdataTransfer.clearData();\t\t\t\t\t\n\t\t\t\t}\n\t\t\t\tvar jsonData = [];\n\t\t\t\tif(titles.length > 1) {\n\t\t\t\t\ttitles.forEach(function(title) {\n\t\t\t\t\t\tjsonData.push(options.widget.wiki.getTiddlerAsJson(title));\n\t\t\t\t\t});\n\t\t\t\t\tjsonData = \"[\" + jsonData.join(\",\") + \"]\";\n\t\t\t\t} else {\n\t\t\t\t\tjsonData = options.widget.wiki.getTiddlerAsJson(titles[0]);\n\t\t\t\t}\n\t\t\t\t// IE doesn't like these content types\n\t\t\t\tif(!$tw.browser.isIE) {\n\t\t\t\t\tdataTransfer.setData(\"text/vnd.tiddler\",jsonData);\n\t\t\t\t\tdataTransfer.setData(\"text/plain\",titleString);\n\t\t\t\t\tdataTransfer.setData(\"text/x-moz-url\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\t}\n\t\t\t\tdataTransfer.setData(\"URL\",\"data:text/vnd.tiddler,\" + encodeURIComponent(jsonData));\n\t\t\t\tdataTransfer.setData(\"Text\",titleString);\n\t\t\t\tevent.stopPropagation();\n\t\t\t}\n\t\t\treturn false;\n\t\t}},\n\t\t{name: \"dragend\", handlerFunction: function(event) {\n\t\t\tif(event.target === domNode) {\n\t\t\t\t// Collect the tiddlers being dragged\n\t\t\t\tvar dragTiddler = options.dragTiddlerFn && options.dragTiddlerFn(),\n\t\t\t\t\tdragFilter = options.dragFilterFn && options.dragFilterFn(),\n\t\t\t\t\ttitles = dragTiddler ? [dragTiddler] : [],\n\t\t\t    \t\tendActions = options.endActions;\n\t\t\t\tif(dragFilter) {\n\t\t\t\t\ttitles.push.apply(titles,options.widget.wiki.filterTiddlers(dragFilter,options.widget));\n\t\t\t\t}\n\t\t\t\tvar titleString = $tw.utils.stringifyList(titles);\n\t\t\t\t$tw.dragInProgress = null;\n\t\t\t\t// Invoke drag-end actions if given\n\t\t\t\tif(endActions !== undefined) {\n\t\t\t\t\toptions.widget.invokeActionString(endActions,options.widget,event,{actionTiddler: titleString});\n\t\t\t\t}\n\t\t\t\t// Remove the dragging class on the element being dragged\n\t\t\t\t$tw.utils.removeClass(event.target,\"tc-dragging\");\n\t\t\t\t// Delete the drag image element\n\t\t\t\tif(dragImage) {\n\t\t\t\t\tdragImage.parentNode.removeChild(dragImage);\n\t\t\t\t\tdragImage = null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t}}\n\t]);\n};\n\nexports.importDataTransfer = function(dataTransfer,fallbackTitle,callback) {\n\t// Try each provided data type in turn\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Available data types:\");\n\t\tfor(var type=0; type<dataTransfer.types.length; type++) {\n\t\t\tconsole.log(\"type\",dataTransfer.types[type],dataTransfer.getData(dataTransfer.types[type]))\n\t\t}\n\t}\n\tfor(var t=0; t<importDataTypes.length; t++) {\n\t\tif(!$tw.browser.isIE || importDataTypes[t].IECompatible) {\n\t\t\t// Get the data\n\t\t\tvar dataType = importDataTypes[t];\n\t\t\t\tvar data = dataTransfer.getData(dataType.type);\n\t\t\t// Import the tiddlers in the data\n\t\t\tif(data !== \"\" && data !== null) {\n\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\tconsole.log(\"Importing data type '\" + dataType.type + \"', data: '\" + data + \"'\")\n\t\t\t\t}\n\t\t\t\tvar tiddlerFields = dataType.toTiddlerFieldsArray(data,fallbackTitle);\n\t\t\t\tcallback(tiddlerFields);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar importDataTypes = [\n\t{type: \"text/vnd.tiddler\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn parseJSONTiddlers(data,fallbackTitle);\n\t}},\n\t{type: \"URL\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/x-moz-url\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\t// Check for tiddler data URI\n\t\tvar match = decodeURIComponent(data).match(/^data\\:text\\/vnd\\.tiddler,(.*)/i);\n\t\tif(match) {\n\t\t\treturn parseJSONTiddlers(match[1],fallbackTitle);\n\t\t} else {\n\t\t\treturn [{title: fallbackTitle, text: data}]; // As URL string\n\t\t}\n\t}},\n\t{type: \"text/html\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/plain\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"Text\", IECompatible: true, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}},\n\t{type: \"text/uri-list\", IECompatible: false, toTiddlerFieldsArray: function(data,fallbackTitle) {\n\t\treturn [{title: fallbackTitle, text: data}];\n\t}}\n];\n\nfunction parseJSONTiddlers(json,fallbackTitle) {\n\tvar data = JSON.parse(json);\n\tif(!$tw.utils.isArray(data)) {\n\t\tdata = [data];\n\t}\n\tdata.forEach(function(fields) {\n\t\tfields.title = fields.title || fallbackTitle;\n\t});\n\treturn data;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/http.js": {
            "title": "$:/core/modules/utils/dom/http.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/http.js\ntype: application/javascript\nmodule-type: utils\n\nBrowser HTTP support\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nA quick and dirty HTTP function; to be refactored later. Options are:\n\turl: URL to retrieve\n\theaders: hashmap of headers to send\n\ttype: GET, PUT, POST etc\n\tcallback: function invoked with (err,data,xhr)\n\treturnProp: string name of the property to return as first argument of callback\n*/\nexports.httpRequest = function(options) {\n\tvar type = options.type || \"GET\",\n\t\turl = options.url,\n\t\theaders = options.headers || {accept: \"application/json\"},\n\t\treturnProp = options.returnProp || \"responseText\",\n\t\trequest = new XMLHttpRequest(),\n\t\tdata = \"\",\n\t\tf,results;\n\t// Massage the data hashmap into a string\n\tif(options.data) {\n\t\tif(typeof options.data === \"string\") { // Already a string\n\t\t\tdata = options.data;\n\t\t} else { // A hashmap of strings\n\t\t\tresults = [];\n\t\t\t$tw.utils.each(options.data,function(dataItem,dataItemTitle) {\n\t\t\t\tresults.push(dataItemTitle + \"=\" + encodeURIComponent(dataItem));\n\t\t\t});\n\t\t\tif(type === \"GET\" || type === \"HEAD\") {\n\t\t\t\turl += \"?\" + results.join(\"&\");\n\t\t\t} else {\n\t\t\t\tdata = results.join(\"&\");\n\t\t\t}\n\t\t}\n\t}\n\t// Set up the state change handler\n\trequest.onreadystatechange = function() {\n\t\tif(this.readyState === 4) {\n\t\t\tif(this.status === 200 || this.status === 201 || this.status === 204) {\n\t\t\t\t// Success!\n\t\t\t\toptions.callback(null,this[returnProp],this);\n\t\t\t\treturn;\n\t\t\t}\n\t\t// Something went wrong\n\t\toptions.callback($tw.language.getString(\"Error/XMLHttpRequest\") + \": \" + this.status,null,this);\n\t\t}\n\t};\n\t// Make the request\n\trequest.open(type,url,true);\n\tif(headers) {\n\t\t$tw.utils.each(headers,function(header,headerTitle,object) {\n\t\t\trequest.setRequestHeader(headerTitle,header);\n\t\t});\n\t}\n\tif(data && !$tw.utils.hop(headers,\"Content-type\")) {\n\t\trequest.setRequestHeader(\"Content-type\",\"application/x-www-form-urlencoded; charset=UTF-8\");\n\t}\n\tif(!$tw.utils.hop(headers,\"X-Requested-With\")) {\n\t\trequest.setRequestHeader(\"X-Requested-With\",\"TiddlyWiki\");\n\t}\n\ttry {\n\t\trequest.send(data);\n\t} catch(e) {\n\t\toptions.callback(e,null,this);\n\t}\n\treturn request;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/keyboard.js": {
            "title": "$:/core/modules/utils/dom/keyboard.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/keyboard.js\ntype: application/javascript\nmodule-type: utils\n\nKeyboard utilities; now deprecated. Instead, use $tw.keyboardManager\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n[\"parseKeyDescriptor\",\"checkKeyDescriptor\"].forEach(function(method) {\n\texports[method] = function() {\n\t\tif($tw.keyboardManager) {\n\t\t\treturn $tw.keyboardManager[method].apply($tw.keyboardManager,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\treturn null\n\t\t}\n\t};\n});\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/modal.js": {
            "title": "$:/core/modules/utils/dom/modal.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/modal.js\ntype: application/javascript\nmodule-type: utils\n\nModal message mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Modal = function(wiki) {\n\tthis.wiki = wiki;\n\tthis.modalCount = 0;\n};\n\n/*\nDisplay a modal dialogue\n\ttitle: Title of tiddler to display\n\toptions: see below\nOptions include:\n\tdownloadLink: Text of a big download link to include\n*/\nModal.prototype.display = function(title,options) {\n\toptions = options || {};\n\tthis.srcDocument = options.variables && (options.variables.rootwindow === \"true\" ||\n\t\t\t\toptions.variables.rootwindow === \"yes\") ? document :\n\t\t\t\t(options.event.event && options.event.event.target ? options.event.event.target.ownerDocument : document);\n\tthis.srcWindow = this.srcDocument.defaultView;\n\tvar self = this,\n\t\trefreshHandler,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\ttiddler = this.wiki.getTiddler(title);\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Create the wrapper divs\n\tvar wrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalBackdrop = this.srcDocument.createElement(\"div\"),\n\t\tmodalWrapper = this.srcDocument.createElement(\"div\"),\n\t\tmodalHeader = this.srcDocument.createElement(\"div\"),\n\t\theaderTitle = this.srcDocument.createElement(\"h3\"),\n\t\tmodalBody = this.srcDocument.createElement(\"div\"),\n\t\tmodalLink = this.srcDocument.createElement(\"a\"),\n\t\tmodalFooter = this.srcDocument.createElement(\"div\"),\n\t\tmodalFooterHelp = this.srcDocument.createElement(\"span\"),\n\t\tmodalFooterButtons = this.srcDocument.createElement(\"span\");\n\t// Up the modal count and adjust the body class\n\tthis.modalCount++;\n\tthis.adjustPageClass();\n\t// Add classes\n\t$tw.utils.addClass(wrapper,\"tc-modal-wrapper\");\n\tif(tiddler.fields && tiddler.fields.class) {\n\t\t$tw.utils.addClass(wrapper,tiddler.fields.class);\n\t}\n\t$tw.utils.addClass(modalBackdrop,\"tc-modal-backdrop\");\n\t$tw.utils.addClass(modalWrapper,\"tc-modal\");\n\t$tw.utils.addClass(modalHeader,\"tc-modal-header\");\n\t$tw.utils.addClass(modalBody,\"tc-modal-body\");\n\t$tw.utils.addClass(modalFooter,\"tc-modal-footer\");\n\t// Join them together\n\twrapper.appendChild(modalBackdrop);\n\twrapper.appendChild(modalWrapper);\n\tmodalHeader.appendChild(headerTitle);\n\tmodalWrapper.appendChild(modalHeader);\n\tmodalWrapper.appendChild(modalBody);\n\tmodalFooter.appendChild(modalFooterHelp);\n\tmodalFooter.appendChild(modalFooterButtons);\n\tmodalWrapper.appendChild(modalFooter);\n\t// Render the title of the message\n\tvar headerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"subtitle\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"text\",\n\t\t\tattributes: {\n\t\t\t\ttext: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title\n\t\t}}}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\theaderWidgetNode.render(headerTitle,null);\n\t// Render the body of the message\n\tvar bodyWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tbodyWidgetNode.render(modalBody,null);\n\t// Setup the link if present\n\tif(options.downloadLink) {\n\t\tmodalLink.href = options.downloadLink;\n\t\tmodalLink.appendChild(this.srcDocument.createTextNode(\"Right-click to save changes\"));\n\t\tmodalBody.appendChild(modalLink);\n\t}\n\t// Render the footer of the message\n\tif(tiddler.fields && tiddler.fields.help) {\n\t\tvar link = this.srcDocument.createElement(\"a\");\n\t\tlink.setAttribute(\"href\",tiddler.fields.help);\n\t\tlink.setAttribute(\"target\",\"_blank\");\n\t\tlink.setAttribute(\"rel\",\"noopener noreferrer\");\n\t\tlink.appendChild(this.srcDocument.createTextNode(\"Help\"));\n\t\tmodalFooterHelp.appendChild(link);\n\t\tmodalFooterHelp.style.float = \"left\";\n\t}\n\tvar footerWidgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tfield: \"footer\",\n\t\tmode: \"inline\",\n\t\tchildren: [{\n\t\t\ttype: \"button\",\n\t\t\tattributes: {\n\t\t\t\tmessage: {\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: \"tm-close-tiddler\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tchildren: [{\n\t\t\t\ttype: \"text\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttext: {\n\t\t\t\t\t\ttype: \"string\",\n\t\t\t\t\t\tvalue: $tw.language.getString(\"Buttons/Close/Caption\")\n\t\t\t}}}\n\t\t]}],\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: this.srcDocument,\n\t\tvariables: variables,\n\t\timportPageMacros: true\n\t});\n\tfooterWidgetNode.render(modalFooterButtons,null);\n\t// Set up the refresh handler\n\trefreshHandler = function(changes) {\n\t\theaderWidgetNode.refresh(changes,modalHeader,null);\n\t\tbodyWidgetNode.refresh(changes,modalBody,null);\n\t\tfooterWidgetNode.refresh(changes,modalFooterButtons,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Add the close event handler\n\tvar closeHandler = function(event) {\n\t\t// Remove our refresh handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Decrease the modal count and adjust the body class\n\t\tself.modalCount--;\n\t\tself.adjustPageClass();\n\t\t// Force layout and animate the modal message away\n\t\t$tw.utils.forceLayout(modalBackdrop);\n\t\t$tw.utils.forceLayout(modalWrapper);\n\t\t$tw.utils.setStyle(modalBackdrop,[\n\t\t\t{opacity: \"0\"}\n\t\t]);\n\t\t$tw.utils.setStyle(modalWrapper,[\n\t\t\t{transform: \"translateY(\" + self.srcWindow.innerHeight + \"px)\"}\n\t\t]);\n\t\t// Set up an event for the transition end\n\t\tself.srcWindow.setTimeout(function() {\n\t\t\tif(wrapper.parentNode) {\n\t\t\t\t// Remove the modal message from the DOM\n\t\t\t\tself.srcDocument.body.removeChild(wrapper);\n\t\t\t}\n\t\t},duration);\n\t\t// Don't let anyone else handle the tm-close-tiddler message\n\t\treturn false;\n\t};\n\theaderWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tbodyWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\tfooterWidgetNode.addEventListener(\"tm-close-tiddler\",closeHandler,false);\n\t// Set the initial styles for the message\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-this.srcWindow.innerHeight) + \"px)\"}\n\t]);\n\t// Put the message into the document\n\tthis.srcDocument.body.appendChild(wrapper);\n\t// Set up animation for the styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{transition: \"opacity \" + duration + \"ms ease-out\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transition: $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Force layout\n\t$tw.utils.forceLayout(modalBackdrop);\n\t$tw.utils.forceLayout(modalWrapper);\n\t// Set final animated styles\n\t$tw.utils.setStyle(modalBackdrop,[\n\t\t{opacity: \"0.7\"}\n\t]);\n\t$tw.utils.setStyle(modalWrapper,[\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n};\n\nModal.prototype.adjustPageClass = function() {\n\tvar windowContainer = $tw.pageContainer ? ($tw.pageContainer === this.srcDocument.body.firstChild ? $tw.pageContainer : this.srcDocument.body.firstChild) : null;\n\tif(windowContainer) {\n\t\t$tw.utils.toggleClass(windowContainer,\"tc-modal-displayed\",this.modalCount > 0);\n\t}\n};\n\nexports.Modal = Modal;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/notifier.js": {
            "title": "$:/core/modules/utils/dom/notifier.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/notifier.js\ntype: application/javascript\nmodule-type: utils\n\nNotifier mechanism\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar Notifier = function(wiki) {\n\tthis.wiki = wiki;\n};\n\n/*\nDisplay a notification\n\ttitle: Title of tiddler containing the notification text\n\toptions: see below\nOptions include:\n*/\nNotifier.prototype.display = function(title,options) {\n\toptions = options || {};\n\t// Create the wrapper divs\n\tvar self = this,\n\t\tnotification = document.createElement(\"div\"),\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t\trefreshHandler;\n\t// Don't do anything if the tiddler doesn't exist\n\tif(!tiddler) {\n\t\treturn;\n\t}\n\t// Add classes\n\t$tw.utils.addClass(notification,\"tc-notification\");\n\t// Create the variables\n\tvar variables = $tw.utils.extend({currentTiddler: title},options.variables);\n\t// Render the body of the notification\n\tvar widgetNode = this.wiki.makeTranscludeWidget(title,{\n\t\tparentWidget: $tw.rootWidget,\n\t\tdocument: document,\n\t\tvariables: variables,\n\t\timportPageMacros: true});\n\twidgetNode.render(notification,null);\n\trefreshHandler = function(changes) {\n\t\twidgetNode.refresh(changes,notification,null);\n\t};\n\tthis.wiki.addEventListener(\"change\",refreshHandler);\n\t// Set the initial styles for the notification\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"0\"},\n\t\t{transformOrigin: \"0% 0%\"},\n\t\t{transform: \"translateY(\" + (-window.innerHeight) + \"px)\"},\n\t\t{transition: \"opacity \" + duration + \"ms ease-out, \" + $tw.utils.roundTripPropertyName(\"transform\") + \" \" + duration + \"ms ease-in-out\"}\n\t]);\n\t// Add the notification to the DOM\n\tdocument.body.appendChild(notification);\n\t// Force layout\n\t$tw.utils.forceLayout(notification);\n\t// Set final animated styles\n\t$tw.utils.setStyle(notification,[\n\t\t{opacity: \"1.0\"},\n\t\t{transform: \"translateY(0px)\"}\n\t]);\n\t// Set a timer to remove the notification\n\twindow.setTimeout(function() {\n\t\t// Remove our change event handler\n\t\tself.wiki.removeEventListener(\"change\",refreshHandler);\n\t\t// Force layout and animate the notification away\n\t\t$tw.utils.forceLayout(notification);\n\t\t$tw.utils.setStyle(notification,[\n\t\t\t{opacity: \"0.0\"},\n\t\t\t{transform: \"translateX(\" + (notification.offsetWidth) + \"px)\"}\n\t\t]);\n\t\t// Remove the modal message from the DOM once the transition ends\n\t\tsetTimeout(function() {\n\t\t\tif(notification.parentNode) {\n\t\t\t\tdocument.body.removeChild(notification);\n\t\t\t}\n\t\t},duration);\n\t},$tw.config.preferences.notificationDuration);\n};\n\nexports.Notifier = Notifier;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/popup.js": {
            "title": "$:/core/modules/utils/dom/popup.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/popup.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Popup object prototype that manages popups in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreates a Popup object with these options:\n\trootElement: the DOM element to which the popup zapper should be attached\n*/\nvar Popup = function(options) {\n\toptions = options || {};\n\tthis.rootElement = options.rootElement || document.documentElement;\n\tthis.popups = []; // Array of {title:,wiki:,domNode:} objects\n};\n\n/*\nTrigger a popup open or closed. Parameters are in a hashmap:\n\ttitle: title of the tiddler where the popup details are stored\n\tdomNode: dom node to which the popup will be positioned (one of domNode or domNodeRect is required)\n\tdomNodeRect: rectangle to which the popup will be positioned\n\twiki: wiki\n\tforce: if specified, forces the popup state to true or false (instead of toggling it)\n\tfloating: if true, skips registering the popup, meaning that it will need manually clearing\n*/\nPopup.prototype.triggerPopup = function(options) {\n\t// Check if this popup is already active\n\tvar index = this.findPopup(options.title);\n\t// Compute the new state\n\tvar state = index === -1;\n\tif(options.force !== undefined) {\n\t\tstate = options.force;\n\t}\n\t// Show or cancel the popup according to the new state\n\tif(state) {\n\t\tthis.show(options);\n\t} else {\n\t\tthis.cancel(index);\n\t}\n};\n\nPopup.prototype.findPopup = function(title) {\n\tvar index = -1;\n\tfor(var t=0; t<this.popups.length; t++) {\n\t\tif(this.popups[t].title === title) {\n\t\t\tindex = t;\n\t\t}\n\t}\n\treturn index;\n};\n\nPopup.prototype.handleEvent = function(event) {\n\tif(event.type === \"click\") {\n\t\t// Find out what was clicked on\n\t\tvar info = this.popupInfo(event.target),\n\t\t\tcancelLevel = info.popupLevel - 1;\n\t\t// Don't remove the level that was clicked on if we clicked on a handle\n\t\tif(info.isHandle) {\n\t\t\tcancelLevel++;\n\t\t}\n\t\t// Cancel\n\t\tthis.cancel(cancelLevel);\n\t}\n};\n\n/*\nFind the popup level containing a DOM node. Returns:\npopupLevel: count of the number of nested popups containing the specified element\nisHandle: true if the specified element is within a popup handle\n*/\nPopup.prototype.popupInfo = function(domNode) {\n\tvar isHandle = false,\n\t\tpopupCount = 0,\n\t\tnode = domNode;\n\t// First check ancestors to see if we're within a popup handle\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup-handle\")) {\n\t\t\tisHandle = true;\n\t\t\tpopupCount++;\n\t\t}\n\t\tif($tw.utils.hasClass(node,\"tc-popup-keep\")) {\n\t\t\tisHandle = true;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\t// Then count the number of ancestor popups\n\tnode = domNode;\n\twhile(node) {\n\t\tif($tw.utils.hasClass(node,\"tc-popup\")) {\n\t\t\tpopupCount++;\n\t\t}\n\t\tnode = node.parentNode;\n\t}\n\tvar info = {\n\t\tpopupLevel: popupCount,\n\t\tisHandle: isHandle\n\t};\n\treturn info;\n};\n\n/*\nDisplay a popup by adding it to the stack\n*/\nPopup.prototype.show = function(options) {\n\t// Find out what was clicked on\n\tvar info = this.popupInfo(options.domNode);\n\t// Cancel any higher level popups\n\tthis.cancel(info.popupLevel);\n\n\t// Store the popup details if not already there\n\tif(!options.floating && this.findPopup(options.title) === -1) {\n\t\tthis.popups.push({\n\t\t\ttitle: options.title,\n\t\t\twiki: options.wiki,\n\t\t\tdomNode: options.domNode,\n\t\t\tnoStateReference: options.noStateReference\n\t\t});\n\t}\n\t// Set the state tiddler\n\tvar rect;\n\tif(options.domNodeRect) {\n\t\trect = options.domNodeRect;\n\t} else {\n\t\trect = {\n\t\t\tleft: options.domNode.offsetLeft,\n\t\t\ttop: options.domNode.offsetTop,\n\t\t\twidth: options.domNode.offsetWidth,\n\t\t\theight: options.domNode.offsetHeight\n\t\t};\n\t}\n\tvar popupRect = \"(\" + rect.left + \",\" + rect.top + \",\" + \n\t\t\t\trect.width + \",\" + rect.height + \")\";\n\tif(options.noStateReference) {\n\t\toptions.wiki.setText(options.title,\"text\",undefined,popupRect);\n\t} else {\n\t\toptions.wiki.setTextReference(options.title,popupRect);\n\t}\n\t// Add the click handler if we have any popups\n\tif(this.popups.length > 0) {\n\t\tthis.rootElement.addEventListener(\"click\",this,true);\t\t\n\t}\n};\n\n/*\nCancel all popups at or above a specified level or DOM node\nlevel: popup level to cancel (0 cancels all popups)\n*/\nPopup.prototype.cancel = function(level) {\n\tvar numPopups = this.popups.length;\n\tlevel = Math.max(0,Math.min(level,numPopups));\n\tfor(var t=level; t<numPopups; t++) {\n\t\tvar popup = this.popups.pop();\n\t\tif(popup.title) {\n\t\t\tif(popup.noStateReference) {\n\t\t\t\tpopup.wiki.deleteTiddler(popup.title);\n\t\t\t} else {\n\t\t\t\tpopup.wiki.deleteTiddler($tw.utils.parseTextReference(popup.title).title);\n        \t\t}\n\t\t}\n\t}\n\tif(this.popups.length === 0) {\n\t\tthis.rootElement.removeEventListener(\"click\",this,false);\n\t}\n};\n\n/*\nReturns true if the specified title and text identifies an active popup\n*/\nPopup.prototype.readPopupState = function(text) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/;\n\treturn popupLocationRegExp.test(text);\n};\n\nexports.Popup = Popup;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/dom/scroller.js": {
            "title": "$:/core/modules/utils/dom/scroller.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/dom/scroller.js\ntype: application/javascript\nmodule-type: utils\n\nModule that creates a $tw.utils.Scroller object prototype that manages scrolling in the browser\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nEvent handler for when the `tm-scroll` event hits the document body\n*/\nvar PageScroller = function() {\n\tthis.idRequestFrame = null;\n\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\twindow.webkitRequestAnimationFrame ||\n\t\twindow.mozRequestAnimationFrame ||\n\t\tfunction(callback) {\n\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t};\n\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\twindow.webkitCancelAnimationFrame ||\n\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\twindow.mozCancelAnimationFrame ||\n\t\twindow.mozCancelRequestAnimationFrame ||\n\t\tfunction(id) {\n\t\t\twindow.clearTimeout(id);\n\t\t};\n};\n\nPageScroller.prototype.isScrolling = function() {\n\treturn this.idRequestFrame !== null;\n}\n\nPageScroller.prototype.cancelScroll = function(srcWindow) {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(srcWindow,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle an event\n*/\nPageScroller.prototype.handleEvent = function(event) {\n\tif(event.type === \"tm-scroll\") {\n\t\treturn this.scrollIntoView(event.target);\n\t}\n\treturn true;\n};\n\n/*\nHandle a scroll event hitting the page document\n*/\nPageScroller.prototype.scrollIntoView = function(element,callback) {\n\tvar self = this,\n\t\tduration = $tw.utils.getAnimationDuration(),\n\t    srcWindow = element ? element.ownerDocument.defaultView : window;\n\t// Now get ready to scroll the body\n\tthis.cancelScroll(srcWindow);\n\tthis.startTime = Date.now();\n\t// Get the height of any position:fixed toolbars\n\tvar toolbar = srcWindow.document.querySelector(\".tc-adjust-top-of-scroll\"),\n\t\toffset = 0;\n\tif(toolbar) {\n\t\toffset = toolbar.offsetHeight;\n\t}\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar getBounds = function() {\n\t\t\tvar clientBounds = typeof callback === 'function' ? callback() : element.getBoundingClientRect(),\n\t\t\t\tscrollPosition = $tw.utils.getScrollPosition(srcWindow);\n\t\t\treturn {\n\t\t\t\tleft: clientBounds.left + scrollPosition.x,\n\t\t\t\ttop: clientBounds.top + scrollPosition.y - offset,\n\t\t\t\twidth: clientBounds.width,\n\t\t\t\theight: clientBounds.height\n\t\t\t};\n\t\t},\n\t\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\t\t// targetPos/targetSize - position and size of the target element\n\t\t// currentPos/currentSize - position and size of the current scroll viewport\n\t\t// returns: new position of the scroll viewport\n\t\tgetEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\tvar newPos = targetPos;\n\t\t\t// If we are scrolling within 50 pixels of the top/left then snap to zero\n\t\t\tif(newPos < 50) {\n\t\t\t\tnewPos = 0;\n\t\t\t}\n\t\t\treturn newPos;\n\t\t},\n\t\tdrawFrame = function drawFrame() {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll(srcWindow);\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tvar scrollPosition = $tw.utils.getScrollPosition(srcWindow),\n\t\t\t\tbounds = getBounds(),\n\t\t\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,srcWindow.innerWidth),\n\t\t\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,srcWindow.innerHeight);\n\t\t\tsrcWindow.scrollTo(scrollPosition.x + (endX - scrollPosition.x) * t,scrollPosition.y + (endY - scrollPosition.y) * t);\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(srcWindow,drawFrame);\n\t\t\t}\n\t\t};\n\tdrawFrame();\n};\n\nexports.PageScroller = PageScroller;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/edition-info.js": {
            "title": "$:/core/modules/utils/edition-info.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/edition-info.js\ntype: application/javascript\nmodule-type: utils-node\n\nInformation about the available editions\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\nvar editionInfo;\n\nexports.getEditionInfo = function() {\n\tif(!editionInfo) {\n\t\t// Enumerate the edition paths\n\t\tvar editionPaths = $tw.getLibraryItemSearchPaths($tw.config.editionsPath,$tw.config.editionsEnvVar);\n\t\teditionInfo = {};\n\t\tfor(var editionIndex=0; editionIndex<editionPaths.length; editionIndex++) {\n\t\t\tvar editionPath = editionPaths[editionIndex];\n\t\t\t// Enumerate the folders\n\t\t\tvar entries = fs.readdirSync(editionPath);\n\t\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\t\tvar entry = entries[entryIndex];\n\t\t\t\t// Check if directories have a valid tiddlywiki.info\n\t\t\t\tif(!editionInfo[entry] && $tw.utils.isDirectory(path.resolve(editionPath,entry))) {\n\t\t\t\t\tvar info;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tinfo = JSON.parse(fs.readFileSync(path.resolve(editionPath,entry,\"tiddlywiki.info\"),\"utf8\"));\n\t\t\t\t\t} catch(ex) {\n\t\t\t\t\t}\n\t\t\t\t\tif(info) {\n\t\t\t\t\t\teditionInfo[entry] = info;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn editionInfo;\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils-node"
        },
        "$:/core/modules/utils/fakedom.js": {
            "title": "$:/core/modules/utils/fakedom.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/fakedom.js\ntype: application/javascript\nmodule-type: global\n\nA barebones implementation of DOM interfaces needed by the rendering mechanism.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Sequence number used to enable us to track objects for testing\nvar sequenceNumber = null;\n\nvar bumpSequenceNumber = function(object) {\n\tif(sequenceNumber !== null) {\n\t\tobject.sequenceNumber = sequenceNumber++;\n\t}\n};\n\nvar TW_TextNode = function(text) {\n\tbumpSequenceNumber(this);\n\tthis.textContent = text + \"\";\n};\n\nObject.defineProperty(TW_TextNode.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 3;\n\t}\n});\n\nObject.defineProperty(TW_TextNode.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\treturn this.textContent.replace(/(\\r?\\n)/g,\"\");\n\t}\n});\n\nvar TW_Element = function(tag,namespace) {\n\tbumpSequenceNumber(this);\n\tthis.isTiddlyWikiFakeDom = true;\n\tthis.tag = tag;\n\tthis.attributes = {};\n\tthis.isRaw = false;\n\tthis.children = [];\n\tthis._style = {};\n\tthis.namespaceURI = namespace || \"http://www.w3.org/1999/xhtml\";\n};\n\nObject.defineProperty(TW_Element.prototype, \"style\", {\n\tget: function() {\n\t\treturn this._style;\n\t},\n\tset: function(str) {\n\t\tvar self = this;\n\t\tstr = str || \"\";\n\t\t$tw.utils.each(str.split(\";\"),function(declaration) {\n\t\t\tvar parts = declaration.split(\":\"),\n\t\t\t\tname = $tw.utils.trim(parts[0]),\n\t\t\t\tvalue = $tw.utils.trim(parts[1]);\n\t\t\tif(name && value) {\n\t\t\t\tself._style[$tw.utils.convertStyleNameToPropertyName(name)] = value;\n\t\t\t}\n\t\t});\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"nodeType\", {\n\tget: function() {\n\t\treturn 1;\n\t}\n});\n\nTW_Element.prototype.getAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot getAttribute on a raw TW_Element\";\n\t}\n\treturn this.attributes[name];\n};\n\nTW_Element.prototype.setAttribute = function(name,value) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot setAttribute on a raw TW_Element\";\n\t}\n\tthis.attributes[name] = value + \"\";\n};\n\nTW_Element.prototype.setAttributeNS = function(namespace,name,value) {\n\tthis.setAttribute(name,value);\n};\n\nTW_Element.prototype.removeAttribute = function(name) {\n\tif(this.isRaw) {\n\t\tthrow \"Cannot removeAttribute on a raw TW_Element\";\n\t}\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\tdelete this.attributes[name];\n\t}\n};\n\nTW_Element.prototype.appendChild = function(node) {\n\tthis.children.push(node);\n\tnode.parentNode = this;\n};\n\nTW_Element.prototype.insertBefore = function(node,nextSibling) {\n\tif(nextSibling) {\n\t\tvar p = this.children.indexOf(nextSibling);\n\t\tif(p !== -1) {\n\t\t\tthis.children.splice(p,0,node);\n\t\t\tnode.parentNode = this;\n\t\t} else {\n\t\t\tthis.appendChild(node);\n\t\t}\n\t} else {\n\t\tthis.appendChild(node);\n\t}\n};\n\nTW_Element.prototype.removeChild = function(node) {\n\tvar p = this.children.indexOf(node);\n\tif(p !== -1) {\n\t\tthis.children.splice(p,1);\n\t}\n};\n\nTW_Element.prototype.hasChildNodes = function() {\n\treturn !!this.children.length;\n};\n\nObject.defineProperty(TW_Element.prototype, \"childNodes\", {\n\tget: function() {\n\t\treturn this.children;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"firstChild\", {\n\tget: function() {\n\t\treturn this.children[0];\n\t}\n});\n\nTW_Element.prototype.addEventListener = function(type,listener,useCapture) {\n\t// Do nothing\n};\n\nObject.defineProperty(TW_Element.prototype, \"tagName\", {\n\tget: function() {\n\t\treturn this.tag || \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"className\", {\n\tget: function() {\n\t\treturn this.attributes[\"class\"] || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes[\"class\"] = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"value\", {\n\tget: function() {\n\t\treturn this.attributes.value || \"\";\n\t},\n\tset: function(value) {\n\t\tthis.attributes.value = value + \"\";\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"outerHTML\", {\n\tget: function() {\n\t\tvar output = [],attr,a,v;\n\t\toutput.push(\"<\",this.tag);\n\t\tif(this.attributes) {\n\t\t\tattr = [];\n\t\t\tfor(a in this.attributes) {\n\t\t\t\tattr.push(a);\n\t\t\t}\n\t\t\tattr.sort();\n\t\t\tfor(a=0; a<attr.length; a++) {\n\t\t\t\tv = this.attributes[attr[a]];\n\t\t\t\tif(v !== undefined) {\n\t\t\t\t\toutput.push(\" \",attr[a],\"=\\\"\",$tw.utils.htmlEncode(v),\"\\\"\");\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif(this._style) {\n\t\t\tvar style = [];\n\t\t\tfor(var s in this._style) {\n\t\t\t\tstyle.push($tw.utils.convertPropertyNameToStyleName(s) + \":\" + this._style[s] + \";\");\n\t\t\t}\n\t\t\tif(style.length > 0) {\n\t\t\t\toutput.push(\" style=\\\"\",style.join(\"\"),\"\\\"\");\n\t\t\t}\n\t\t}\n\t\toutput.push(\">\");\n\t\tif($tw.config.htmlVoidElements.indexOf(this.tag) === -1) {\n\t\t\toutput.push(this.innerHTML);\n\t\t\toutput.push(\"</\",this.tag,\">\");\n\t\t}\n\t\treturn output.join(\"\");\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"innerHTML\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn this.rawHTML;\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tif(node instanceof TW_Element) {\n\t\t\t\t\tb.push(node.outerHTML);\n\t\t\t\t} else if(node instanceof TW_TextNode) {\n\t\t\t\t\tb.push($tw.utils.htmlEncode(node.textContent));\n\t\t\t\t}\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.isRaw = true;\n\t\tthis.rawHTML = value;\n\t\tthis.rawTextContent = null;\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textInnerHTML\", {\n\tset: function(value) {\n\t\tif(this.isRaw) {\n\t\t\tthis.rawTextContent = value;\n\t\t} else {\n\t\t\tthrow \"Cannot set textInnerHTML of a non-raw TW_Element\";\n\t\t}\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"textContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\tif(this.rawTextContent === null) {\n\t\t\t\treturn \"\";\n\t\t\t} else {\n\t\t\t\treturn this.rawTextContent;\n\t\t\t}\n\t\t} else {\n\t\t\tvar b = [];\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.textContent);\n\t\t\t});\n\t\t\treturn b.join(\"\");\n\t\t}\n\t},\n\tset: function(value) {\n\t\tthis.children = [new TW_TextNode(value)];\n\t}\n});\n\nObject.defineProperty(TW_Element.prototype, \"formattedTextContent\", {\n\tget: function() {\n\t\tif(this.isRaw) {\n\t\t\treturn \"\";\n\t\t} else {\n\t\t\tvar b = [],\n\t\t\t\tisBlock = $tw.config.htmlBlockElements.indexOf(this.tag) !== -1;\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\tif(this.tag === \"li\") {\n\t\t\t\tb.push(\"* \");\n\t\t\t}\n\t\t\t$tw.utils.each(this.children,function(node) {\n\t\t\t\tb.push(node.formattedTextContent);\n\t\t\t});\n\t\t\tif(isBlock) {\n\t\t\t\tb.push(\"\\n\");\n\t\t\t}\n\t\t\treturn b.join(\"\");\n\t\t}\n\t}\n});\n\nvar document = {\n\tsetSequenceNumber: function(value) {\n\t\tsequenceNumber = value;\n\t},\n\tcreateElementNS: function(namespace,tag) {\n\t\treturn new TW_Element(tag,namespace);\n\t},\n\tcreateElement: function(tag) {\n\t\treturn new TW_Element(tag);\n\t},\n\tcreateTextNode: function(text) {\n\t\treturn new TW_TextNode(text);\n\t},\n\tcompatMode: \"CSS1Compat\", // For KaTeX to know that we're not a browser in quirks mode\n\tisTiddlyWikiFakeDom: true\n};\n\nexports.fakeDocument = document;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/utils/filesystem.js": {
            "title": "$:/core/modules/utils/filesystem.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/filesystem.js\ntype: application/javascript\nmodule-type: utils-node\n\nFile system utilities\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar fs = require(\"fs\"),\n\tpath = require(\"path\");\n\n/*\nRecursively (and synchronously) copy a directory and all its content\n*/\nexports.copyDirectory = function(srcPath,dstPath) {\n\t// Remove any trailing path separators\n\tsrcPath = $tw.utils.removeTrailingSeparator(srcPath);\n\tdstPath = $tw.utils.removeTrailingSeparator(dstPath);\n\t// Create the destination directory\n\tvar err = $tw.utils.createDirectory(dstPath);\n\tif(err) {\n\t\treturn err;\n\t}\n\t// Function to copy a folder full of files\n\tvar copy = function(srcPath,dstPath) {\n\t\tvar srcStats = fs.lstatSync(srcPath),\n\t\t\tdstExists = fs.existsSync(dstPath);\n\t\tif(srcStats.isFile()) {\n\t\t\t$tw.utils.copyFile(srcPath,dstPath);\n\t\t} else if(srcStats.isDirectory()) {\n\t\t\tvar items = fs.readdirSync(srcPath);\n\t\t\tfor(var t=0; t<items.length; t++) {\n\t\t\t\tvar item = items[t],\n\t\t\t\t\terr = copy(srcPath + path.sep + item,dstPath + path.sep + item);\n\t\t\t\tif(err) {\n\t\t\t\t\treturn err;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n\tcopy(srcPath,dstPath);\n\treturn null;\n};\n\n/*\nCopy a file\n*/\nvar FILE_BUFFER_LENGTH = 64 * 1024,\n\tfileBuffer;\n\nexports.copyFile = function(srcPath,dstPath) {\n\t// Create buffer if required\n\tif(!fileBuffer) {\n\t\tfileBuffer = Buffer.alloc(FILE_BUFFER_LENGTH);\n\t}\n\t// Create any directories in the destination\n\t$tw.utils.createDirectory(path.dirname(dstPath));\n\t// Copy the file\n\tvar srcFile = fs.openSync(srcPath,\"r\"),\n\t\tdstFile = fs.openSync(dstPath,\"w\"),\n\t\tbytesRead = 1,\n\t\tpos = 0;\n\twhile (bytesRead > 0) {\n\t\tbytesRead = fs.readSync(srcFile,fileBuffer,0,FILE_BUFFER_LENGTH,pos);\n\t\tfs.writeSync(dstFile,fileBuffer,0,bytesRead);\n\t\tpos += bytesRead;\n\t}\n\tfs.closeSync(srcFile);\n\tfs.closeSync(dstFile);\n\treturn null;\n};\n\n/*\nRemove trailing path separator\n*/\nexports.removeTrailingSeparator = function(dirPath) {\n\tvar len = dirPath.length;\n\tif(dirPath.charAt(len-1) === path.sep) {\n\t\tdirPath = dirPath.substr(0,len-1);\n\t}\n\treturn dirPath;\n};\n\n/*\nRecursively create a directory\n*/\nexports.createDirectory = function(dirPath) {\n\tif(dirPath.substr(dirPath.length-1,1) !== path.sep) {\n\t\tdirPath = dirPath + path.sep;\n\t}\n\tvar pos = 1;\n\tpos = dirPath.indexOf(path.sep,pos);\n\twhile(pos !== -1) {\n\t\tvar subDirPath = dirPath.substr(0,pos);\n\t\tif(!$tw.utils.isDirectory(subDirPath)) {\n\t\t\ttry {\n\t\t\t\tfs.mkdirSync(subDirPath);\n\t\t\t} catch(e) {\n\t\t\t\treturn \"Error creating directory '\" + subDirPath + \"'\";\n\t\t\t}\n\t\t}\n\t\tpos = dirPath.indexOf(path.sep,pos + 1);\n\t}\n\treturn null;\n};\n\n/*\nRecursively create directories needed to contain a specified file\n*/\nexports.createFileDirectories = function(filePath) {\n\treturn $tw.utils.createDirectory(path.dirname(filePath));\n};\n\n/*\nRecursively delete a directory\n*/\nexports.deleteDirectory = function(dirPath) {\n\tif(fs.existsSync(dirPath)) {\n\t\tvar entries = fs.readdirSync(dirPath);\n\t\tfor(var entryIndex=0; entryIndex<entries.length; entryIndex++) {\n\t\t\tvar currPath = dirPath + path.sep + entries[entryIndex];\n\t\t\tif(fs.lstatSync(currPath).isDirectory()) {\n\t\t\t\t$tw.utils.deleteDirectory(currPath);\n\t\t\t} else {\n\t\t\t\tfs.unlinkSync(currPath);\n\t\t\t}\n\t\t}\n\tfs.rmdirSync(dirPath);\n\t}\n\treturn null;\n};\n\n/*\nCheck if a path identifies a directory\n*/\nexports.isDirectory = function(dirPath) {\n\treturn fs.existsSync(dirPath) && fs.statSync(dirPath).isDirectory();\n};\n\n/*\nCheck if a path identifies a directory that is empty\n*/\nexports.isDirectoryEmpty = function(dirPath) {\n\tif(!$tw.utils.isDirectory(dirPath)) {\n\t\treturn false;\n\t}\n\tvar files = fs.readdirSync(dirPath),\n\t\tempty = true;\n\t$tw.utils.each(files,function(file,index) {\n\t\tif(file.charAt(0) !== \".\") {\n\t\t\tempty = false;\n\t\t}\n\t});\n\treturn empty;\n};\n\n/*\nRecursively delete a tree of empty directories\n*/\nexports.deleteEmptyDirs = function(dirpath,callback) {\n\tvar self = this;\n\tfs.readdir(dirpath,function(err,files) {\n\t\tif(err) {\n\t\t\treturn callback(err);\n\t\t}\n\t\tif(files.length > 0) {\n\t\t\treturn callback(null);\n\t\t}\n\t\tfs.rmdir(dirpath,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tself.deleteEmptyDirs(path.dirname(dirpath),callback);\n\t\t});\n\t});\n};\n\n/*\nCreate a fileInfo object for saving a tiddler:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\nOptions include:\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters\n*/\nexports.generateTiddlerFileInfo = function(tiddler,options) {\n\tvar fileInfo = {};\n\t// Check if the tiddler has any unsafe fields that can't be expressed in a .tid or .meta file: containing control characters, or leading/trailing whitespace\n\tvar hasUnsafeFields = false;\n\t$tw.utils.each(tiddler.getFieldStrings(),function(value,fieldName) {\n\t\tif(fieldName !== \"text\") {\n\t\t\thasUnsafeFields = hasUnsafeFields || /[\\x00-\\x1F]/mg.test(value);\n\t\t\thasUnsafeFields = hasUnsafeFields || ($tw.utils.trim(value) !== value);\n\t\t}\n\t});\n\t// Check for field values \n\tif(hasUnsafeFields) {\n\t\t// Save as a JSON file\n\t\tfileInfo.type = \"application/json\";\n\t\tfileInfo.hasMetaFile = false;\n\t} else {\n\t\t// Save as a .tid or a text/binary file plus a .meta file\n\t\tvar tiddlerType = tiddler.fields.type || \"text/vnd.tiddlywiki\";\n\t\tif(tiddlerType === \"text/vnd.tiddlywiki\") {\n\t\t\t// Save as a .tid file\n\t\t\tfileInfo.type = \"application/x-tiddler\";\n\t\t\tfileInfo.hasMetaFile = false;\n\t\t} else {\n\t\t\t// Save as a text/binary file and a .meta file\n\t\t\tfileInfo.type = tiddlerType;\n\t\t\tfileInfo.hasMetaFile = true;\n\t\t}\n\t}\n\t// Take the file extension from the tiddler content type\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[fileInfo.type] || {extension: \"\"};\n\t// Generate the filepath\n\tfileInfo.filepath = $tw.utils.generateTiddlerFilepath(tiddler.fields.title,{\n\t\textension: contentTypeInfo.extension,\n\t\tdirectory: options.directory,\n\t\tpathFilters: options.pathFilters,\n\t\twiki: options.wiki\n\t});\n\treturn fileInfo;\n};\n\n/*\nGenerate the filepath for saving a tiddler\nOptions include:\n\textension: file extension to be added the finished filepath\n\tdirectory: absolute path of root directory to which we are saving\n\tpathFilters: optional array of filters to be used to generate the base path\n\twiki: optional wiki for evaluating the pathFilters\n*/\nexports.generateTiddlerFilepath = function(title,options) {\n\tvar self = this,\n\t\tdirectory = options.directory || \"\",\n\t\textension = options.extension || \"\",\n\t\tfilepath;\n\t// Check if any of the pathFilters applies\n\tif(options.pathFilters && options.wiki) {\n\t\t$tw.utils.each(options.pathFilters,function(filter) {\n\t\t\tif(!filepath) {\n\t\t\t\tvar source = options.wiki.makeTiddlerIterator([title]),\n\t\t\t\t\tresult = options.wiki.filterTiddlers(filter,null,source);\n\t\t\t\tif(result.length > 0) {\n\t\t\t\t\tfilepath = result[0];\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n\t// If not, generate a base pathname\n\tif(!filepath) {\n\t\tfilepath = title;\n\t\t// If the filepath already ends in the extension then remove it\n\t\tif(filepath.substring(filepath.length - extension.length) === extension) {\n\t\t\tfilepath = filepath.substring(0,filepath.length - extension.length);\n\t\t}\n\t\t// Remove any forward or backward slashes so we don't create directories\n\t\tfilepath = filepath.replace(/\\/|\\\\/g,\"_\");\n\t}\n\t// Don't let the filename start with a dot because such files are invisible on *nix\n\tfilepath = filepath.replace(/^\\./g,\"_\");\n\t// Remove any characters that can't be used in cross-platform filenames\n\tfilepath = $tw.utils.transliterate(filepath.replace(/<|>|\\:|\\\"|\\||\\?|\\*|\\^/g,\"_\"));\n\t// Truncate the filename if it is too long\n\tif(filepath.length > 200) {\n\t\tfilepath = filepath.substr(0,200);\n\t}\n\t// If the resulting filename is blank (eg because the title is just punctuation characters)\n\tif(!filepath) {\n\t\t// ...then just use the character codes of the title\n\t\tfilepath = \"\";\t\n\t\t$tw.utils.each(title.split(\"\"),function(char) {\n\t\t\tif(filepath) {\n\t\t\t\tfilepath += \"-\";\n\t\t\t}\n\t\t\tfilepath += char.charCodeAt(0).toString();\n\t\t});\n\t}\n\t// Add a uniquifier if the file already exists\n\tvar fullPath,\n\t\tcount = 0;\n\tdo {\n\t\tfullPath = path.resolve(directory,filepath + (count ? \"_\" + count : \"\") + extension);\n\t\tcount++;\n\t} while(fs.existsSync(fullPath));\n\t// Return the full path to the file\n\treturn fullPath;\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFile = function(tiddler,fileInfo,callback) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFile(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding,function(err) {\n\t\t\tif(err) {\n\t\t\t\treturn callback(err);\n\t\t\t}\n\t\t\tfs.writeFile(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\",callback);\n\t\t});\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFile(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\",callback);\n\t\t} else {\n\t\t\tfs.writeFile(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\",callback);\n\t\t}\n\t}\n};\n\n/*\nSave a tiddler to a file described by the fileInfo:\n\tfilepath: the absolute path to the file containing the tiddler\n\ttype: the type of the tiddler file (NOT the type of the tiddler)\n\thasMetaFile: true if the file also has a companion .meta file\n*/\nexports.saveTiddlerToFileSync = function(tiddler,fileInfo) {\n\t$tw.utils.createDirectory(path.dirname(fileInfo.filepath));\n\tif(fileInfo.hasMetaFile) {\n\t\t// Save the tiddler as a separate body and meta file\n\t\tvar typeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/plain\"] || {encoding: \"utf8\"};\n\t\tfs.writeFileSync(fileInfo.filepath,tiddler.fields.text,typeInfo.encoding);\n\t\tfs.writeFileSync(fileInfo.filepath + \".meta\",tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}),\"utf8\");\n\t} else {\n\t\t// Save the tiddler as a self contained templated file\n\t\tif(fileInfo.type === \"application/x-tiddler\") {\n\t\t\tfs.writeFileSync(fileInfo.filepath,tiddler.getFieldStringBlock({exclude: [\"text\",\"bag\"]}) + (!!tiddler.fields.text ? \"\\n\\n\" + tiddler.fields.text : \"\"),\"utf8\");\n\t\t} else {\n\t\t\tfs.writeFileSync(fileInfo.filepath,JSON.stringify([tiddler.getFieldStrings({exclude: [\"bag\"]})],null,$tw.config.preferences.jsonSpaces),\"utf8\");\n\t\t}\n\t}\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils-node"
        },
        "$:/core/modules/utils/logger.js": {
            "title": "$:/core/modules/utils/logger.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/logger.js\ntype: application/javascript\nmodule-type: utils\n\nA basic logging implementation\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar ALERT_TAG = \"$:/tags/Alert\";\n\n/*\nMake a new logger\n*/\nfunction Logger(componentName,options) {\n\toptions = options || {};\n\tthis.componentName = componentName || \"\";\n\tthis.colour = options.colour || \"white\";\n\tthis.enable = \"enable\" in options ? options.enable : true;\n\tthis.save = \"save\" in options ? options.save : true;\n\tthis.saveLimit = options.saveLimit || 100 * 1024;\n\tthis.saveBufferLogger = this;\n\tthis.buffer = \"\";\n\tthis.alertCount = 0;\n}\n\nLogger.prototype.setSaveBuffer = function(logger) {\n\tthis.saveBufferLogger = logger;\n};\n\n/*\nLog a message\n*/\nLogger.prototype.log = function(/* args */) {\n\tvar self = this;\n\tif(this.enable) {\n\t\tif(this.saveBufferLogger.save) {\n\t\t\tthis.saveBufferLogger.buffer += $tw.utils.formatDateString(new Date(),\"YYYY MM DD 0hh:0mm:0ss.0XXX\") + \":\";\n\t\t\t$tw.utils.each(Array.prototype.slice.call(arguments,0),function(arg,index) {\n\t\t\t\tself.saveBufferLogger.buffer += \" \" + arg;\n\t\t\t});\n\t\t\tthis.saveBufferLogger.buffer += \"\\n\";\n\t\t\tthis.saveBufferLogger.buffer = this.saveBufferLogger.buffer.slice(-this.saveBufferLogger.saveLimit);\t\t\t\n\t\t}\n\t\tif(console !== undefined && console.log !== undefined) {\n\t\t\treturn Function.apply.call(console.log, console, [$tw.utils.terminalColour(this.colour),this.componentName + \":\"].concat(Array.prototype.slice.call(arguments,0)).concat($tw.utils.terminalColour()));\n\t\t}\n\t} \n};\n\n/*\nRead the message buffer\n*/\nLogger.prototype.getBuffer = function() {\n\treturn this.saveBufferLogger.buffer;\n};\n\n/*\nLog a structure as a table\n*/\nLogger.prototype.table = function(value) {\n\t(console.table || console.log)(value);\n};\n\n/*\nAlert a message\n*/\nLogger.prototype.alert = function(/* args */) {\n\tif(this.enable) {\n\t\t// Prepare the text of the alert\n\t\tvar text = Array.prototype.join.call(arguments,\" \");\n\t\t// Create alert tiddlers in the browser\n\t\tif($tw.browser) {\n\t\t\t// Check if there is an existing alert with the same text and the same component\n\t\t\tvar existingAlerts = $tw.wiki.getTiddlersWithTag(ALERT_TAG),\n\t\t\t\talertFields,\n\t\t\t\texistingCount,\n\t\t\t\tself = this;\n\t\t\t$tw.utils.each(existingAlerts,function(title) {\n\t\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\t\tif(tiddler.fields.text === text && tiddler.fields.component === self.componentName && tiddler.fields.modified && (!alertFields || tiddler.fields.modified < alertFields.modified)) {\n\t\t\t\t\t\talertFields = $tw.utils.extend({},tiddler.fields);\n\t\t\t\t}\n\t\t\t});\n\t\t\tif(alertFields) {\n\t\t\t\texistingCount = alertFields.count || 1;\n\t\t\t} else {\n\t\t\t\talertFields = {\n\t\t\t\t\ttitle: $tw.wiki.generateNewTitle(\"$:/temp/alerts/alert\",{prefix: \"\"}),\n\t\t\t\t\ttext: text,\n\t\t\t\t\ttags: [ALERT_TAG],\n\t\t\t\t\tcomponent: this.componentName\n\t\t\t\t};\n\t\t\t\texistingCount = 0;\n\t\t\t\tthis.alertCount += 1;\n\t\t\t}\n\t\t\talertFields.modified = new Date();\n\t\t\tif(++existingCount > 1) {\n\t\t\t\talertFields.count = existingCount;\n\t\t\t} else {\n\t\t\t\talertFields.count = undefined;\n\t\t\t}\n\t\t\t$tw.wiki.addTiddler(new $tw.Tiddler(alertFields));\n\t\t\t// Log the alert as well\n\t\t\tthis.log.apply(this,Array.prototype.slice.call(arguments,0));\n\t\t} else {\n\t\t\t// Print an orange message to the console if not in the browser\n\t\t\tconsole.error(\"\\x1b[1;33m\" + text + \"\\x1b[0m\");\n\t\t}\t\t\n\t}\n};\n\n/*\nClear outstanding alerts\n*/\nLogger.prototype.clearAlerts = function() {\n\tvar self = this;\n\tif($tw.browser && this.alertCount > 0) {\n\t\t$tw.utils.each($tw.wiki.getTiddlersWithTag(ALERT_TAG),function(title) {\n\t\t\tvar tiddler = $tw.wiki.getTiddler(title);\n\t\t\tif(tiddler.fields.component === self.componentName) {\n\t\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t\t}\n\t\t});\n\t\tthis.alertCount = 0;\n\t}\n};\n\nexports.Logger = Logger;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/parsetree.js": {
            "title": "$:/core/modules/utils/parsetree.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/parsetree.js\ntype: application/javascript\nmodule-type: utils\n\nParse tree utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nexports.addAttributeToParseTreeNode = function(node,name,value) {\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[name] = {type: \"string\", value: value};\n};\n\nexports.getAttributeValueFromParseTreeNode = function(node,name,defaultValue) {\n\tif(node.attributes && node.attributes[name] && node.attributes[name].value !== undefined) {\n\t\treturn node.attributes[name].value;\n\t}\n\treturn defaultValue;\n};\n\nexports.addClassToParseTreeNode = function(node,classString) {\n\tvar classes = [];\n\tnode.attributes = node.attributes || {};\n\tnode.attributes[\"class\"] = node.attributes[\"class\"] || {type: \"string\", value: \"\"};\n\tif(node.attributes[\"class\"].type === \"string\") {\n\t\tif(node.attributes[\"class\"].value !== \"\") {\n\t\t\tclasses = node.attributes[\"class\"].value.split(\" \");\n\t\t}\n\t\tif(classString !== \"\") {\n\t\t\t$tw.utils.pushTop(classes,classString.split(\" \"));\n\t\t}\n\t\tnode.attributes[\"class\"].value = classes.join(\" \");\n\t}\n};\n\nexports.addStyleToParseTreeNode = function(node,name,value) {\n\t\tnode.attributes = node.attributes || {};\n\t\tnode.attributes.style = node.attributes.style || {type: \"string\", value: \"\"};\n\t\tif(node.attributes.style.type === \"string\") {\n\t\t\tnode.attributes.style.value += name + \":\" + value + \";\";\n\t\t}\n};\n\nexports.findParseTreeNode = function(nodeArray,search) {\n\tfor(var t=0; t<nodeArray.length; t++) {\n\t\tif(nodeArray[t].type === search.type && nodeArray[t].tag === search.tag) {\n\t\t\treturn nodeArray[t];\n\t\t}\n\t}\n\treturn undefined;\n};\n\n/*\nHelper to get the text of a parse tree node or array of nodes\n*/\nexports.getParseTreeText = function getParseTreeText(tree) {\n\tvar output = [];\n\tif($tw.utils.isArray(tree)) {\n\t\t$tw.utils.each(tree,function(node) {\n\t\t\toutput.push(getParseTreeText(node));\n\t\t});\n\t} else {\n\t\tif(tree.type === \"text\") {\n\t\t\toutput.push(tree.text);\n\t\t}\n\t\tif(tree.children) {\n\t\t\treturn getParseTreeText(tree.children);\n\t\t}\n\t}\n\treturn output.join(\"\");\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/performance.js": {
            "title": "$:/core/modules/utils/performance.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/performance.js\ntype: application/javascript\nmodule-type: global\n\nPerformance measurement.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nfunction Performance(enabled) {\n\tthis.enabled = !!enabled;\n\tthis.measures = {}; // Hashmap by measurement name of {time:, invocations:}\n\tthis.logger = new $tw.utils.Logger(\"performance\");\n\tthis.showGreeting();\n}\n\nPerformance.prototype.showGreeting = function() {\n\tif($tw.browser) {\n\t\tthis.logger.log(\"Execute $tw.perf.log(); to see filter execution timings\");\t\t\n\t}\n};\n\n/*\nWrap performance reporting around a top level function\n*/\nPerformance.prototype.report = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tself.logger.log(name + \": \" + $tw.utils.timer(startTime).toFixed(2) + \"ms\");\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nPerformance.prototype.log = function() {\n\tvar self = this,\n\t\ttotalTime = 0,\n\t\torderedMeasures = Object.keys(this.measures).sort(function(a,b) {\n\t\t\tif(self.measures[a].time > self.measures[b].time) {\n\t\t\t\treturn -1;\n\t\t\t} else if (self.measures[a].time < self.measures[b].time) {\n\t\t\t\treturn + 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t});\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\ttotalTime += self.measures[name].time;\n\t});\n\tvar results = []\n\t$tw.utils.each(orderedMeasures,function(name) {\n\t\tvar measure = self.measures[name];\n\t\tresults.push({name: name,invocations: measure.invocations, avgTime: measure.time / measure.invocations, totalTime: measure.time, percentTime: (measure.time / totalTime) * 100})\n\t});\n\tself.logger.table(results);\n};\n\n/*\nWrap performance measurements around a subfunction\n*/\nPerformance.prototype.measure = function(name,fn) {\n\tvar self = this;\n\tif(this.enabled) {\n\t\treturn function() {\n\t\t\tvar startTime = $tw.utils.timer(),\n\t\t\t\tresult = fn.apply(this,arguments);\n\t\t\tif(!(name in self.measures)) {\n\t\t\t\tself.measures[name] = {time: 0, invocations: 0};\n\t\t\t}\n\t\t\tself.measures[name].time += $tw.utils.timer(startTime);\n\t\t\tself.measures[name].invocations++;\n\t\t\treturn result;\n\t\t};\n\t} else {\n\t\treturn fn;\n\t}\n};\n\nexports.Performance = Performance;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "global"
        },
        "$:/core/modules/utils/pluginmaker.js": {
            "title": "$:/core/modules/utils/pluginmaker.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/pluginmaker.js\ntype: application/javascript\nmodule-type: utils\n\nA quick and dirty way to pack up plugins within the browser.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRepack a plugin, and then delete any non-shadow payload tiddlers\n*/\nexports.repackPlugin = function(title,additionalTiddlers,excludeTiddlers) {\n\tadditionalTiddlers = additionalTiddlers || [];\n\texcludeTiddlers = excludeTiddlers || [];\n\t// Get the plugin tiddler\n\tvar pluginTiddler = $tw.wiki.getTiddler(title);\n\tif(!pluginTiddler) {\n\t\tthrow \"No such tiddler as \" + title;\n\t}\n\t// Extract the JSON\n\tvar jsonPluginTiddler;\n\ttry {\n\t\tjsonPluginTiddler = JSON.parse(pluginTiddler.fields.text);\n\t} catch(e) {\n\t\tthrow \"Cannot parse plugin tiddler \" + title + \"\\n\" + $tw.language.getString(\"Error/Caption\") + \": \" + e;\n\t}\n\t// Get the list of tiddlers\n\tvar tiddlers = Object.keys(jsonPluginTiddler.tiddlers);\n\t// Add the additional tiddlers\n\t$tw.utils.pushTop(tiddlers,additionalTiddlers);\n\t// Remove any excluded tiddlers\n\tfor(var t=tiddlers.length-1; t>=0; t--) {\n\t\tif(excludeTiddlers.indexOf(tiddlers[t]) !== -1) {\n\t\t\ttiddlers.splice(t,1);\n\t\t}\n\t}\n\t// Pack up the tiddlers into a block of JSON\n\tvar plugins = {};\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = $tw.wiki.getTiddler(title),\n\t\t\tfields = {};\n\t\t$tw.utils.each(tiddler.fields,function (value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\tplugins[title] = fields;\n\t});\n\t// Retrieve and bump the version number\n\tvar pluginVersion = $tw.utils.parseVersion(pluginTiddler.getFieldString(\"version\") || \"0.0.0\") || {\n\t\t\tmajor: \"0\",\n\t\t\tminor: \"0\",\n\t\t\tpatch: \"0\"\n\t\t};\n\tpluginVersion.patch++;\n\tvar version = pluginVersion.major + \".\" + pluginVersion.minor + \".\" + pluginVersion.patch;\n\tif(pluginVersion.prerelease) {\n\t\tversion += \"-\" + pluginVersion.prerelease;\n\t}\n\tif(pluginVersion.build) {\n\t\tversion += \"+\" + pluginVersion.build;\n\t}\n\t// Save the tiddler\n\t$tw.wiki.addTiddler(new $tw.Tiddler(pluginTiddler,{text: JSON.stringify({tiddlers: plugins},null,4), version: version}));\n\t// Delete any non-shadow constituent tiddlers\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tif($tw.wiki.tiddlerExists(title)) {\n\t\t\t$tw.wiki.deleteTiddler(title);\n\t\t}\n\t});\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t// Return a heartwarming confirmation\n\treturn \"Plugin \" + title + \" successfully saved\";\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/transliterate.js": {
            "title": "$:/core/modules/utils/transliterate.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/transliterate.js\ntype: application/javascript\nmodule-type: utils\n\nTransliteration static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nTransliterate string to ASCII\n\n(Some pairs taken from http://semplicewebsites.com/removing-accents-javascript)\n*/\nexports.transliterationPairs = {\n\t\"Á\":\"A\",\n\t\"Ă\":\"A\",\n\t\"Ắ\":\"A\",\n\t\"Ặ\":\"A\",\n\t\"Ằ\":\"A\",\n\t\"Ẳ\":\"A\",\n\t\"Ẵ\":\"A\",\n\t\"Ǎ\":\"A\",\n\t\"Â\":\"A\",\n\t\"Ấ\":\"A\",\n\t\"Ậ\":\"A\",\n\t\"Ầ\":\"A\",\n\t\"Ẩ\":\"A\",\n\t\"Ẫ\":\"A\",\n\t\"Ä\":\"A\",\n\t\"Ǟ\":\"A\",\n\t\"Ȧ\":\"A\",\n\t\"Ǡ\":\"A\",\n\t\"Ạ\":\"A\",\n\t\"Ȁ\":\"A\",\n\t\"À\":\"A\",\n\t\"Ả\":\"A\",\n\t\"Ȃ\":\"A\",\n\t\"Ā\":\"A\",\n\t\"Ą\":\"A\",\n\t\"Å\":\"A\",\n\t\"Ǻ\":\"A\",\n\t\"Ḁ\":\"A\",\n\t\"Ⱥ\":\"A\",\n\t\"Ã\":\"A\",\n\t\"Ꜳ\":\"AA\",\n\t\"Æ\":\"AE\",\n\t\"Ǽ\":\"AE\",\n\t\"Ǣ\":\"AE\",\n\t\"Ꜵ\":\"AO\",\n\t\"Ꜷ\":\"AU\",\n\t\"Ꜹ\":\"AV\",\n\t\"Ꜻ\":\"AV\",\n\t\"Ꜽ\":\"AY\",\n\t\"Ḃ\":\"B\",\n\t\"Ḅ\":\"B\",\n\t\"Ɓ\":\"B\",\n\t\"Ḇ\":\"B\",\n\t\"Ƀ\":\"B\",\n\t\"Ƃ\":\"B\",\n\t\"Ć\":\"C\",\n\t\"Č\":\"C\",\n\t\"Ç\":\"C\",\n\t\"Ḉ\":\"C\",\n\t\"Ĉ\":\"C\",\n\t\"Ċ\":\"C\",\n\t\"Ƈ\":\"C\",\n\t\"Ȼ\":\"C\",\n\t\"Ď\":\"D\",\n\t\"Ḑ\":\"D\",\n\t\"Ḓ\":\"D\",\n\t\"Ḋ\":\"D\",\n\t\"Ḍ\":\"D\",\n\t\"Ɗ\":\"D\",\n\t\"Ḏ\":\"D\",\n\t\"Dz\":\"D\",\n\t\"Dž\":\"D\",\n\t\"Đ\":\"D\",\n\t\"Ƌ\":\"D\",\n\t\"DZ\":\"DZ\",\n\t\"DŽ\":\"DZ\",\n\t\"É\":\"E\",\n\t\"Ĕ\":\"E\",\n\t\"Ě\":\"E\",\n\t\"Ȩ\":\"E\",\n\t\"Ḝ\":\"E\",\n\t\"Ê\":\"E\",\n\t\"Ế\":\"E\",\n\t\"Ệ\":\"E\",\n\t\"Ề\":\"E\",\n\t\"Ể\":\"E\",\n\t\"Ễ\":\"E\",\n\t\"Ḙ\":\"E\",\n\t\"Ë\":\"E\",\n\t\"Ė\":\"E\",\n\t\"Ẹ\":\"E\",\n\t\"Ȅ\":\"E\",\n\t\"È\":\"E\",\n\t\"Ẻ\":\"E\",\n\t\"Ȇ\":\"E\",\n\t\"Ē\":\"E\",\n\t\"Ḗ\":\"E\",\n\t\"Ḕ\":\"E\",\n\t\"Ę\":\"E\",\n\t\"Ɇ\":\"E\",\n\t\"Ẽ\":\"E\",\n\t\"Ḛ\":\"E\",\n\t\"Ꝫ\":\"ET\",\n\t\"Ḟ\":\"F\",\n\t\"Ƒ\":\"F\",\n\t\"Ǵ\":\"G\",\n\t\"Ğ\":\"G\",\n\t\"Ǧ\":\"G\",\n\t\"Ģ\":\"G\",\n\t\"Ĝ\":\"G\",\n\t\"Ġ\":\"G\",\n\t\"Ɠ\":\"G\",\n\t\"Ḡ\":\"G\",\n\t\"Ǥ\":\"G\",\n\t\"Ḫ\":\"H\",\n\t\"Ȟ\":\"H\",\n\t\"Ḩ\":\"H\",\n\t\"Ĥ\":\"H\",\n\t\"Ⱨ\":\"H\",\n\t\"Ḧ\":\"H\",\n\t\"Ḣ\":\"H\",\n\t\"Ḥ\":\"H\",\n\t\"Ħ\":\"H\",\n\t\"Í\":\"I\",\n\t\"Ĭ\":\"I\",\n\t\"Ǐ\":\"I\",\n\t\"Î\":\"I\",\n\t\"Ï\":\"I\",\n\t\"Ḯ\":\"I\",\n\t\"İ\":\"I\",\n\t\"Ị\":\"I\",\n\t\"Ȉ\":\"I\",\n\t\"Ì\":\"I\",\n\t\"Ỉ\":\"I\",\n\t\"Ȋ\":\"I\",\n\t\"Ī\":\"I\",\n\t\"Į\":\"I\",\n\t\"Ɨ\":\"I\",\n\t\"Ĩ\":\"I\",\n\t\"Ḭ\":\"I\",\n\t\"Ꝺ\":\"D\",\n\t\"Ꝼ\":\"F\",\n\t\"Ᵹ\":\"G\",\n\t\"Ꞃ\":\"R\",\n\t\"Ꞅ\":\"S\",\n\t\"Ꞇ\":\"T\",\n\t\"Ꝭ\":\"IS\",\n\t\"Ĵ\":\"J\",\n\t\"Ɉ\":\"J\",\n\t\"Ḱ\":\"K\",\n\t\"Ǩ\":\"K\",\n\t\"Ķ\":\"K\",\n\t\"Ⱪ\":\"K\",\n\t\"Ꝃ\":\"K\",\n\t\"Ḳ\":\"K\",\n\t\"Ƙ\":\"K\",\n\t\"Ḵ\":\"K\",\n\t\"Ꝁ\":\"K\",\n\t\"Ꝅ\":\"K\",\n\t\"Ĺ\":\"L\",\n\t\"Ƚ\":\"L\",\n\t\"Ľ\":\"L\",\n\t\"Ļ\":\"L\",\n\t\"Ḽ\":\"L\",\n\t\"Ḷ\":\"L\",\n\t\"Ḹ\":\"L\",\n\t\"Ⱡ\":\"L\",\n\t\"Ꝉ\":\"L\",\n\t\"Ḻ\":\"L\",\n\t\"Ŀ\":\"L\",\n\t\"Ɫ\":\"L\",\n\t\"Lj\":\"L\",\n\t\"Ł\":\"L\",\n\t\"LJ\":\"LJ\",\n\t\"Ḿ\":\"M\",\n\t\"Ṁ\":\"M\",\n\t\"Ṃ\":\"M\",\n\t\"Ɱ\":\"M\",\n\t\"Ń\":\"N\",\n\t\"Ň\":\"N\",\n\t\"Ņ\":\"N\",\n\t\"Ṋ\":\"N\",\n\t\"Ṅ\":\"N\",\n\t\"Ṇ\":\"N\",\n\t\"Ǹ\":\"N\",\n\t\"Ɲ\":\"N\",\n\t\"Ṉ\":\"N\",\n\t\"Ƞ\":\"N\",\n\t\"Nj\":\"N\",\n\t\"Ñ\":\"N\",\n\t\"NJ\":\"NJ\",\n\t\"Ó\":\"O\",\n\t\"Ŏ\":\"O\",\n\t\"Ǒ\":\"O\",\n\t\"Ô\":\"O\",\n\t\"Ố\":\"O\",\n\t\"Ộ\":\"O\",\n\t\"Ồ\":\"O\",\n\t\"Ổ\":\"O\",\n\t\"Ỗ\":\"O\",\n\t\"Ö\":\"O\",\n\t\"Ȫ\":\"O\",\n\t\"Ȯ\":\"O\",\n\t\"Ȱ\":\"O\",\n\t\"Ọ\":\"O\",\n\t\"Ő\":\"O\",\n\t\"Ȍ\":\"O\",\n\t\"Ò\":\"O\",\n\t\"Ỏ\":\"O\",\n\t\"Ơ\":\"O\",\n\t\"Ớ\":\"O\",\n\t\"Ợ\":\"O\",\n\t\"Ờ\":\"O\",\n\t\"Ở\":\"O\",\n\t\"Ỡ\":\"O\",\n\t\"Ȏ\":\"O\",\n\t\"Ꝋ\":\"O\",\n\t\"Ꝍ\":\"O\",\n\t\"Ō\":\"O\",\n\t\"Ṓ\":\"O\",\n\t\"Ṑ\":\"O\",\n\t\"Ɵ\":\"O\",\n\t\"Ǫ\":\"O\",\n\t\"Ǭ\":\"O\",\n\t\"Ø\":\"O\",\n\t\"Ǿ\":\"O\",\n\t\"Õ\":\"O\",\n\t\"Ṍ\":\"O\",\n\t\"Ṏ\":\"O\",\n\t\"Ȭ\":\"O\",\n\t\"Ƣ\":\"OI\",\n\t\"Ꝏ\":\"OO\",\n\t\"Ɛ\":\"E\",\n\t\"Ɔ\":\"O\",\n\t\"Ȣ\":\"OU\",\n\t\"Ṕ\":\"P\",\n\t\"Ṗ\":\"P\",\n\t\"Ꝓ\":\"P\",\n\t\"Ƥ\":\"P\",\n\t\"Ꝕ\":\"P\",\n\t\"Ᵽ\":\"P\",\n\t\"Ꝑ\":\"P\",\n\t\"Ꝙ\":\"Q\",\n\t\"Ꝗ\":\"Q\",\n\t\"Ŕ\":\"R\",\n\t\"Ř\":\"R\",\n\t\"Ŗ\":\"R\",\n\t\"Ṙ\":\"R\",\n\t\"Ṛ\":\"R\",\n\t\"Ṝ\":\"R\",\n\t\"Ȑ\":\"R\",\n\t\"Ȓ\":\"R\",\n\t\"Ṟ\":\"R\",\n\t\"Ɍ\":\"R\",\n\t\"Ɽ\":\"R\",\n\t\"Ꜿ\":\"C\",\n\t\"Ǝ\":\"E\",\n\t\"Ś\":\"S\",\n\t\"Ṥ\":\"S\",\n\t\"Š\":\"S\",\n\t\"Ṧ\":\"S\",\n\t\"Ş\":\"S\",\n\t\"Ŝ\":\"S\",\n\t\"Ș\":\"S\",\n\t\"Ṡ\":\"S\",\n\t\"Ṣ\":\"S\",\n\t\"Ṩ\":\"S\",\n\t\"Ť\":\"T\",\n\t\"Ţ\":\"T\",\n\t\"Ṱ\":\"T\",\n\t\"Ț\":\"T\",\n\t\"Ⱦ\":\"T\",\n\t\"Ṫ\":\"T\",\n\t\"Ṭ\":\"T\",\n\t\"Ƭ\":\"T\",\n\t\"Ṯ\":\"T\",\n\t\"Ʈ\":\"T\",\n\t\"Ŧ\":\"T\",\n\t\"Ɐ\":\"A\",\n\t\"Ꞁ\":\"L\",\n\t\"Ɯ\":\"M\",\n\t\"Ʌ\":\"V\",\n\t\"Ꜩ\":\"TZ\",\n\t\"Ú\":\"U\",\n\t\"Ŭ\":\"U\",\n\t\"Ǔ\":\"U\",\n\t\"Û\":\"U\",\n\t\"Ṷ\":\"U\",\n\t\"Ü\":\"U\",\n\t\"Ǘ\":\"U\",\n\t\"Ǚ\":\"U\",\n\t\"Ǜ\":\"U\",\n\t\"Ǖ\":\"U\",\n\t\"Ṳ\":\"U\",\n\t\"Ụ\":\"U\",\n\t\"Ű\":\"U\",\n\t\"Ȕ\":\"U\",\n\t\"Ù\":\"U\",\n\t\"Ủ\":\"U\",\n\t\"Ư\":\"U\",\n\t\"Ứ\":\"U\",\n\t\"Ự\":\"U\",\n\t\"Ừ\":\"U\",\n\t\"Ử\":\"U\",\n\t\"Ữ\":\"U\",\n\t\"Ȗ\":\"U\",\n\t\"Ū\":\"U\",\n\t\"Ṻ\":\"U\",\n\t\"Ų\":\"U\",\n\t\"Ů\":\"U\",\n\t\"Ũ\":\"U\",\n\t\"Ṹ\":\"U\",\n\t\"Ṵ\":\"U\",\n\t\"Ꝟ\":\"V\",\n\t\"Ṿ\":\"V\",\n\t\"Ʋ\":\"V\",\n\t\"Ṽ\":\"V\",\n\t\"Ꝡ\":\"VY\",\n\t\"Ẃ\":\"W\",\n\t\"Ŵ\":\"W\",\n\t\"Ẅ\":\"W\",\n\t\"Ẇ\":\"W\",\n\t\"Ẉ\":\"W\",\n\t\"Ẁ\":\"W\",\n\t\"Ⱳ\":\"W\",\n\t\"Ẍ\":\"X\",\n\t\"Ẋ\":\"X\",\n\t\"Ý\":\"Y\",\n\t\"Ŷ\":\"Y\",\n\t\"Ÿ\":\"Y\",\n\t\"Ẏ\":\"Y\",\n\t\"Ỵ\":\"Y\",\n\t\"Ỳ\":\"Y\",\n\t\"Ƴ\":\"Y\",\n\t\"Ỷ\":\"Y\",\n\t\"Ỿ\":\"Y\",\n\t\"Ȳ\":\"Y\",\n\t\"Ɏ\":\"Y\",\n\t\"Ỹ\":\"Y\",\n\t\"Ź\":\"Z\",\n\t\"Ž\":\"Z\",\n\t\"Ẑ\":\"Z\",\n\t\"Ⱬ\":\"Z\",\n\t\"Ż\":\"Z\",\n\t\"Ẓ\":\"Z\",\n\t\"Ȥ\":\"Z\",\n\t\"Ẕ\":\"Z\",\n\t\"Ƶ\":\"Z\",\n\t\"IJ\":\"IJ\",\n\t\"Œ\":\"OE\",\n\t\"ᴀ\":\"A\",\n\t\"ᴁ\":\"AE\",\n\t\"ʙ\":\"B\",\n\t\"ᴃ\":\"B\",\n\t\"ᴄ\":\"C\",\n\t\"ᴅ\":\"D\",\n\t\"ᴇ\":\"E\",\n\t\"ꜰ\":\"F\",\n\t\"ɢ\":\"G\",\n\t\"ʛ\":\"G\",\n\t\"ʜ\":\"H\",\n\t\"ɪ\":\"I\",\n\t\"ʁ\":\"R\",\n\t\"ᴊ\":\"J\",\n\t\"ᴋ\":\"K\",\n\t\"ʟ\":\"L\",\n\t\"ᴌ\":\"L\",\n\t\"ᴍ\":\"M\",\n\t\"ɴ\":\"N\",\n\t\"ᴏ\":\"O\",\n\t\"ɶ\":\"OE\",\n\t\"ᴐ\":\"O\",\n\t\"ᴕ\":\"OU\",\n\t\"ᴘ\":\"P\",\n\t\"ʀ\":\"R\",\n\t\"ᴎ\":\"N\",\n\t\"ᴙ\":\"R\",\n\t\"ꜱ\":\"S\",\n\t\"ᴛ\":\"T\",\n\t\"ⱻ\":\"E\",\n\t\"ᴚ\":\"R\",\n\t\"ᴜ\":\"U\",\n\t\"ᴠ\":\"V\",\n\t\"ᴡ\":\"W\",\n\t\"ʏ\":\"Y\",\n\t\"ᴢ\":\"Z\",\n\t\"á\":\"a\",\n\t\"ă\":\"a\",\n\t\"ắ\":\"a\",\n\t\"ặ\":\"a\",\n\t\"ằ\":\"a\",\n\t\"ẳ\":\"a\",\n\t\"ẵ\":\"a\",\n\t\"ǎ\":\"a\",\n\t\"â\":\"a\",\n\t\"ấ\":\"a\",\n\t\"ậ\":\"a\",\n\t\"ầ\":\"a\",\n\t\"ẩ\":\"a\",\n\t\"ẫ\":\"a\",\n\t\"ä\":\"a\",\n\t\"ǟ\":\"a\",\n\t\"ȧ\":\"a\",\n\t\"ǡ\":\"a\",\n\t\"ạ\":\"a\",\n\t\"ȁ\":\"a\",\n\t\"à\":\"a\",\n\t\"ả\":\"a\",\n\t\"ȃ\":\"a\",\n\t\"ā\":\"a\",\n\t\"ą\":\"a\",\n\t\"ᶏ\":\"a\",\n\t\"ẚ\":\"a\",\n\t\"å\":\"a\",\n\t\"ǻ\":\"a\",\n\t\"ḁ\":\"a\",\n\t\"ⱥ\":\"a\",\n\t\"ã\":\"a\",\n\t\"ꜳ\":\"aa\",\n\t\"æ\":\"ae\",\n\t\"ǽ\":\"ae\",\n\t\"ǣ\":\"ae\",\n\t\"ꜵ\":\"ao\",\n\t\"ꜷ\":\"au\",\n\t\"ꜹ\":\"av\",\n\t\"ꜻ\":\"av\",\n\t\"ꜽ\":\"ay\",\n\t\"ḃ\":\"b\",\n\t\"ḅ\":\"b\",\n\t\"ɓ\":\"b\",\n\t\"ḇ\":\"b\",\n\t\"ᵬ\":\"b\",\n\t\"ᶀ\":\"b\",\n\t\"ƀ\":\"b\",\n\t\"ƃ\":\"b\",\n\t\"ɵ\":\"o\",\n\t\"ć\":\"c\",\n\t\"č\":\"c\",\n\t\"ç\":\"c\",\n\t\"ḉ\":\"c\",\n\t\"ĉ\":\"c\",\n\t\"ɕ\":\"c\",\n\t\"ċ\":\"c\",\n\t\"ƈ\":\"c\",\n\t\"ȼ\":\"c\",\n\t\"ď\":\"d\",\n\t\"ḑ\":\"d\",\n\t\"ḓ\":\"d\",\n\t\"ȡ\":\"d\",\n\t\"ḋ\":\"d\",\n\t\"ḍ\":\"d\",\n\t\"ɗ\":\"d\",\n\t\"ᶑ\":\"d\",\n\t\"ḏ\":\"d\",\n\t\"ᵭ\":\"d\",\n\t\"ᶁ\":\"d\",\n\t\"đ\":\"d\",\n\t\"ɖ\":\"d\",\n\t\"ƌ\":\"d\",\n\t\"ı\":\"i\",\n\t\"ȷ\":\"j\",\n\t\"ɟ\":\"j\",\n\t\"ʄ\":\"j\",\n\t\"dz\":\"dz\",\n\t\"dž\":\"dz\",\n\t\"é\":\"e\",\n\t\"ĕ\":\"e\",\n\t\"ě\":\"e\",\n\t\"ȩ\":\"e\",\n\t\"ḝ\":\"e\",\n\t\"ê\":\"e\",\n\t\"ế\":\"e\",\n\t\"ệ\":\"e\",\n\t\"ề\":\"e\",\n\t\"ể\":\"e\",\n\t\"ễ\":\"e\",\n\t\"ḙ\":\"e\",\n\t\"ë\":\"e\",\n\t\"ė\":\"e\",\n\t\"ẹ\":\"e\",\n\t\"ȅ\":\"e\",\n\t\"è\":\"e\",\n\t\"ẻ\":\"e\",\n\t\"ȇ\":\"e\",\n\t\"ē\":\"e\",\n\t\"ḗ\":\"e\",\n\t\"ḕ\":\"e\",\n\t\"ⱸ\":\"e\",\n\t\"ę\":\"e\",\n\t\"ᶒ\":\"e\",\n\t\"ɇ\":\"e\",\n\t\"ẽ\":\"e\",\n\t\"ḛ\":\"e\",\n\t\"ꝫ\":\"et\",\n\t\"ḟ\":\"f\",\n\t\"ƒ\":\"f\",\n\t\"ᵮ\":\"f\",\n\t\"ᶂ\":\"f\",\n\t\"ǵ\":\"g\",\n\t\"ğ\":\"g\",\n\t\"ǧ\":\"g\",\n\t\"ģ\":\"g\",\n\t\"ĝ\":\"g\",\n\t\"ġ\":\"g\",\n\t\"ɠ\":\"g\",\n\t\"ḡ\":\"g\",\n\t\"ᶃ\":\"g\",\n\t\"ǥ\":\"g\",\n\t\"ḫ\":\"h\",\n\t\"ȟ\":\"h\",\n\t\"ḩ\":\"h\",\n\t\"ĥ\":\"h\",\n\t\"ⱨ\":\"h\",\n\t\"ḧ\":\"h\",\n\t\"ḣ\":\"h\",\n\t\"ḥ\":\"h\",\n\t\"ɦ\":\"h\",\n\t\"ẖ\":\"h\",\n\t\"ħ\":\"h\",\n\t\"ƕ\":\"hv\",\n\t\"í\":\"i\",\n\t\"ĭ\":\"i\",\n\t\"ǐ\":\"i\",\n\t\"î\":\"i\",\n\t\"ï\":\"i\",\n\t\"ḯ\":\"i\",\n\t\"ị\":\"i\",\n\t\"ȉ\":\"i\",\n\t\"ì\":\"i\",\n\t\"ỉ\":\"i\",\n\t\"ȋ\":\"i\",\n\t\"ī\":\"i\",\n\t\"į\":\"i\",\n\t\"ᶖ\":\"i\",\n\t\"ɨ\":\"i\",\n\t\"ĩ\":\"i\",\n\t\"ḭ\":\"i\",\n\t\"ꝺ\":\"d\",\n\t\"ꝼ\":\"f\",\n\t\"ᵹ\":\"g\",\n\t\"ꞃ\":\"r\",\n\t\"ꞅ\":\"s\",\n\t\"ꞇ\":\"t\",\n\t\"ꝭ\":\"is\",\n\t\"ǰ\":\"j\",\n\t\"ĵ\":\"j\",\n\t\"ʝ\":\"j\",\n\t\"ɉ\":\"j\",\n\t\"ḱ\":\"k\",\n\t\"ǩ\":\"k\",\n\t\"ķ\":\"k\",\n\t\"ⱪ\":\"k\",\n\t\"ꝃ\":\"k\",\n\t\"ḳ\":\"k\",\n\t\"ƙ\":\"k\",\n\t\"ḵ\":\"k\",\n\t\"ᶄ\":\"k\",\n\t\"ꝁ\":\"k\",\n\t\"ꝅ\":\"k\",\n\t\"ĺ\":\"l\",\n\t\"ƚ\":\"l\",\n\t\"ɬ\":\"l\",\n\t\"ľ\":\"l\",\n\t\"ļ\":\"l\",\n\t\"ḽ\":\"l\",\n\t\"ȴ\":\"l\",\n\t\"ḷ\":\"l\",\n\t\"ḹ\":\"l\",\n\t\"ⱡ\":\"l\",\n\t\"ꝉ\":\"l\",\n\t\"ḻ\":\"l\",\n\t\"ŀ\":\"l\",\n\t\"ɫ\":\"l\",\n\t\"ᶅ\":\"l\",\n\t\"ɭ\":\"l\",\n\t\"ł\":\"l\",\n\t\"lj\":\"lj\",\n\t\"ſ\":\"s\",\n\t\"ẜ\":\"s\",\n\t\"ẛ\":\"s\",\n\t\"ẝ\":\"s\",\n\t\"ḿ\":\"m\",\n\t\"ṁ\":\"m\",\n\t\"ṃ\":\"m\",\n\t\"ɱ\":\"m\",\n\t\"ᵯ\":\"m\",\n\t\"ᶆ\":\"m\",\n\t\"ń\":\"n\",\n\t\"ň\":\"n\",\n\t\"ņ\":\"n\",\n\t\"ṋ\":\"n\",\n\t\"ȵ\":\"n\",\n\t\"ṅ\":\"n\",\n\t\"ṇ\":\"n\",\n\t\"ǹ\":\"n\",\n\t\"ɲ\":\"n\",\n\t\"ṉ\":\"n\",\n\t\"ƞ\":\"n\",\n\t\"ᵰ\":\"n\",\n\t\"ᶇ\":\"n\",\n\t\"ɳ\":\"n\",\n\t\"ñ\":\"n\",\n\t\"nj\":\"nj\",\n\t\"ó\":\"o\",\n\t\"ŏ\":\"o\",\n\t\"ǒ\":\"o\",\n\t\"ô\":\"o\",\n\t\"ố\":\"o\",\n\t\"ộ\":\"o\",\n\t\"ồ\":\"o\",\n\t\"ổ\":\"o\",\n\t\"ỗ\":\"o\",\n\t\"ö\":\"o\",\n\t\"ȫ\":\"o\",\n\t\"ȯ\":\"o\",\n\t\"ȱ\":\"o\",\n\t\"ọ\":\"o\",\n\t\"ő\":\"o\",\n\t\"ȍ\":\"o\",\n\t\"ò\":\"o\",\n\t\"ỏ\":\"o\",\n\t\"ơ\":\"o\",\n\t\"ớ\":\"o\",\n\t\"ợ\":\"o\",\n\t\"ờ\":\"o\",\n\t\"ở\":\"o\",\n\t\"ỡ\":\"o\",\n\t\"ȏ\":\"o\",\n\t\"ꝋ\":\"o\",\n\t\"ꝍ\":\"o\",\n\t\"ⱺ\":\"o\",\n\t\"ō\":\"o\",\n\t\"ṓ\":\"o\",\n\t\"ṑ\":\"o\",\n\t\"ǫ\":\"o\",\n\t\"ǭ\":\"o\",\n\t\"ø\":\"o\",\n\t\"ǿ\":\"o\",\n\t\"õ\":\"o\",\n\t\"ṍ\":\"o\",\n\t\"ṏ\":\"o\",\n\t\"ȭ\":\"o\",\n\t\"ƣ\":\"oi\",\n\t\"ꝏ\":\"oo\",\n\t\"ɛ\":\"e\",\n\t\"ᶓ\":\"e\",\n\t\"ɔ\":\"o\",\n\t\"ᶗ\":\"o\",\n\t\"ȣ\":\"ou\",\n\t\"ṕ\":\"p\",\n\t\"ṗ\":\"p\",\n\t\"ꝓ\":\"p\",\n\t\"ƥ\":\"p\",\n\t\"ᵱ\":\"p\",\n\t\"ᶈ\":\"p\",\n\t\"ꝕ\":\"p\",\n\t\"ᵽ\":\"p\",\n\t\"ꝑ\":\"p\",\n\t\"ꝙ\":\"q\",\n\t\"ʠ\":\"q\",\n\t\"ɋ\":\"q\",\n\t\"ꝗ\":\"q\",\n\t\"ŕ\":\"r\",\n\t\"ř\":\"r\",\n\t\"ŗ\":\"r\",\n\t\"ṙ\":\"r\",\n\t\"ṛ\":\"r\",\n\t\"ṝ\":\"r\",\n\t\"ȑ\":\"r\",\n\t\"ɾ\":\"r\",\n\t\"ᵳ\":\"r\",\n\t\"ȓ\":\"r\",\n\t\"ṟ\":\"r\",\n\t\"ɼ\":\"r\",\n\t\"ᵲ\":\"r\",\n\t\"ᶉ\":\"r\",\n\t\"ɍ\":\"r\",\n\t\"ɽ\":\"r\",\n\t\"ↄ\":\"c\",\n\t\"ꜿ\":\"c\",\n\t\"ɘ\":\"e\",\n\t\"ɿ\":\"r\",\n\t\"ś\":\"s\",\n\t\"ṥ\":\"s\",\n\t\"š\":\"s\",\n\t\"ṧ\":\"s\",\n\t\"ş\":\"s\",\n\t\"ŝ\":\"s\",\n\t\"ș\":\"s\",\n\t\"ṡ\":\"s\",\n\t\"ṣ\":\"s\",\n\t\"ṩ\":\"s\",\n\t\"ʂ\":\"s\",\n\t\"ᵴ\":\"s\",\n\t\"ᶊ\":\"s\",\n\t\"ȿ\":\"s\",\n\t\"ɡ\":\"g\",\n\t\"ᴑ\":\"o\",\n\t\"ᴓ\":\"o\",\n\t\"ᴝ\":\"u\",\n\t\"ť\":\"t\",\n\t\"ţ\":\"t\",\n\t\"ṱ\":\"t\",\n\t\"ț\":\"t\",\n\t\"ȶ\":\"t\",\n\t\"ẗ\":\"t\",\n\t\"ⱦ\":\"t\",\n\t\"ṫ\":\"t\",\n\t\"ṭ\":\"t\",\n\t\"ƭ\":\"t\",\n\t\"ṯ\":\"t\",\n\t\"ᵵ\":\"t\",\n\t\"ƫ\":\"t\",\n\t\"ʈ\":\"t\",\n\t\"ŧ\":\"t\",\n\t\"ᵺ\":\"th\",\n\t\"ɐ\":\"a\",\n\t\"ᴂ\":\"ae\",\n\t\"ǝ\":\"e\",\n\t\"ᵷ\":\"g\",\n\t\"ɥ\":\"h\",\n\t\"ʮ\":\"h\",\n\t\"ʯ\":\"h\",\n\t\"ᴉ\":\"i\",\n\t\"ʞ\":\"k\",\n\t\"ꞁ\":\"l\",\n\t\"ɯ\":\"m\",\n\t\"ɰ\":\"m\",\n\t\"ᴔ\":\"oe\",\n\t\"ɹ\":\"r\",\n\t\"ɻ\":\"r\",\n\t\"ɺ\":\"r\",\n\t\"ⱹ\":\"r\",\n\t\"ʇ\":\"t\",\n\t\"ʌ\":\"v\",\n\t\"ʍ\":\"w\",\n\t\"ʎ\":\"y\",\n\t\"ꜩ\":\"tz\",\n\t\"ú\":\"u\",\n\t\"ŭ\":\"u\",\n\t\"ǔ\":\"u\",\n\t\"û\":\"u\",\n\t\"ṷ\":\"u\",\n\t\"ü\":\"u\",\n\t\"ǘ\":\"u\",\n\t\"ǚ\":\"u\",\n\t\"ǜ\":\"u\",\n\t\"ǖ\":\"u\",\n\t\"ṳ\":\"u\",\n\t\"ụ\":\"u\",\n\t\"ű\":\"u\",\n\t\"ȕ\":\"u\",\n\t\"ù\":\"u\",\n\t\"ủ\":\"u\",\n\t\"ư\":\"u\",\n\t\"ứ\":\"u\",\n\t\"ự\":\"u\",\n\t\"ừ\":\"u\",\n\t\"ử\":\"u\",\n\t\"ữ\":\"u\",\n\t\"ȗ\":\"u\",\n\t\"ū\":\"u\",\n\t\"ṻ\":\"u\",\n\t\"ų\":\"u\",\n\t\"ᶙ\":\"u\",\n\t\"ů\":\"u\",\n\t\"ũ\":\"u\",\n\t\"ṹ\":\"u\",\n\t\"ṵ\":\"u\",\n\t\"ᵫ\":\"ue\",\n\t\"ꝸ\":\"um\",\n\t\"ⱴ\":\"v\",\n\t\"ꝟ\":\"v\",\n\t\"ṿ\":\"v\",\n\t\"ʋ\":\"v\",\n\t\"ᶌ\":\"v\",\n\t\"ⱱ\":\"v\",\n\t\"ṽ\":\"v\",\n\t\"ꝡ\":\"vy\",\n\t\"ẃ\":\"w\",\n\t\"ŵ\":\"w\",\n\t\"ẅ\":\"w\",\n\t\"ẇ\":\"w\",\n\t\"ẉ\":\"w\",\n\t\"ẁ\":\"w\",\n\t\"ⱳ\":\"w\",\n\t\"ẘ\":\"w\",\n\t\"ẍ\":\"x\",\n\t\"ẋ\":\"x\",\n\t\"ᶍ\":\"x\",\n\t\"ý\":\"y\",\n\t\"ŷ\":\"y\",\n\t\"ÿ\":\"y\",\n\t\"ẏ\":\"y\",\n\t\"ỵ\":\"y\",\n\t\"ỳ\":\"y\",\n\t\"ƴ\":\"y\",\n\t\"ỷ\":\"y\",\n\t\"ỿ\":\"y\",\n\t\"ȳ\":\"y\",\n\t\"ẙ\":\"y\",\n\t\"ɏ\":\"y\",\n\t\"ỹ\":\"y\",\n\t\"ź\":\"z\",\n\t\"ž\":\"z\",\n\t\"ẑ\":\"z\",\n\t\"ʑ\":\"z\",\n\t\"ⱬ\":\"z\",\n\t\"ż\":\"z\",\n\t\"ẓ\":\"z\",\n\t\"ȥ\":\"z\",\n\t\"ẕ\":\"z\",\n\t\"ᵶ\":\"z\",\n\t\"ᶎ\":\"z\",\n\t\"ʐ\":\"z\",\n\t\"ƶ\":\"z\",\n\t\"ɀ\":\"z\",\n\t\"ff\":\"ff\",\n\t\"ffi\":\"ffi\",\n\t\"ffl\":\"ffl\",\n\t\"fi\":\"fi\",\n\t\"fl\":\"fl\",\n\t\"ij\":\"ij\",\n\t\"œ\":\"oe\",\n\t\"st\":\"st\",\n\t\"ₐ\":\"a\",\n\t\"ₑ\":\"e\",\n\t\"ᵢ\":\"i\",\n\t\"ⱼ\":\"j\",\n\t\"ₒ\":\"o\",\n\t\"ᵣ\":\"r\",\n\t\"ᵤ\":\"u\",\n\t\"ᵥ\":\"v\",\n\t\"ₓ\":\"x\",\n\t\"Ё\":\"YO\",\n\t\"Й\":\"I\",\n\t\"Ц\":\"TS\",\n\t\"У\":\"U\",\n\t\"К\":\"K\",\n\t\"Е\":\"E\",\n\t\"Н\":\"N\",\n\t\"Г\":\"G\",\n\t\"Ш\":\"SH\",\n\t\"Щ\":\"SCH\",\n\t\"З\":\"Z\",\n\t\"Х\":\"H\",\n\t\"Ъ\":\"'\",\n\t\"ё\":\"yo\",\n\t\"й\":\"i\",\n\t\"ц\":\"ts\",\n\t\"у\":\"u\",\n\t\"к\":\"k\",\n\t\"е\":\"e\",\n\t\"н\":\"n\",\n\t\"г\":\"g\",\n\t\"ш\":\"sh\",\n\t\"щ\":\"sch\",\n\t\"з\":\"z\",\n\t\"х\":\"h\",\n\t\"ъ\":\"'\",\n\t\"Ф\":\"F\",\n\t\"Ы\":\"I\",\n\t\"В\":\"V\",\n\t\"А\":\"a\",\n\t\"П\":\"P\",\n\t\"Р\":\"R\",\n\t\"О\":\"O\",\n\t\"Л\":\"L\",\n\t\"Д\":\"D\",\n\t\"Ж\":\"ZH\",\n\t\"Э\":\"E\",\n\t\"ф\":\"f\",\n\t\"ы\":\"i\",\n\t\"в\":\"v\",\n\t\"а\":\"a\",\n\t\"п\":\"p\",\n\t\"р\":\"r\",\n\t\"о\":\"o\",\n\t\"л\":\"l\",\n\t\"д\":\"d\",\n\t\"ж\":\"zh\",\n\t\"э\":\"e\",\n\t\"Я\":\"Ya\",\n\t\"Ч\":\"CH\",\n\t\"С\":\"S\",\n\t\"М\":\"M\",\n\t\"И\":\"I\",\n\t\"Т\":\"T\",\n\t\"Ь\":\"'\",\n\t\"Б\":\"B\",\n\t\"Ю\":\"YU\",\n\t\"я\":\"ya\",\n\t\"ч\":\"ch\",\n\t\"с\":\"s\",\n\t\"м\":\"m\",\n\t\"и\":\"i\",\n\t\"т\":\"t\",\n\t\"ь\":\"'\",\n\t\"б\":\"b\",\n\t\"ю\":\"yu\"\n};\n\nexports.transliterate = function(str) {\n\treturn str.replace(/[^A-Za-z0-9\\[\\] ]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || ch\n\t});\n};\n\nexports.transliterateToSafeASCII = function(str) {\n\treturn str.replace(/[^\\x00-\\x7F]/g,function(ch) {\n\t\treturn exports.transliterationPairs[ch] || \"\"\n\t});\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/utils/utils.js": {
            "title": "$:/core/modules/utils/utils.js",
            "text": "/*\\\ntitle: $:/core/modules/utils/utils.js\ntype: application/javascript\nmodule-type: utils\n\nVarious static utility functions.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar base64utf8 = require(\"$:/core/modules/utils/base64-utf8/base64-utf8.module.js\");\n\n/*\nDisplay a message, in colour if we're on a terminal\n*/\nexports.log = function(text,colour) {\n\tconsole.log($tw.node ? exports.terminalColour(colour) + text + exports.terminalColour() : text);\n};\n\nexports.terminalColour = function(colour) {\n\tif(!$tw.browser && $tw.node && process.stdout.isTTY) {\n\t\tif(colour) {\n\t\t\tvar code = exports.terminalColourLookup[colour];\n\t\t\tif(code) {\n\t\t\t\treturn \"\\x1b[\" + code + \"m\";\n\t\t\t}\n\t\t} else {\n\t\t\treturn \"\\x1b[0m\"; // Cancel colour\n\t\t}\n\t}\n\treturn \"\";\n};\n\nexports.terminalColourLookup = {\n\t\"black\": \"0;30\",\n\t\"red\": \"0;31\",\n\t\"green\": \"0;32\",\n\t\"brown/orange\": \"0;33\",\n\t\"blue\": \"0;34\",\n\t\"purple\": \"0;35\",\n\t\"cyan\": \"0;36\",\n\t\"light gray\": \"0;37\"\n};\n\n/*\nDisplay a warning, in colour if we're on a terminal\n*/\nexports.warning = function(text) {\n\texports.log(text,\"brown/orange\");\n};\n\n/*\nReturn the integer represented by the str (string).\nReturn the dflt (default) parameter if str is not a base-10 number.\n*/\nexports.getInt = function(str,deflt) {\n\tvar i = parseInt(str,10);\n\treturn isNaN(i) ? deflt : i;\n}\n\n/*\nRepeatedly replaces a substring within a string. Like String.prototype.replace, but without any of the default special handling of $ sequences in the replace string\n*/\nexports.replaceString = function(text,search,replace) {\n\treturn text.replace(search,function() {\n\t\treturn replace;\n\t});\n};\n\n/*\nRepeats a string\n*/\nexports.repeat = function(str,count) {\n\tvar result = \"\";\n\tfor(var t=0;t<count;t++) {\n\t\tresult += str;\n\t}\n\treturn result;\n};\n\n/*\nTrim whitespace from the start and end of a string\nThanks to Steven Levithan, http://blog.stevenlevithan.com/archives/faster-trim-javascript\n*/\nexports.trim = function(str) {\n\tif(typeof str === \"string\") {\n\t\treturn str.replace(/^\\s\\s*/, '').replace(/\\s\\s*$/, '');\n\t} else {\n\t\treturn str;\n\t}\n};\n\n/*\nConvert a string to sentence case (ie capitalise first letter)\n*/\nexports.toSentenceCase = function(str) {\n\treturn (str || \"\").replace(/^\\S/, function(c) {return c.toUpperCase();});\n}\n\n/*\nConvert a string to title case (ie capitalise each initial letter)\n*/\nexports.toTitleCase = function(str) {\n\treturn (str || \"\").replace(/(^|\\s)\\S/g, function(c) {return c.toUpperCase();});\n}\n\t\n/*\nFind the line break preceding a given position in a string\nReturns position immediately after that line break, or the start of the string\n*/\nexports.findPrecedingLineBreak = function(text,pos) {\n\tvar result = text.lastIndexOf(\"\\n\",pos - 1);\n\tif(result === -1) {\n\t\tresult = 0;\n\t} else {\n\t\tresult++;\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nFind the line break following a given position in a string\n*/\nexports.findFollowingLineBreak = function(text,pos) {\n\t// Cut to just past the following line break, or to the end of the text\n\tvar result = text.indexOf(\"\\n\",pos);\n\tif(result === -1) {\n\t\tresult = text.length;\n\t} else {\n\t\tif(text.charAt(result) === \"\\r\") {\n\t\t\tresult++;\n\t\t}\n\t}\n\treturn result;\n};\n\n/*\nReturn the number of keys in an object\n*/\nexports.count = function(object) {\n\treturn Object.keys(object || {}).length;\n};\n\n/*\nDetermine whether an array-item is an object-property\n*/\nexports.hopArray = function(object,array) {\n\tfor(var i=0; i<array.length; i++) {\n\t\tif($tw.utils.hop(object,array[i])) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n};\n\n/*\nRemove entries from an array\n\tarray: array to modify\n\tvalue: a single value to remove, or an array of values to remove\n*/\nexports.removeArrayEntries = function(array,value) {\n\tvar t,p;\n\tif($tw.utils.isArray(value)) {\n\t\tfor(t=0; t<value.length; t++) {\n\t\t\tp = array.indexOf(value[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tarray.splice(p,1);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tp = array.indexOf(value);\n\t\tif(p !== -1) {\n\t\t\tarray.splice(p,1);\n\t\t}\n\t}\n};\n\n/*\nCheck whether any members of a hashmap are present in another hashmap\n*/\nexports.checkDependencies = function(dependencies,changes) {\n\tvar hit = false;\n\t$tw.utils.each(changes,function(change,title) {\n\t\tif($tw.utils.hop(dependencies,title)) {\n\t\t\thit = true;\n\t\t}\n\t});\n\treturn hit;\n};\n\nexports.extend = function(object /* [, src] */) {\n\t$tw.utils.each(Array.prototype.slice.call(arguments, 1), function(source) {\n\t\tif(source) {\n\t\t\tfor(var property in source) {\n\t\t\t\tobject[property] = source[property];\n\t\t\t}\n\t\t}\n\t});\n\treturn object;\n};\n\nexports.deepCopy = function(object) {\n\tvar result,t;\n\tif($tw.utils.isArray(object)) {\n\t\t// Copy arrays\n\t\tresult = object.slice(0);\n\t} else if(typeof object === \"object\") {\n\t\tresult = {};\n\t\tfor(t in object) {\n\t\t\tif(object[t] !== undefined) {\n\t\t\t\tresult[t] = $tw.utils.deepCopy(object[t]);\n\t\t\t}\n\t\t}\n\t} else {\n\t\tresult = object;\n\t}\n\treturn result;\n};\n\nexports.extendDeepCopy = function(object,extendedProperties) {\n\tvar result = $tw.utils.deepCopy(object),t;\n\tfor(t in extendedProperties) {\n\t\tif(extendedProperties[t] !== undefined) {\n\t\t\tresult[t] = $tw.utils.deepCopy(extendedProperties[t]);\n\t\t}\n\t}\n\treturn result;\n};\n\nexports.deepFreeze = function deepFreeze(object) {\n\tvar property, key;\n\tif(object) {\n\t\tObject.freeze(object);\n\t\tfor(key in object) {\n\t\t\tproperty = object[key];\n\t\t\tif($tw.utils.hop(object,key) && (typeof property === \"object\") && !Object.isFrozen(property)) {\n\t\t\t\tdeepFreeze(property);\n\t\t\t}\n\t\t}\n\t}\n};\n\nexports.slowInSlowOut = function(t) {\n\treturn (1 - ((Math.cos(t * Math.PI) + 1) / 2));\n};\n\nexports.formatDateString = function(date,template) {\n\tvar result = \"\",\n\t\tt = template,\n\t\tmatches = [\n\t\t\t[/^0hh12/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getHours12(date));\n\t\t\t}],\n\t\t\t[/^wYYYY/, function() {\n\t\t\t\treturn $tw.utils.getYearForWeekNo(date);\n\t\t\t}],\n\t\t\t[/^hh12/, function() {\n\t\t\t\treturn $tw.utils.getHours12(date);\n\t\t\t}],\n\t\t\t[/^DDth/, function() {\n\t\t\t\treturn date.getDate() + $tw.utils.getDaySuffix(date);\n\t\t\t}],\n\t\t\t[/^YYYY/, function() {\n\t\t\t\treturn date.getFullYear();\n\t\t\t}],\n\t\t\t[/^0hh/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getHours());\n\t\t\t}],\n\t\t\t[/^0mm/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMinutes());\n\t\t\t}],\n\t\t\t[/^0ss/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getSeconds());\n\t\t\t}],\n\t\t\t[/^0XXX/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMilliseconds(),3);\n\t\t\t}],\n\t\t\t[/^0DD/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getDate());\n\t\t\t}],\n\t\t\t[/^0MM/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getMonth()+1);\n\t\t\t}],\n\t\t\t[/^0WW/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getWeek(date));\n\t\t\t}],\n\t\t\t[/^ddd/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^mmm/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Short/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^DDD/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Day/\" + date.getDay());\n\t\t\t}],\n\t\t\t[/^MMM/, function() {\n\t\t\t\treturn $tw.language.getString(\"Date/Long/Month/\" + (date.getMonth() + 1));\n\t\t\t}],\n\t\t\t[/^TZD/, function() {\n\t\t\t\tvar tz = date.getTimezoneOffset(),\n\t\t\t\tatz = Math.abs(tz);\n\t\t\t\treturn (tz < 0 ? '+' : '-') + $tw.utils.pad(Math.floor(atz / 60)) + ':' + $tw.utils.pad(atz % 60);\n\t\t\t}],\n\t\t\t[/^wYY/, function() {\n\t\t\t\treturn $tw.utils.pad($tw.utils.getYearForWeekNo(date) - 2000);\n\t\t\t}],\n\t\t\t[/^[ap]m/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toLowerCase();\n\t\t\t}],\n\t\t\t[/^hh/, function() {\n\t\t\t\treturn date.getHours();\n\t\t\t}],\n\t\t\t[/^mm/, function() {\n\t\t\t\treturn date.getMinutes();\n\t\t\t}],\n\t\t\t[/^ss/, function() {\n\t\t\t\treturn date.getSeconds();\n\t\t\t}],\n\t\t\t[/^XXX/, function() {\n\t\t\t\treturn date.getMilliseconds();\n\t\t\t}],\n\t\t\t[/^[AP]M/, function() {\n\t\t\t\treturn $tw.utils.getAmPm(date).toUpperCase();\n\t\t\t}],\n\t\t\t[/^DD/, function() {\n\t\t\t\treturn date.getDate();\n\t\t\t}],\n\t\t\t[/^MM/, function() {\n\t\t\t\treturn date.getMonth() + 1;\n\t\t\t}],\n\t\t\t[/^WW/, function() {\n\t\t\t\treturn $tw.utils.getWeek(date);\n\t\t\t}],\n\t\t\t[/^YY/, function() {\n\t\t\t\treturn $tw.utils.pad(date.getFullYear() - 2000);\n\t\t\t}]\n\t\t];\n\t// If the user wants everything in UTC, shift the datestamp\n\t// Optimize for format string that essentially means\n\t// 'return raw UTC (tiddlywiki style) date string.'\n\tif(t.indexOf(\"[UTC]\") == 0 ) {\n\t\tif(t == \"[UTC]YYYY0MM0DD0hh0mm0ssXXX\")\n\t\t\treturn $tw.utils.stringifyDate(new Date());\n\t\tvar offset = date.getTimezoneOffset() ; // in minutes\n\t\tdate = new Date(date.getTime()+offset*60*1000) ;\n\t\tt = t.substr(5) ;\n\t}\n\twhile(t.length){\n\t\tvar matchString = \"\";\n\t\t$tw.utils.each(matches, function(m) {\n\t\t\tvar match = m[0].exec(t);\n\t\t\tif(match) {\n\t\t\t\tmatchString = m[1].call();\n\t\t\t\tt = t.substr(match[0].length);\n\t\t\t\treturn false;\n\t\t\t}\n\t\t});\n\t\tif(matchString) {\n\t\t\tresult += matchString;\n\t\t} else {\n\t\t\tresult += t.charAt(0);\n\t\t\tt = t.substr(1);\n\t\t}\n\t}\n\tresult = result.replace(/\\\\(.)/g,\"$1\");\n\treturn result;\n};\n\nexports.getAmPm = function(date) {\n\treturn $tw.language.getString(\"Date/Period/\" + (date.getHours() >= 12 ? \"pm\" : \"am\"));\n};\n\nexports.getDaySuffix = function(date) {\n\treturn $tw.language.getString(\"Date/DaySuffix/\" + date.getDate());\n};\n\nexports.getWeek = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week to calculate weekNo\n\tvar x = new Date(dt.getFullYear(),0,1);\n\tvar n = Math.floor((dt.getTime() - x.getTime()) / 86400000);\n\treturn Math.floor(n / 7) + 1;\n};\n\nexports.getYearForWeekNo = function(date) {\n\tvar dt = new Date(date.getTime());\n\tvar d = dt.getDay();\n\tif(d === 0) {\n\t\td = 7; // JavaScript Sun=0, ISO Sun=7\n\t}\n\tdt.setTime(dt.getTime() + (4 - d) * 86400000);// shift day to Thurs of same week\n\treturn dt.getFullYear();\n};\n\nexports.getHours12 = function(date) {\n\tvar h = date.getHours();\n\treturn h > 12 ? h-12 : ( h > 0 ? h : 12 );\n};\n\n/*\nConvert a date delta in milliseconds into a string representation of \"23 seconds ago\", \"27 minutes ago\" etc.\n\tdelta: delta in milliseconds\nReturns an object with these members:\n\tdescription: string describing the delta period\n\tupdatePeriod: time in millisecond until the string will be inaccurate\n*/\nexports.getRelativeDate = function(delta) {\n\tvar futurep = false;\n\tif(delta < 0) {\n\t\tdelta = -1 * delta;\n\t\tfuturep = true;\n\t}\n\tvar units = [\n\t\t{name: \"Years\",   duration:      365 * 24 * 60 * 60 * 1000},\n\t\t{name: \"Months\",  duration: (365/12) * 24 * 60 * 60 * 1000},\n\t\t{name: \"Days\",    duration:            24 * 60 * 60 * 1000},\n\t\t{name: \"Hours\",   duration:                 60 * 60 * 1000},\n\t\t{name: \"Minutes\", duration:                      60 * 1000},\n\t\t{name: \"Seconds\", duration:                           1000}\n\t];\n\tfor(var t=0; t<units.length; t++) {\n\t\tvar result = Math.floor(delta / units[t].duration);\n\t\tif(result >= 2) {\n\t\t\treturn {\n\t\t\t\tdelta: delta,\n\t\t\t\tdescription: $tw.language.getString(\n\t\t\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/\" + units[t].name,\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{period: result.toString()}\n\t\t\t\t\t}\n\t\t\t\t),\n\t\t\t\tupdatePeriod: units[t].duration\n\t\t\t};\n\t\t}\n\t}\n\treturn {\n\t\tdelta: delta,\n\t\tdescription: $tw.language.getString(\n\t\t\t\"RelativeDate/\" + (futurep ? \"Future\" : \"Past\") + \"/Second\",\n\t\t\t{variables:\n\t\t\t\t{period: \"1\"}\n\t\t\t}\n\t\t),\n\t\tupdatePeriod: 1000\n\t};\n};\n\n// Convert & to \"&amp;\", < to \"&lt;\", > to \"&gt;\", \" to \"&quot;\"\nexports.htmlEncode = function(s) {\n\tif(s) {\n\t\treturn s.toString().replace(/&/mg,\"&amp;\").replace(/</mg,\"&lt;\").replace(/>/mg,\"&gt;\").replace(/\\\"/mg,\"&quot;\");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n// Converts all HTML entities to their character equivalents\nexports.entityDecode = function(s) {\n\tvar converter = String.fromCodePoint || String.fromCharCode,\n\t\te = s.substr(1,s.length-2), // Strip the & and the ;\n\t\tc;\n\tif(e.charAt(0) === \"#\") {\n\t\tif(e.charAt(1) === \"x\" || e.charAt(1) === \"X\") {\n\t\t\tc = parseInt(e.substr(2),16);\n\t\t} else {\n\t\t\tc = parseInt(e.substr(1),10);\n\t\t}\n\t\tif(isNaN(c)) {\n\t\t\treturn s;\n\t\t} else {\n\t\t\treturn converter(c);\n\t\t}\n\t} else {\n\t\tc = $tw.config.htmlEntities[e];\n\t\tif(c) {\n\t\t\treturn converter(c);\n\t\t} else {\n\t\t\treturn s; // Couldn't convert it as an entity, just return it raw\n\t\t}\n\t}\n};\n\nexports.unescapeLineBreaks = function(s) {\n\treturn s.replace(/\\\\n/mg,\"\\n\").replace(/\\\\b/mg,\" \").replace(/\\\\s/mg,\"\\\\\").replace(/\\r/mg,\"\");\n};\n\n/*\n * Returns an escape sequence for given character. Uses \\x for characters <=\n * 0xFF to save space, \\u for the rest.\n *\n * The code needs to be in sync with th code template in the compilation\n * function for \"action\" nodes.\n */\n// Copied from peg.js, thanks to David Majda\nexports.escape = function(ch) {\n\tvar charCode = ch.charCodeAt(0);\n\tif(charCode <= 0xFF) {\n\t\treturn '\\\\x' + $tw.utils.pad(charCode.toString(16).toUpperCase());\n\t} else {\n\t\treturn '\\\\u' + $tw.utils.pad(charCode.toString(16).toUpperCase(),4);\n\t}\n};\n\n// Turns a string into a legal JavaScript string\n// Copied from peg.js, thanks to David Majda\nexports.stringify = function(s) {\n\t/*\n\t* ECMA-262, 5th ed., 7.8.4: All characters may appear literally in a string\n\t* literal except for the closing quote character, backslash, carriage return,\n\t* line separator, paragraph separator, and line feed. Any character may\n\t* appear in the form of an escape sequence.\n\t*\n\t* For portability, we also escape all non-ASCII characters.\n\t*/\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\')            // backslash\n\t\t.replace(/\"/g, '\\\\\"')              // double quote character\n\t\t.replace(/'/g, \"\\\\'\")              // single quote character\n\t\t.replace(/\\r/g, '\\\\r')             // carriage return\n\t\t.replace(/\\n/g, '\\\\n')             // line feed\n\t\t.replace(/[\\x00-\\x1f\\x80-\\uFFFF]/g, exports.escape); // non-ASCII characters\n};\n\n// Turns a string into a legal JSON string\n// Derived from peg.js, thanks to David Majda\nexports.jsonStringify = function(s) {\n\t// See http://www.json.org/\n\treturn (s || \"\")\n\t\t.replace(/\\\\/g, '\\\\\\\\')            // backslash\n\t\t.replace(/\"/g, '\\\\\"')              // double quote character\n\t\t.replace(/\\r/g, '\\\\r')             // carriage return\n\t\t.replace(/\\n/g, '\\\\n')             // line feed\n\t\t.replace(/\\x08/g, '\\\\b')           // backspace\n\t\t.replace(/\\x0c/g, '\\\\f')           // formfeed\n\t\t.replace(/\\t/g, '\\\\t')             // tab\n\t\t.replace(/[\\x00-\\x1f\\x80-\\uFFFF]/g,function(s) {\n\t\t\treturn '\\\\u' + $tw.utils.pad(s.charCodeAt(0).toString(16).toUpperCase(),4);\n\t\t}); // non-ASCII characters\n};\n\n/*\nEscape the RegExp special characters with a preceding backslash\n*/\nexports.escapeRegExp = function(s) {\n    return s.replace(/[\\-\\/\\\\\\^\\$\\*\\+\\?\\.\\(\\)\\|\\[\\]\\{\\}]/g, '\\\\$&');\n};\n\n// Checks whether a link target is external, i.e. not a tiddler title\nexports.isLinkExternal = function(to) {\n\tvar externalRegExp = /^(?:file|http|https|mailto|ftp|irc|news|data|skype):[^\\s<>{}\\[\\]`|\"\\\\^]+(?:\\/|\\b)/i;\n\treturn externalRegExp.test(to);\n};\n\nexports.nextTick = function(fn) {\n/*global window: false */\n\tif(typeof process === \"undefined\") {\n\t\t// Apparently it would be faster to use postMessage - http://dbaron.org/log/20100309-faster-timeouts\n\t\twindow.setTimeout(fn,4);\n\t} else {\n\t\tprocess.nextTick(fn);\n\t}\n};\n\n/*\nConvert a hyphenated CSS property name into a camel case one\n*/\nexports.unHyphenateCss = function(propName) {\n\treturn propName.replace(/-([a-z])/gi, function(match0,match1) {\n\t\treturn match1.toUpperCase();\n\t});\n};\n\n/*\nConvert a camelcase CSS property name into a dashed one (\"backgroundColor\" --> \"background-color\")\n*/\nexports.hyphenateCss = function(propName) {\n\treturn propName.replace(/([A-Z])/g, function(match0,match1) {\n\t\treturn \"-\" + match1.toLowerCase();\n\t});\n};\n\n/*\nParse a text reference of one of these forms:\n* title\n* !!field\n* title!!field\n* title##index\n* etc\nReturns an object with the following fields, all optional:\n* title: tiddler title\n* field: tiddler field name\n* index: JSON property index\n*/\nexports.parseTextReference = function(textRef) {\n\t// Separate out the title, field name and/or JSON indices\n\tvar reTextRef = /(?:(.*?)!!(.+))|(?:(.*?)##(.+))|(.*)/mg,\n\t\tmatch = reTextRef.exec(textRef),\n\t\tresult = {};\n\tif(match && reTextRef.lastIndex === textRef.length) {\n\t\t// Return the parts\n\t\tif(match[1]) {\n\t\t\tresult.title = match[1];\n\t\t}\n\t\tif(match[2]) {\n\t\t\tresult.field = match[2];\n\t\t}\n\t\tif(match[3]) {\n\t\t\tresult.title = match[3];\n\t\t}\n\t\tif(match[4]) {\n\t\t\tresult.index = match[4];\n\t\t}\n\t\tif(match[5]) {\n\t\t\tresult.title = match[5];\n\t\t}\n\t} else {\n\t\t// If we couldn't parse it\n\t\tresult.title = textRef\n\t}\n\treturn result;\n};\n\n/*\nChecks whether a string is a valid fieldname\n*/\nexports.isValidFieldName = function(name) {\n\tif(!name || typeof name !== \"string\") {\n\t\treturn false;\n\t}\n\tname = name.toLowerCase().trim();\n\tvar fieldValidatorRegEx = /^[a-z0-9\\-\\._]+$/mg;\n\treturn fieldValidatorRegEx.test(name);\n};\n\n/*\nExtract the version number from the meta tag or from the boot file\n*/\n\n// Browser version\nexports.extractVersionInfo = function() {\n\tif($tw.packageInfo) {\n\t\treturn $tw.packageInfo.version;\n\t} else {\n\t\tvar metatags = document.getElementsByTagName(\"meta\");\n\t\tfor(var t=0; t<metatags.length; t++) {\n\t\t\tvar m = metatags[t];\n\t\t\tif(m.name === \"tiddlywiki-version\") {\n\t\t\t\treturn m.content;\n\t\t\t}\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the animation duration in ms\n*/\nexports.getAnimationDuration = function() {\n\treturn parseInt($tw.wiki.getTiddlerText(\"$:/config/AnimationDuration\",\"400\"),10) || 0;\n};\n\n/*\nHash a string to a number\nDerived from http://stackoverflow.com/a/15710692\n*/\nexports.hashString = function(str) {\n\treturn str.split(\"\").reduce(function(a,b) {\n\t\ta = ((a << 5) - a) + b.charCodeAt(0);\n\t\treturn a & a;\n\t},0);\n};\n\n/*\nDecode a base64 string\n*/\nexports.base64Decode = function(string64) {\n\treturn base64utf8.base64.decode.call(base64utf8,string64);\n};\n\n/*\nEncode a string to base64\n*/\nexports.base64Encode = function(string64) {\n\treturn base64utf8.base64.encode.call(base64utf8,string64);\n};\n\n/*\nConvert a hashmap into a tiddler dictionary format sequence of name:value pairs\n*/\nexports.makeTiddlerDictionary = function(data) {\n\tvar output = [];\n\tfor(var name in data) {\n\t\toutput.push(name + \": \" + data[name]);\n\t}\n\treturn output.join(\"\\n\");\n};\n\n/*\nHigh resolution microsecond timer for profiling\n*/\nexports.timer = function(base) {\n\tvar m;\n\tif($tw.node) {\n\t\tvar r = process.hrtime();\n\t\tm =  r[0] * 1e3 + (r[1] / 1e6);\n\t} else if(window.performance) {\n\t\tm = performance.now();\n\t} else {\n\t\tm = Date.now();\n\t}\n\tif(typeof base !== \"undefined\") {\n\t\tm = m - base;\n\t}\n\treturn m;\n};\n\n/*\nConvert text and content type to a data URI\n*/\nexports.makeDataUri = function(text,type,_canonical_uri) {\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar typeInfo = $tw.config.contentTypeInfo[type] || $tw.config.contentTypeInfo[\"text/plain\"],\n\t\tisBase64 = typeInfo.encoding === \"base64\",\n\t\tparts = [];\n\tif(_canonical_uri) {\n\t\tparts.push(_canonical_uri);\n\t} else {\n\t\tparts.push(\"data:\");\n\t\tparts.push(type);\n\t\tparts.push(isBase64 ? \";base64\" : \"\");\n\t\tparts.push(\",\");\n\t\tparts.push(isBase64 ? text : encodeURIComponent(text));\t\t\n\t}\n\treturn parts.join(\"\");\n};\n\n/*\nUseful for finding out the fully escaped CSS selector equivalent to a given tag. For example:\n\n$tw.utils.tagToCssSelector(\"$:/tags/Stylesheet\") --> tc-tagged-\\%24\\%3A\\%2Ftags\\%2FStylesheet\n*/\nexports.tagToCssSelector = function(tagName) {\n\treturn \"tc-tagged-\" + encodeURIComponent(tagName).replace(/[!\"#$%&'()*+,\\-./:;<=>?@[\\\\\\]^`{\\|}~,]/mg,function(c) {\n\t\treturn \"\\\\\" + c;\n\t});\n};\n\n/*\nIE does not have sign function\n*/\nexports.sign = Math.sign || function(x) {\n\tx = +x; // convert to a number\n\tif (x === 0 || isNaN(x)) {\n\t\treturn x;\n\t}\n\treturn x > 0 ? 1 : -1;\n};\n\n/*\nIE does not have an endsWith function\n*/\nexports.strEndsWith = function(str,ending,position) {\n\tif(str.endsWith) {\n\t\treturn str.endsWith(ending,position);\n\t} else {\n\t\tif (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > str.length) {\n\t\t\tposition = str.length;\n\t\t}\n\t\tposition -= ending.length;\n\t\tvar lastIndex = str.indexOf(ending, position);\n\t\treturn lastIndex !== -1 && lastIndex === position;\n\t}\n};\n\n/*\nReturn system information useful for debugging\n*/\nexports.getSystemInfo = function(str,ending,position) {\n\tvar results = [],\n\t\tsave = function(desc,value) {\n\t\t\tresults.push(desc + \": \" + value);\n\t\t};\n\tif($tw.browser) {\n\t\tsave(\"User Agent\",navigator.userAgent);\n\t\tsave(\"Online Status\",window.navigator.onLine);\n\t}\n\tif($tw.node) {\n\t\tsave(\"Node Version\",process.version);\n\t}\n\treturn results.join(\"\\n\");\n};\n\nexports.parseNumber = function(str) {\n\treturn parseFloat(str) || 0;\n};\n\nexports.parseInt = function(str) {\n\treturn parseInt(str,10) || 0;\n};\n\nexports.stringifyNumber = function(num) {\n\treturn num + \"\";\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/core/modules/widgets/action-createtiddler.js": {
            "title": "$:/core/modules/widgets/action-createtiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-createtiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to create a new tiddler with a unique name and specified fields.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw:false, require:false, exports:false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CreateTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCreateTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCreateTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nCreateTiddlerWidget.prototype.execute = function() {\n\tthis.actionBaseTitle = this.getAttribute(\"$basetitle\");\n\tthis.hasBase = !!this.actionBaseTitle;\n\tthis.actionSaveTitle = this.getAttribute(\"$savetitle\");\n\tthis.actionSaveDraftTitle = this.getAttribute(\"$savedrafttitle\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n\t//Following params are new since 5.1.22\n\tthis.actionTemplate = this.getAttribute(\"$template\");\n\tthis.useTemplate = !!this.actionTemplate;\n\tthis.actionOverwrite = this.getAttribute(\"$overwrite\",\"no\");\n\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nCreateTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nCreateTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar title = this.wiki.getTiddlerText(\"$:/language/DefaultNewTiddlerTitle\"), // Get the initial new-tiddler title\n\t\tfields = {},\n\t\tcreationFields,\n\t\tmodificationFields;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tfields[name] = attribute;\n\t\t}\n\t});\n\tif(this.actionTimestamp) {\n\t\tcreationFields = this.wiki.getCreationFields();\n\t\tmodificationFields = this.wiki.getModificationFields();\n\t}\n\tif(this.hasBase && this.actionOverwrite === \"no\") {\n\t\ttitle = this.wiki.generateNewTitle(this.actionBaseTitle);\n\t} else if (this.hasBase && this.actionOverwrite === \"yes\") {\n\t\ttitle = this.actionBaseTitle\n\t}\n\t// NO $basetitle BUT $template parameter is available\n\t// the title MUST be unique, otherwise the template would be overwritten\n\tif (!this.hasBase && this.useTemplate) {\n\t\ttitle = this.wiki.generateNewTitle(this.actionTemplate);\n\t} else if (!this.hasBase && !this.useTemplate) {\n\t\t// If NO $basetitle AND NO $template use initial title\n\t\t// DON'T overwrite any stuff\n\t\ttitle = this.wiki.generateNewTitle(title);\n\t}\n\tvar templateTiddler = this.wiki.getTiddler(this.actionTemplate) || {};\n\tvar tiddler = this.wiki.addTiddler(new $tw.Tiddler(templateTiddler.fields,creationFields,fields,modificationFields,{title: title}));\n\tif(this.actionSaveTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveTitle,title,this.getVariable(\"currentTiddler\"));\n\t}\n\tif(this.actionSaveDraftTitle) {\n\t\tthis.wiki.setTextReference(this.actionSaveDraftTitle,this.wiki.generateDraftTitle(title),this.getVariable(\"currentTiddler\"));\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-createtiddler\"] = CreateTiddlerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-deletefield.js": {
            "title": "$:/core/modules/widgets/action-deletefield.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-deletefield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete fields of a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\ttiddler = this.wiki.getTiddler(self.actionTiddler),\n\t\tremoveFields = {},\n\t\thasChanged = false;\n\tif(this.actionField && tiddler) {\n\t\tremoveFields[this.actionField] = undefined;\n\t\tif(this.actionField in tiddler.fields) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(tiddler) {\n\t\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\t\tif(name.charAt(0) !== \"$\" && name !== \"title\") {\n\t\t\t\tremoveFields[name] = undefined;\n\t\t\t\thasChanged = true;\n\t\t\t}\n\t\t});\n\t\tif(hasChanged) {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,removeFields,this.wiki.getModificationFields()));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletefield\"] = DeleteFieldWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-deletetiddler.js": {
            "title": "$:/core/modules/widgets/action-deletetiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-deletetiddler.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to delete a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DeleteTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDeleteTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDeleteTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nDeleteTiddlerWidget.prototype.execute = function() {\n\tthis.actionFilter = this.getAttribute(\"$filter\");\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nDeleteTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$filter\"] || changedAttributes[\"$tiddler\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nDeleteTiddlerWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar tiddlers = [];\n\tif(this.actionFilter) {\n\t\ttiddlers = this.wiki.filterTiddlers(this.actionFilter,this);\n\t}\n\tif(this.actionTiddler) {\n\t\ttiddlers.push(this.actionTiddler);\n\t}\n\tfor(var t=0; t<tiddlers.length; t++) {\n\t\tthis.wiki.deleteTiddler(tiddlers[t]);\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-deletetiddler\"] = DeleteTiddlerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-listops.js": {
            "title": "$:/core/modules/widgets/action-listops.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-listops.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to apply list operations to any tiddler field (defaults to the 'list' field of the current tiddler)\n\n\\*/\n(function() {\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\nvar ActionListopsWidget = function(parseTreeNode, options) {\n\tthis.initialise(parseTreeNode, options);\n};\n/**\n * Inherit from the base widget class\n */\nActionListopsWidget.prototype = new Widget();\n/**\n * Render this widget into the DOM\n */\nActionListopsWidget.prototype.render = function(parent, nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n/**\n * Compute the internal state of the widget\n */\nActionListopsWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.target = this.getAttribute(\"$tiddler\", this.getVariable(\n\t\t\"currentTiddler\"));\n\tthis.filter = this.getAttribute(\"$filter\");\n\tthis.subfilter = this.getAttribute(\"$subfilter\");\n\tthis.listField = this.getAttribute(\"$field\", \"list\");\n\tthis.listIndex = this.getAttribute(\"$index\");\n\tthis.filtertags = this.getAttribute(\"$tags\");\n};\n/**\n * \tRefresh the widget by ensuring our attributes are up to date\n */\nActionListopsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.$tiddler || changedAttributes.$filter ||\n\t\tchangedAttributes.$subfilter || changedAttributes.$field ||\n\t\tchangedAttributes.$index || changedAttributes.$tags) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n/**\n * \tInvoke the action associated with this widget\n */\nActionListopsWidget.prototype.invokeAction = function(triggeringWidget,\n\tevent) {\n\t//Apply the specified filters to the lists\n\tvar field = this.listField,\n\t\tindex,\n\t\ttype = \"!!\",\n\t\tlist = this.listField;\n\tif(this.listIndex) {\n\t\tfield = undefined;\n\t\tindex = this.listIndex;\n\t\ttype = \"##\";\n\t\tlist = this.listIndex;\n\t}\n\tif(this.filter) {\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(this.filter, this)));\n\t}\n\tif(this.subfilter) {\n\t\tvar subfilter = \"[list[\" + this.target + type + list + \"]] \" + this.subfilter;\n\t\tthis.wiki.setText(this.target, field, index, $tw.utils.stringifyList(\n\t\t\tthis.wiki\n\t\t\t.filterTiddlers(subfilter, this)));\n\t}\n\tif(this.filtertags) {\n\t\tvar tiddler = this.wiki.getTiddler(this.target),\n\t\t\toldtags = tiddler ? (tiddler.fields.tags || []).slice(0) : [],\n\t\t\ttagfilter = \"[list[\" + this.target + \"!!tags]] \" + this.filtertags,\n\t\t\tnewtags = this.wiki.filterTiddlers(tagfilter,this);\n\t\tif($tw.utils.stringifyList(oldtags.sort()) !== $tw.utils.stringifyList(newtags.sort())) {\n\t\t\tthis.wiki.setText(this.target,\"tags\",undefined,$tw.utils.stringifyList(newtags));\t\t\t\n\t\t}\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-listops\"] = ActionListopsWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-navigate.js": {
            "title": "$:/core/modules/widgets/action-navigate.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-navigate.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to navigate to a tiddler\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigateWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigateWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigateWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigateWidget.prototype.execute = function() {\n\tthis.actionTo = this.getAttribute(\"$to\");\n\tthis.actionScroll = this.getAttribute(\"$scroll\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nNavigateWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$to\"] || changedAttributes[\"$scroll\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nNavigateWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tevent = event || {};\n\tvar bounds = triggeringWidget && triggeringWidget.getBoundingClientRect && triggeringWidget.getBoundingClientRect(),\n\t\tsuppressNavigation = event.metaKey || event.ctrlKey || (event.button === 1);\n\tif(this.actionScroll === \"yes\") {\n\t\tsuppressNavigation = false;\n\t} else if(this.actionScroll === \"no\") {\n\t\tsuppressNavigation = true;\n\t}\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.actionTo === undefined ? this.getVariable(\"currentTiddler\") : this.actionTo,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: triggeringWidget,\n\t\tnavigateFromClientRect: bounds && { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: suppressNavigation\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-navigate\"] = NavigateWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-popup.js": {
            "title": "$:/core/modules/widgets/action-popup.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-popup.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to trigger a popup.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ActionPopupWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nActionPopupWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nActionPopupWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nActionPopupWidget.prototype.execute = function() {\n\tthis.actionState = this.getAttribute(\"$state\");\n\tthis.actionCoords = this.getAttribute(\"$coords\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nActionPopupWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$state\"] || changedAttributes[\"$coords\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nActionPopupWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Trigger the popup\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(this.actionCoords);\n\tif(match) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: null,\n\t\t\tdomNodeRect: {\n\t\t\t\tleft: parseFloat(match[1]),\n\t\t\t\ttop: parseFloat(match[2]),\n\t\t\t\twidth: parseFloat(match[3]),\n\t\t\t\theight: parseFloat(match[4])\n\t\t\t},\n\t\t\ttitle: this.actionState,\n\t\t\twiki: this.wiki\n\t\t});\n\t}\n\treturn true; // Action was invoked\n};\n\nexports[\"action-popup\"] = ActionPopupWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-sendmessage.js": {
            "title": "$:/core/modules/widgets/action-sendmessage.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-sendmessage.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to send a message\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SendMessageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSendMessageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSendMessageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSendMessageWidget.prototype.execute = function() {\n\tthis.actionMessage = this.getAttribute(\"$message\");\n\tthis.actionParam = this.getAttribute(\"$param\");\n\tthis.actionName = this.getAttribute(\"$name\");\n\tthis.actionValue = this.getAttribute(\"$value\",\"\");\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSendMessageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSendMessageWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\t// Get the string parameter\n\tvar param = this.actionParam;\n\t// Assemble the attributes as a hashmap\n\tvar paramObject = Object.create(null);\n\tvar count = 0;\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparamObject[name] = attribute;\n\t\t\tcount++;\n\t\t}\n\t});\n\t// Add name/value pair if present\n\tif(this.actionName) {\n\t\tparamObject[this.actionName] = this.actionValue;\n\t}\n\t// Dispatch the message\n\tthis.dispatchEvent({\n\t\ttype: this.actionMessage,\n\t\tparam: param,\n\t\tparamObject: paramObject,\n\t\ttiddlerTitle: this.getVariable(\"currentTiddler\"),\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tevent: event\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-sendmessage\"] = SendMessageWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/action-setfield.js": {
            "title": "$:/core/modules/widgets/action-setfield.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/action-setfield.js\ntype: application/javascript\nmodule-type: widget\n\nAction widget to set a single field or index on a tiddler.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetFieldWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetFieldWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetFieldWidget.prototype.render = function(parent,nextSibling) {\n\tthis.computeAttributes();\n\tthis.execute();\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetFieldWidget.prototype.execute = function() {\n\tthis.actionTiddler = this.getAttribute(\"$tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.actionField = this.getAttribute(\"$field\");\n\tthis.actionIndex = this.getAttribute(\"$index\");\n\tthis.actionValue = this.getAttribute(\"$value\");\n\tthis.actionTimestamp = this.getAttribute(\"$timestamp\",\"yes\") === \"yes\";\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nSetFieldWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"$tiddler\"] || changedAttributes[\"$field\"] || changedAttributes[\"$index\"] || changedAttributes[\"$value\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nInvoke the action associated with this widget\n*/\nSetFieldWidget.prototype.invokeAction = function(triggeringWidget,event) {\n\tvar self = this,\n\t\toptions = {};\n\toptions.suppressTimestamp = !this.actionTimestamp;\n\tif((typeof this.actionField == \"string\") || (typeof this.actionIndex == \"string\")  || (typeof this.actionValue == \"string\")) {\n\t\tthis.wiki.setText(this.actionTiddler,this.actionField,this.actionIndex,this.actionValue,options);\n\t}\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tself.wiki.setText(self.actionTiddler,name,undefined,attribute,options);\n\t\t}\n\t});\n\treturn true; // Action was invoked\n};\n\nexports[\"action-setfield\"] = SetFieldWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/browse.js": {
            "title": "$:/core/modules/widgets/browse.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/browse.js\ntype: application/javascript\nmodule-type: widget\n\nBrowse widget for browsing for files to import\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar BrowseWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nBrowseWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nBrowseWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"file\");\n\tif(this.browseMultiple) {\n\t\tdomNode.setAttribute(\"multiple\",\"multiple\");\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\t// Nw.js supports \"nwsaveas\" to force a \"save as\" dialogue that allows a new or existing file to be selected\n\tif(this.nwsaveas) {\n\t\tdomNode.setAttribute(\"nwsaveas\",this.nwsaveas);\n\t}\n\t// Nw.js supports \"webkitdirectory\" and \"nwdirectory\" to allow a directory to be selected\n\tif(this.webkitdirectory) {\n\t\tdomNode.setAttribute(\"webkitdirectory\",this.webkitdirectory);\n\t}\n\tif(this.nwdirectory) {\n\t\tdomNode.setAttribute(\"nwdirectory\",this.nwdirectory);\n\t}\n\t// Add a click event handler\n\tdomNode.addEventListener(\"change\",function (event) {\n\t\tif(self.message) {\n\t\t\tself.dispatchEvent({type: self.message, param: self.param, files: event.target.files});\n\t\t} else {\n\t\t\tself.wiki.readFiles(event.target.files,{\n\t\t\t\tcallback: function(tiddlerFieldsArray) {\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t\t\t},\n\t\t\t\tdeserializer: self.deserializer\n\t\t\t});\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nBrowseWidget.prototype.execute = function() {\n\tthis.browseMultiple = this.getAttribute(\"multiple\");\n\tthis.deserializer = this.getAttribute(\"deserializer\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.nwsaveas = this.getAttribute(\"nwsaveas\");\n\tthis.webkitdirectory = this.getAttribute(\"webkitdirectory\");\n\tthis.nwdirectory = this.getAttribute(\"nwdirectory\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nBrowseWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.browse = BrowseWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/button.js": {
            "title": "$:/core/modules/widgets/button.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/button.js\ntype: application/javascript\nmodule-type: widget\n\nButton widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ButtonWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nButtonWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nButtonWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar tag = \"button\";\n\tif(this.buttonTag && $tw.config.htmlUnsafeElements.indexOf(this.buttonTag) === -1) {\n\t\ttag = this.buttonTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = this[\"class\"].split(\" \") || [],\n\t\tisPoppedUp = (this.popup || this.popupTitle) && this.isPoppedUp();\n\tif(this.selectedClass) {\n\t\tif((this.set || this.setTitle) && this.setTo && this.isSelected()) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t\tif(isPoppedUp) {\n\t\t\t$tw.utils.pushTop(classes,this.selectedClass.split(\" \"));\n\t\t}\n\t}\n\tif(isPoppedUp) {\n\t\t$tw.utils.pushTop(classes,\"tc-popup-handle\");\n\t}\n\tdomNode.className = classes.join(\" \");\n\t// Assign other attributes\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tif(this.tooltip) {\n\t\tdomNode.setAttribute(\"title\",this.tooltip);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\t\n\t// Add a click event handler\n\tdomNode.addEventListener(\"click\",function (event) {\n\t\tvar handled = false;\n\t\tif(self.invokeActions(self,event)) {\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.to) {\n\t\t\tself.navigateTo(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.message) {\n\t\t\tself.dispatchMessage(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.popup || self.popupTitle) {\n\t\t\tself.triggerPopup(event);\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.set || self.setTitle) {\n\t\t\tself.setTiddler();\n\t\t\thandled = true;\n\t\t}\n\t\tif(self.actions) {\n\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t}\n\t\tif(handled) {\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t}\n\t\treturn handled;\n\t},false);\n\t// Make it draggable if required\n\tif(this.dragTiddler || this.dragFilter) {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.dragTiddler;},\n\t\t\tdragFilterFn: function() {return self.dragFilter;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nWe don't allow actions to propagate because we trigger actions ourselves\n*/\nButtonWidget.prototype.allowActionPropagation = function() {\n\treturn false;\n};\n\nButtonWidget.prototype.getBoundingClientRect = function() {\n\treturn this.domNodes[0].getBoundingClientRect();\n};\n\nButtonWidget.prototype.isSelected = function() {\n    return this.setTitle ? (this.setField ? this.wiki.getTiddler(this.setTitle).getFieldString(this.setField) === this.setTo :\n\t\t(this.setIndex ? this.wiki.extractTiddlerDataItem(this.setTitle,this.setIndex) === this.setTo :\n\t\t\tthis.wiki.getTiddlerText(this.setTitle))) || this.defaultSetValue || this.getVariable(\"currentTiddler\") :\n\t\tthis.wiki.getTextReference(this.set,this.defaultSetValue,this.getVariable(\"currentTiddler\")) === this.setTo;\n};\n\nButtonWidget.prototype.isPoppedUp = function() {\n\tvar tiddler = this.popupTitle ? this.wiki.getTiddler(this.popupTitle) : this.wiki.getTiddler(this.popup);\n\tvar result = tiddler && tiddler.fields.text ? $tw.popup.readPopupState(tiddler.fields.text) : false;\n\treturn result;\n};\n\nButtonWidget.prototype.navigateTo = function(event) {\n\tvar bounds = this.getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tevent: event\n\t});\n};\n\nButtonWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\"), event: event});\n};\n\nButtonWidget.prototype.triggerPopup = function(event) {\n\tif(this.popupTitle) {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popupTitle,\n\t\t\twiki: this.wiki,\n\t\t\tnoStateReference: true\n\t\t});\n\t} else {\n\t\t$tw.popup.triggerPopup({\n\t\t\tdomNode: this.domNodes[0],\n\t\t\ttitle: this.popup,\n\t\t\twiki: this.wiki\n\t\t});\n\t}\n};\n\nButtonWidget.prototype.setTiddler = function() {\n\tif(this.setTitle) {\n\t\tthis.setField ? this.wiki.setText(this.setTitle,this.setField,undefined,this.setTo) :\n\t\t\t\t(this.setIndex ? this.wiki.setText(this.setTitle,undefined,this.setIndex,this.setTo) :\n\t\t\t\tthis.wiki.setText(this.setTitle,\"text\",undefined,this.setTo));\n\t} else {\n\t\tthis.wiki.setTextReference(this.set,this.setTo,this.getVariable(\"currentTiddler\"));\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nButtonWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\");\n\tthis.to = this.getAttribute(\"to\");\n\tthis.message = this.getAttribute(\"message\");\n\tthis.param = this.getAttribute(\"param\");\n\tthis.set = this.getAttribute(\"set\");\n\tthis.setTo = this.getAttribute(\"setTo\");\n\tthis.popup = this.getAttribute(\"popup\");\n\tthis.hover = this.getAttribute(\"hover\");\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis.style = this.getAttribute(\"style\");\n\tthis.selectedClass = this.getAttribute(\"selectedClass\");\n\tthis.defaultSetValue = this.getAttribute(\"default\",\"\");\n\tthis.buttonTag = this.getAttribute(\"tag\");\n\tthis.dragTiddler = this.getAttribute(\"dragTiddler\");\n\tthis.dragFilter = this.getAttribute(\"dragFilter\");\n\tthis.setTitle = this.getAttribute(\"setTitle\");\n\tthis.setField = this.getAttribute(\"setField\");\n\tthis.setIndex = this.getAttribute(\"setIndex\");\n\tthis.popupTitle = this.getAttribute(\"popupTitle\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nButtonWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.actions || changedAttributes.to || changedAttributes.message || changedAttributes.param || changedAttributes.set || changedAttributes.setTo || changedAttributes.popup || changedAttributes.hover || changedAttributes[\"class\"] || changedAttributes.selectedClass || changedAttributes.style || changedAttributes.dragFilter || changedAttributes.dragTiddler || (this.set && changedTiddlers[this.set]) || (this.popup && changedTiddlers[this.popup]) || (this.popupTitle && changedTiddlers[this.popupTitle]) || changedAttributes.setTitle || changedAttributes.setField || changedAttributes.setIndex || changedAttributes.popupTitle) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.button = ButtonWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/checkbox.js": {
            "title": "$:/core/modules/widgets/checkbox.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/checkbox.js\ntype: application/javascript\nmodule-type: widget\n\nCheckbox widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CheckboxWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCheckboxWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCheckboxWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",this.checkboxClass);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"checkbox\");\n\tif(this.getValue()) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nCheckboxWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.checkboxTitle);\n\tif(tiddler) {\n\t\tif(this.checkboxTag) {\n\t\t\tif(this.checkboxInvertTag) {\n\t\t\t\treturn !tiddler.hasTag(this.checkboxTag);\n\t\t\t} else {\n\t\t\t\treturn tiddler.hasTag(this.checkboxTag);\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tvar value;\n\t\t\tif($tw.utils.hop(tiddler.fields,this.checkboxField)) {\n\t\t\t\tvalue = tiddler.fields[this.checkboxField] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.checkboxDefault || \"\";\n\t\t\t}\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t\tif(this.checkboxIndex) {\n\t\t\tvar value = this.wiki.extractTiddlerDataItem(tiddler,this.checkboxIndex,this.checkboxDefault || \"\");\n\t\t\tif(value === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(value === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif(this.checkboxTag) {\n\t\t\treturn false;\n\t\t}\n\t\tif(this.checkboxField) {\n\t\t\tif(this.checkboxDefault === this.checkboxChecked) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t\tif(this.checkboxDefault === this.checkboxUnchecked) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\nCheckboxWidget.prototype.handleChangeEvent = function(event) {\n\tvar checked = this.inputDomNode.checked,\n\t\ttiddler = this.wiki.getTiddler(this.checkboxTitle),\n\t\tfallbackFields = {text: \"\"},\n\t\tnewFields = {title: this.checkboxTitle},\n\t\thasChanged = false,\n\t\ttagCheck = false,\n\t\thasTag = tiddler && tiddler.hasTag(this.checkboxTag),\n\t\tvalue = checked ? this.checkboxChecked : this.checkboxUnchecked;\n\tif(this.checkboxTag && this.checkboxInvertTag === \"yes\") {\n\t\ttagCheck = hasTag === checked;\n\t} else {\n\t\ttagCheck = hasTag !== checked;\n\t}\n\t// Set the tag if specified\n\tif(this.checkboxTag && (!tiddler || tagCheck)) {\n\t\tnewFields.tags = tiddler ? (tiddler.fields.tags || []).slice(0) : [];\n\t\tvar pos = newFields.tags.indexOf(this.checkboxTag);\n\t\tif(pos !== -1) {\n\t\t\tnewFields.tags.splice(pos,1);\n\t\t}\n\t\tif(this.checkboxInvertTag === \"yes\" && !checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t} else if(this.checkboxInvertTag !== \"yes\" && checked) {\n\t\t\tnewFields.tags.push(this.checkboxTag);\n\t\t}\n\t\thasChanged = true;\n\t}\n\t// Set the field if specified\n\tif(this.checkboxField) {\n\t\tif(!tiddler || tiddler.fields[this.checkboxField] !== value) {\n\t\t\tnewFields[this.checkboxField] = value;\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\t// Set the index if specified\n\tif(this.checkboxIndex) {\n\t\tvar indexValue = this.wiki.extractTiddlerDataItem(this.checkboxTitle,this.checkboxIndex);\n\t\tif(!tiddler || indexValue !== value) {\n\t\t\thasChanged = true;\n\t\t}\n\t}\n\tif(hasChanged) {\n\t\tif(this.checkboxIndex) {\n\t\t\tthis.wiki.setText(this.checkboxTitle,\"\",this.checkboxIndex,value);\n\t\t} else {\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),fallbackFields,tiddler,newFields,this.wiki.getModificationFields()));\n\t\t}\n\t}\n\t// Trigger actions\n\tif(this.checkboxActions) {\n\t\tthis.invokeActionString(this.checkboxActions,this,event);\n\t}\n\tif(this.checkboxCheckActions && checked) {\n\t\tthis.invokeActionString(this.checkboxCheckActions,this,event);\n\t}\n\tif(this.checkboxUncheckActions && !checked) {\n\t\tthis.invokeActionString(this.checkboxUncheckActions,this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCheckboxWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.checkboxActions = this.getAttribute(\"actions\");\n\tthis.checkboxCheckActions = this.getAttribute(\"checkactions\");\n\tthis.checkboxUncheckActions = this.getAttribute(\"uncheckactions\");\n\tthis.checkboxTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.checkboxTag = this.getAttribute(\"tag\");\n\tthis.checkboxField = this.getAttribute(\"field\");\n\tthis.checkboxIndex = this.getAttribute(\"index\");\n\tthis.checkboxChecked = this.getAttribute(\"checked\");\n\tthis.checkboxUnchecked = this.getAttribute(\"unchecked\");\n\tthis.checkboxDefault = this.getAttribute(\"default\");\n\tthis.checkboxClass = this.getAttribute(\"class\",\"\");\n\tthis.checkboxInvertTag = this.getAttribute(\"invertTag\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCheckboxWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.tag || changedAttributes.invertTag || changedAttributes.field || changedAttributes.index || changedAttributes.checked || changedAttributes.unchecked || changedAttributes[\"default\"] || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.checkboxTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue();\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.checkbox = CheckboxWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/codeblock.js": {
            "title": "$:/core/modules/widgets/codeblock.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/codeblock.js\ntype: application/javascript\nmodule-type: widget\n\nCode block node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CodeBlockWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCodeBlockWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCodeBlockWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar codeNode = this.document.createElement(\"code\"),\n\t\tdomNode = this.document.createElement(\"pre\");\n\tcodeNode.appendChild(this.document.createTextNode(this.getAttribute(\"code\")));\n\tdomNode.appendChild(codeNode);\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n\tif(this.postRender) {\n\t\tthis.postRender();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nCodeBlockWidget.prototype.execute = function() {\n\tthis.language = this.getAttribute(\"language\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCodeBlockWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.codeblock = CodeBlockWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/count.js": {
            "title": "$:/core/modules/widgets/count.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/count.js\ntype: application/javascript\nmodule-type: widget\n\nCount widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar CountWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nCountWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nCountWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.currentCount);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nCountWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Execute the filter\n\tif(this.filter) {\n\t\tthis.currentCount = this.wiki.filterTiddlers(this.filter,this).length;\n\t} else {\n\t\tthis.currentCount = \"0\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nCountWidget.prototype.refresh = function(changedTiddlers) {\n\t// Re-execute the filter to get the count\n\tthis.computeAttributes();\n\tvar oldCount = this.currentCount;\n\tthis.execute();\n\tif(this.currentCount !== oldCount) {\n\t\t// Regenerate and rerender the widget and replace the existing DOM node\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n\n};\n\nexports.count = CountWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/diff-text.js": {
            "title": "$:/core/modules/widgets/diff-text.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/diff-text.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display a diff between two texts\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget,\n\tdmp = require(\"$:/core/modules/utils/diff-match-patch/diff_match_patch.js\");\n\nvar DiffTextWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDiffTextWidget.prototype = new Widget();\n\nDiffTextWidget.prototype.invisibleCharacters = {\n\t\"\\n\": \"↩︎\\n\",\n\t\"\\r\": \"⇠\",\n\t\"\\t\": \"⇥\\t\"\n};\n\n/*\nRender this widget into the DOM\n*/\nDiffTextWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create the diff\n\tvar dmpObject = new dmp.diff_match_patch(),\n\t\tdiffs = dmpObject.diff_main(this.getAttribute(\"source\"),this.getAttribute(\"dest\"));\n\t// Apply required cleanup\n\tswitch(this.getAttribute(\"cleanup\",\"semantic\")) {\n\t\tcase \"none\":\n\t\t\t// No cleanup\n\t\t\tbreak;\n\t\tcase \"efficiency\":\n\t\t\tdmpObject.diff_cleanupEfficiency(diffs);\n\t\t\tbreak;\n\t\tdefault: // case \"semantic\"\n\t\t\tdmpObject.diff_cleanupSemantic(diffs);\n\t\t\tbreak;\n\t}\n\t// Create the elements\n\tvar domContainer = this.document.createElement(\"div\"), \n\t\tdomDiff = this.createDiffDom(diffs);\n\tparent.insertBefore(domContainer,nextSibling);\n\t// Set variables\n\tthis.setVariable(\"diff-count\",diffs.reduce(function(acc,diff) {\n\t\tif(diff[0] !== dmp.DIFF_EQUAL) {\n\t\t\tacc++;\n\t\t}\n\t\treturn acc;\n\t},0).toString());\n\t// Render child widgets\n\tthis.renderChildren(domContainer,null);\n\t// Render the diff\n\tdomContainer.appendChild(domDiff);\n\t// Save our container\n\tthis.domNodes.push(domContainer);\n};\n\n/*\nCreate DOM elements representing a list of diffs\n*/\nDiffTextWidget.prototype.createDiffDom = function(diffs) {\n\tvar self = this;\n\t// Create the element and assign the attributes\n\tvar domPre = this.document.createElement(\"pre\"),\n\t\tdomCode = this.document.createElement(\"code\");\n\t$tw.utils.each(diffs,function(diff) {\n\t\tvar tag = diff[0] === dmp.DIFF_INSERT ? \"ins\" : (diff[0] === dmp.DIFF_DELETE ? \"del\" : \"span\"),\n\t\t\tclassName = diff[0] === dmp.DIFF_INSERT ? \"tc-diff-insert\" : (diff[0] === dmp.DIFF_DELETE ? \"tc-diff-delete\" : \"tc-diff-equal\"),\n\t\t\tdom = self.document.createElement(tag),\n\t\t\ttext = diff[1],\n\t\t\tcurrPos = 0,\n\t\t\tre = /([\\x00-\\x1F])/mg,\n\t\t\tmatch = re.exec(text),\n\t\t\tspan,\n\t\t\tprintable;\n\t\tdom.className = className;\n\t\twhile(match) {\n\t\t\tif(currPos < match.index) {\n\t\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos,match.index)));\n\t\t\t}\n\t\t\tspan = self.document.createElement(\"span\");\n\t\t\tspan.className = \"tc-diff-invisible\";\n\t\t\tprintable = self.invisibleCharacters[match[0]] || (\"[0x\" + match[0].charCodeAt(0).toString(16) + \"]\");\n\t\t\tspan.appendChild(self.document.createTextNode(printable));\n\t\t\tdom.appendChild(span);\n\t\t\tcurrPos = match.index + match[0].length;\n\t\t\tmatch = re.exec(text);\n\t\t}\n\t\tif(currPos < text.length) {\n\t\t\tdom.appendChild(self.document.createTextNode(text.slice(currPos)));\n\t\t}\n\t\tdomCode.appendChild(dom);\n\t});\n\tdomPre.appendChild(domCode);\n\treturn domPre;\n};\n\n/*\nCompute the internal state of the widget\n*/\nDiffTextWidget.prototype.execute = function() {\n\t// Make child widgets\n\tvar parseTreeNodes;\n\tif(this.parseTreeNode && this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\tparseTreeNodes = this.parseTreeNode.children;\n\t} else {\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: \"$:/language/Diffs/CountMessage\"}\n\t\t\t}\n\t\t}];\n\t}\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDiffTextWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.dest || changedAttributes.cleanup) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports[\"diff-text\"] = DiffTextWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/draggable.js": {
            "title": "$:/core/modules/widgets/draggable.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/draggable.js\ntype: application/javascript\nmodule-type: widget\n\nDraggable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DraggableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDraggableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDraggableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Sanitise the specified tag\n\tvar tag = this.draggableTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"div\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [\"tc-draggable\"];\n\tif(this.draggableClasses) {\n\t\tclasses.push(this.draggableClasses);\n\t}\n\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t// Add event handlers\n\t$tw.utils.makeDraggable({\n\t\tdomNode: domNode,\n\t\tdragTiddlerFn: function() {return self.getAttribute(\"tiddler\");},\n\t\tdragFilterFn: function() {return self.getAttribute(\"filter\");},\n\t\tstartActions: self.startActions,\n\t\tendActions: self.endActions,\n\t\twidget: this\n\t});\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nDraggableWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.draggableTag = this.getAttribute(\"tag\",\"div\");\n\tthis.draggableClasses = this.getAttribute(\"class\");\n\tthis.startActions = this.getAttribute(\"startactions\");\n\tthis.endActions = this.getAttribute(\"endactions\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDraggableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tag || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.draggable = DraggableWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/droppable.js": {
            "title": "$:/core/modules/widgets/droppable.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/droppable.js\ntype: application/javascript\nmodule-type: widget\n\nDroppable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DroppableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDroppableWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDroppableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.droppableTag && $tw.config.htmlUnsafeElements.indexOf(this.droppableTag) === -1) {\n\t\ttag = this.droppableTag;\n\t}\n\t// Create element and assign classes\n\tvar domNode = this.document.createElement(tag),\n\t\tclasses = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-droppable\");\n\tdomNode.className = classes.join(\" \");\n\t// Add event handlers\n\tif(this.droppableEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"}\n\t\t]);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDroppableWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDroppableWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally. The hacky second condition is to resolve a problem with Firefox whereby there is an erroneous dragenter event if the node being dragged is within the dropzone\n\tif(this.currentlyEntered.length === 0 || (this.currentlyEntered.length === 1 && this.currentlyEntered[0] === $tw.dragInProgress)) {\n\t\tthis.currentlyEntered = [];\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDroppableWidget.prototype.handleDragEnterEvent  = function(event) {\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragOverEvent  = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\t// Set the drop effect\n\tevent.dataTransfer.dropEffect = this.droppableEffect;\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDragLeaveEvent  = function(event) {\n\tthis.leaveDrag(event);\n\treturn false;\n};\n\nDroppableWidget.prototype.handleDropEvent  = function(event) {\n\tvar self = this;\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\tvar dataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Try to import the various data types we understand\n\t$tw.utils.importDataTransfer(dataTransfer,null,function(fieldsArray) {\n\t\tfieldsArray.forEach(function(fields) {\n\t\t\tself.performActions(fields.title || fields.text,event);\n\t\t});\n\t});\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n\treturn false;\n};\n\nDroppableWidget.prototype.performActions = function(title,event) {\n\tif(this.droppableActions) {\n\t\tvar modifierKey = event.ctrlKey && ! event.shiftKey ? \"ctrl\" : event.shiftKey && !event.ctrlKey ? \"shift\" : \n\t\t\t\tevent.ctrlKey && event.shiftKey ? \"ctrl-shift\" : \"normal\" ;\n\t\tthis.invokeActionString(this.droppableActions,this,event,{actionTiddler: title, modifier: modifierKey});\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDroppableWidget.prototype.execute = function() {\n\tthis.droppableActions = this.getAttribute(\"actions\");\n\tthis.droppableEffect = this.getAttribute(\"effect\",\"copy\");\n\tthis.droppableTag = this.getAttribute(\"tag\");\n\tthis.droppableClass = this.getAttribute(\"class\");\n\tthis.droppableEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDroppableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"] || changedAttributes.tag || changedAttributes.enable) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.droppable = DroppableWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/dropzone.js": {
            "title": "$:/core/modules/widgets/dropzone.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/dropzone.js\ntype: application/javascript\nmodule-type: widget\n\nDropzone widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DropZoneWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDropZoneWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDropZoneWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\tvar domNode = this.document.createElement(\"div\");\n\tdomNode.className = this.dropzoneClass || \"tc-dropzone\";\n\t// Add event handlers\n\tif(this.dropzoneEnable) {\n\t\t$tw.utils.addEventListeners(domNode,[\n\t\t\t{name: \"dragenter\", handlerObject: this, handlerMethod: \"handleDragEnterEvent\"},\n\t\t\t{name: \"dragover\", handlerObject: this, handlerMethod: \"handleDragOverEvent\"},\n\t\t\t{name: \"dragleave\", handlerObject: this, handlerMethod: \"handleDragLeaveEvent\"},\n\t\t\t{name: \"drop\", handlerObject: this, handlerMethod: \"handleDropEvent\"},\n\t\t\t{name: \"paste\", handlerObject: this, handlerMethod: \"handlePasteEvent\"},\n\t\t\t{name: \"dragend\", handlerObject: this, handlerMethod: \"handleDragEndEvent\"}\n\t\t]);\t\t\n\t}\n\tdomNode.addEventListener(\"click\",function (event) {\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n\t// Stack of outstanding enter/leave events\n\tthis.currentlyEntered = [];\n};\n\nDropZoneWidget.prototype.enterDrag = function(event) {\n\tif(this.currentlyEntered.indexOf(event.target) === -1) {\n\t\tthis.currentlyEntered.push(event.target);\n\t}\n\t// If we're entering for the first time we need to apply highlighting\n\t$tw.utils.addClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.leaveDrag = function(event) {\n\tvar pos = this.currentlyEntered.indexOf(event.target);\n\tif(pos !== -1) {\n\t\tthis.currentlyEntered.splice(pos,1);\n\t}\n\t// Remove highlighting if we're leaving externally\n\tif(this.currentlyEntered.length === 0) {\n\t\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t}\n};\n\nDropZoneWidget.prototype.handleDragEnterEvent  = function(event) {\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tthis.enterDrag(event);\n\t// Tell the browser that we're ready to handle the drop\n\tevent.preventDefault();\n\t// Tell the browser not to ripple the drag up to any parent drop handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handleDragOverEvent  = function(event) {\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\t// Tell the browser that we're still interested in the drop\n\tevent.preventDefault();\n\tevent.dataTransfer.dropEffect = \"copy\"; // Explicitly show this is a copy\n};\n\nDropZoneWidget.prototype.handleDragLeaveEvent  = function(event) {\n\tthis.leaveDrag(event);\n};\n\nDropZoneWidget.prototype.handleDragEndEvent = function(event) {\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n};\n\nDropZoneWidget.prototype.handleDropEvent  = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t};\n\tthis.leaveDrag(event);\n\t// Check for being over a TEXTAREA or INPUT\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) !== -1) {\n\t\treturn false;\n\t}\n\t// Check for this window being the source of the drag\n\tif($tw.dragInProgress) {\n\t\treturn false;\n\t}\n\tvar self = this,\n\t\tdataTransfer = event.dataTransfer;\n\t// Remove highlighting\n\t$tw.utils.removeClass(this.domNodes[0],\"tc-dragover\");\n\t// Import any files in the drop\n\tvar numFiles = 0;\n\tif(dataTransfer.files) {\n\t\tnumFiles = this.wiki.readFiles(dataTransfer.files,{\n\t\t\tcallback: readFileCallback,\n\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t});\n\t}\n\t// Try to import the various data types we understand\n\tif(numFiles === 0) {\n\t\t$tw.utils.importDataTransfer(dataTransfer,this.wiki.generateNewTitle(\"Untitled\"),readFileCallback);\n\t}\n\t// Tell the browser that we handled the drop\n\tevent.preventDefault();\n\t// Stop the drop ripple up to any parent handlers\n\tevent.stopPropagation();\n};\n\nDropZoneWidget.prototype.handlePasteEvent  = function(event) {\n\tvar self = this,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify(tiddlerFieldsArray)});\n\t\t};\n\t// Let the browser handle it if we're in a textarea or input box\n\tif([\"TEXTAREA\",\"INPUT\"].indexOf(event.target.tagName) == -1 && !event.target.isContentEditable) {\n\t\tvar self = this,\n\t\t\titems = event.clipboardData.items;\n\t\t// Enumerate the clipboard items\n\t\tfor(var t = 0; t<items.length; t++) {\n\t\t\tvar item = items[t];\n\t\t\tif(item.kind === \"file\") {\n\t\t\t\t// Import any files\n\t\t\t\tthis.wiki.readFile(item.getAsFile(),{\n\t\t\t\t\tcallback: readFileCallback,\n\t\t\t\t\tdeserializer: this.dropzoneDeserializer\n\t\t\t\t});\n\t\t\t} else if(item.kind === \"string\") {\n\t\t\t\t// Create tiddlers from string items\n\t\t\t\tvar type = item.type;\n\t\t\t\titem.getAsString(function(str) {\n\t\t\t\t\tvar tiddlerFields = {\n\t\t\t\t\t\ttitle: self.wiki.generateNewTitle(\"Untitled\"),\n\t\t\t\t\t\ttext: str,\n\t\t\t\t\t\ttype: type\n\t\t\t\t\t};\n\t\t\t\t\tif($tw.log.IMPORT) {\n\t\t\t\t\t\tconsole.log(\"Importing string '\" + str + \"', type: '\" + type + \"'\");\n\t\t\t\t\t}\n\t\t\t\t\tself.dispatchEvent({type: \"tm-import-tiddlers\", param: JSON.stringify([tiddlerFields])});\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t\t// Tell the browser that we've handled the paste\n\t\tevent.stopPropagation();\n\t\tevent.preventDefault();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDropZoneWidget.prototype.execute = function() {\n\tthis.dropzoneClass = this.getAttribute(\"class\");\n\tthis.dropzoneDeserializer = this.getAttribute(\"deserializer\");\n\tthis.dropzoneEnable = (this.getAttribute(\"enable\") || \"yes\") === \"yes\";\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDropZoneWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.enable) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.dropzone = DropZoneWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-binary.js": {
            "title": "$:/core/modules/widgets/edit-binary.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-binary.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-binary widget; placeholder for editing binary tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar BINARY_WARNING_MESSAGE = \"$:/core/ui/BinaryWarning\";\nvar EXPORT_BUTTON_IMAGE = \"$:/core/images/export-button\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBinaryWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBinaryWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBinaryWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBinaryWidget.prototype.execute = function() {\n\t// Get our parameters\n\tvar editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tvar tiddler = this.wiki.getTiddler(editTitle);\n\tvar type = tiddler.fields.type;\n\tvar text = tiddler.fields.text;\n\t// Transclude the binary data tiddler warning message\n\tvar warn = {\n\t\ttype: \"element\",\n\t\ttag: \"p\",\n\t\tchildren: [{\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: BINARY_WARNING_MESSAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Create download link based on draft tiddler title\n\tvar link = {\n\t\ttype: \"element\",\n\t\ttag: \"a\",\n\t\tattributes: {\n\t\t\ttitle: {type: \"indirect\", textReference: \"!!draft.title\"},\n\t\t\tdownload: {type: \"indirect\", textReference: \"!!draft.title\"}\n\t\t},\n\t\tchildren: [{\n\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {type: \"string\", value: EXPORT_BUTTON_IMAGE}\n\t\t\t}\n\t\t}]\n\t};\n\t// Set the link href to internal data URI (no external)\n\tif(text) {\n\t\tlink.attributes.href = {\n\t\t\ttype: \"string\", \n\t\t\tvalue: \"data:\" + type + \";base64,\" + text\n\t\t};\n\t}\n\t// Combine warning message and download link in a div\n\tvar element = {\n\t\ttype: \"element\",\n\t\ttag: \"div\",\n\t\tattributes: {\n\t\t\tclass: {type: \"string\", value: \"tc-binary-warning\"}\n\t\t},\n\t\tchildren: [warn, link]\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets([element]);\n};\n\n/*\nRefresh by refreshing our child widget\n*/\nEditBinaryWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"edit-binary\"] = EditBinaryWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-bitmap.js": {
            "title": "$:/core/modules/widgets/edit-bitmap.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-bitmap.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-bitmap widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Default image sizes\nvar DEFAULT_IMAGE_WIDTH = 600,\n\tDEFAULT_IMAGE_HEIGHT = 370,\n\tDEFAULT_IMAGE_TYPE = \"image/png\";\n\n// Configuration tiddlers\nvar LINE_WIDTH_TITLE = \"$:/config/BitmapEditor/LineWidth\",\n\tLINE_COLOUR_TITLE = \"$:/config/BitmapEditor/Colour\",\n\tLINE_OPACITY_TITLE = \"$:/config/BitmapEditor/Opacity\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditBitmapWidget = function(parseTreeNode,options) {\n\t// Initialise the editor operations if they've not been done already\n\tif(!this.editorOperations) {\n\t\tEditBitmapWidget.prototype.editorOperations = {};\n\t\t$tw.modules.applyMethods(\"bitmapeditoroperation\",this.editorOperations);\n\t}\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditBitmapWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditBitmapWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create the wrapper for the toolbar and render its content\n\tthis.toolbarNode = this.document.createElement(\"div\");\n\tthis.toolbarNode.className = \"tc-editor-toolbar\";\n\tparent.insertBefore(this.toolbarNode,nextSibling);\n\tthis.domNodes.push(this.toolbarNode);\n\t// Create the on-screen canvas\n\tthis.canvasDomNode = $tw.utils.domMaker(\"canvas\",{\n\t\tdocument: this.document,\n\t\t\"class\":\"tc-edit-bitmapeditor\",\n\t\teventListeners: [{\n\t\t\tname: \"touchstart\", handlerObject: this, handlerMethod: \"handleTouchStartEvent\"\n\t\t},{\n\t\t\tname: \"touchmove\", handlerObject: this, handlerMethod: \"handleTouchMoveEvent\"\n\t\t},{\n\t\t\tname: \"touchend\", handlerObject: this, handlerMethod: \"handleTouchEndEvent\"\n\t\t},{\n\t\t\tname: \"mousedown\", handlerObject: this, handlerMethod: \"handleMouseDownEvent\"\n\t\t},{\n\t\t\tname: \"mousemove\", handlerObject: this, handlerMethod: \"handleMouseMoveEvent\"\n\t\t},{\n\t\t\tname: \"mouseup\", handlerObject: this, handlerMethod: \"handleMouseUpEvent\"\n\t\t}]\n\t});\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Render toolbar child widgets\n\tthis.renderChildren(this.toolbarNode,null);\n\t// // Insert the elements into the DOM\n\tparent.insertBefore(this.canvasDomNode,nextSibling);\n\tthis.domNodes.push(this.canvasDomNode);\n\t// Load the image into the canvas\n\tif($tw.browser) {\n\t\tthis.loadCanvas();\n\t}\n\t// Add widget message listeners\n\tthis.addEventListeners([\n\t\t{type: \"tm-edit-bitmap-operation\", handler: \"handleEditBitmapOperationMessage\"}\n\t]);\n};\n\n/*\nHandle an edit bitmap operation message from the toolbar\n*/\nEditBitmapWidget.prototype.handleEditBitmapOperationMessage = function(event) {\n\t// Invoke the handler\n\tvar handler = this.editorOperations[event.param];\n\tif(handler) {\n\t\thandler.call(this,event);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditBitmapWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nJust refresh the toolbar\n*/\nEditBitmapWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nSet the bitmap size variables and refresh the toolbar\n*/\nEditBitmapWidget.prototype.refreshToolbar = function() {\n\t// Set the width and height variables\n\tthis.setVariable(\"tv-bitmap-editor-width\",this.canvasDomNode.width + \"px\");\n\tthis.setVariable(\"tv-bitmap-editor-height\",this.canvasDomNode.height + \"px\");\n\t// Refresh each of our child widgets\n\t$tw.utils.each(this.children,function(childWidget) {\n\t\tchildWidget.refreshSelf();\n\t});\n};\n\nEditBitmapWidget.prototype.loadCanvas = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle),\n\t\tcurrImage = new Image();\n\t// Set up event handlers for loading the image\n\tvar self = this;\n\tcurrImage.onload = function() {\n\t\t// Copy the image to the on-screen canvas\n\t\tself.initCanvas(self.canvasDomNode,currImage.width,currImage.height,currImage);\n\t\t// And also copy the current bitmap to the off-screen canvas\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,currImage.width,currImage.height,currImage);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\tcurrImage.onerror = function() {\n\t\t// Set the on-screen canvas size and clear it\n\t\tself.initCanvas(self.canvasDomNode,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the off-screen canvas size and clear it\n\t\tself.currCanvas = self.document.createElement(\"canvas\");\n\t\tself.initCanvas(self.currCanvas,DEFAULT_IMAGE_WIDTH,DEFAULT_IMAGE_HEIGHT);\n\t\t// Set the width and height input boxes\n\t\tself.refreshToolbar();\n\t};\n\t// Get the current bitmap into an image object\n\tif(tiddler && tiddler.fields.type && tiddler.fields.text) {\n\t\tcurrImage.src = \"data:\" + tiddler.fields.type + \";base64,\" + tiddler.fields.text;\t\t\n\t} else {\n\t\tcurrImage.width = DEFAULT_IMAGE_WIDTH;\n\t\tcurrImage.height = DEFAULT_IMAGE_HEIGHT;\n\t\tcurrImage.onerror();\n\t}\n};\n\nEditBitmapWidget.prototype.initCanvas = function(canvas,width,height,image) {\n\tcanvas.width = width;\n\tcanvas.height = height;\n\tvar ctx = canvas.getContext(\"2d\");\n\tif(image) {\n\t\tctx.drawImage(image,0,0);\n\t} else {\n\t\tctx.fillStyle = \"#fff\";\n\t\tctx.fillRect(0,0,canvas.width,canvas.height);\n\t}\n};\n\n/*\n** Change the size of the canvas, preserving the current image\n*/\nEditBitmapWidget.prototype.changeCanvasSize = function(newWidth,newHeight) {\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\");\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\n/*\n** Rotate the canvas left by 90 degrees\n*/\nEditBitmapWidget.prototype.rotateCanvasLeft = function() {\n\t// Get the current size of the image\n\tvar origWidth = this.currCanvas.width,\n\t\torigHeight = this.currCanvas.height;\n\t// Create and size a new canvas\n\tvar newCanvas = this.document.createElement(\"canvas\"),\n\t\tnewWidth = origHeight,\n\t\tnewHeight = origWidth;\n\tthis.initCanvas(newCanvas,newWidth,newHeight);\n\t// Copy the old image\n\tvar ctx = newCanvas.getContext(\"2d\");\n\tctx.save();\n\tctx.translate(newWidth / 2,newHeight / 2);\n\tctx.rotate(-Math.PI / 2);\n\tctx.drawImage(this.currCanvas,-origWidth / 2,-origHeight / 2);\n\tctx.restore();\n\t// Set the new canvas as the current one\n\tthis.currCanvas = newCanvas;\n\t// Set the size of the onscreen canvas\n\tthis.canvasDomNode.width = newWidth;\n\tthis.canvasDomNode.height = newHeight;\n\t// Paint the onscreen canvas with the offscreen canvas\n\tctx = this.canvasDomNode.getContext(\"2d\");\n\tctx.drawImage(this.currCanvas,0,0);\n};\n\nEditBitmapWidget.prototype.handleTouchStartEvent = function(event) {\n\tthis.brushDown = true;\n\tthis.strokeStart(event.touches[0].clientX,event.touches[0].clientY);\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.touches[0].clientX,event.touches[0].clientY);\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleTouchEndEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t}\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseDownEvent = function(event) {\n\tthis.strokeStart(event.clientX,event.clientY);\n\tthis.brushDown = true;\n\tevent.preventDefault();\n\tevent.stopPropagation();\n\treturn false;\n};\n\nEditBitmapWidget.prototype.handleMouseMoveEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.strokeMove(event.clientX,event.clientY);\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.handleMouseUpEvent = function(event) {\n\tif(this.brushDown) {\n\t\tthis.brushDown = false;\n\t\tthis.strokeEnd();\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn false;\n\t}\n\treturn true;\n};\n\nEditBitmapWidget.prototype.adjustCoordinates = function(x,y) {\n\tvar canvasRect = this.canvasDomNode.getBoundingClientRect(),\n\t\tscale = this.canvasDomNode.width/canvasRect.width;\n\treturn {x: (x - canvasRect.left) * scale, y: (y - canvasRect.top) * scale};\n};\n\nEditBitmapWidget.prototype.strokeStart = function(x,y) {\n\t// Start off a new stroke\n\tthis.stroke = [this.adjustCoordinates(x,y)];\n};\n\nEditBitmapWidget.prototype.strokeMove = function(x,y) {\n\tvar ctx = this.canvasDomNode.getContext(\"2d\"),\n\t\tt;\n\t// Add the new position to the end of the stroke\n\tthis.stroke.push(this.adjustCoordinates(x,y));\n\t// Redraw the previous image\n\tctx.drawImage(this.currCanvas,0,0);\n\t// Render the stroke\n\tctx.globalAlpha = parseFloat(this.wiki.getTiddlerText(LINE_OPACITY_TITLE,\"1.0\"));\n\tctx.strokeStyle = this.wiki.getTiddlerText(LINE_COLOUR_TITLE,\"#ff0\");\n\tctx.lineWidth = parseFloat(this.wiki.getTiddlerText(LINE_WIDTH_TITLE,\"3\"));\n\tctx.lineCap = \"round\";\n\tctx.lineJoin = \"round\";\n\tctx.beginPath();\n\tctx.moveTo(this.stroke[0].x,this.stroke[0].y);\n\tfor(t=1; t<this.stroke.length-1; t++) {\n\t\tvar s1 = this.stroke[t],\n\t\t\ts2 = this.stroke[t-1],\n\t\t\ttx = (s1.x + s2.x)/2,\n\t\t\tty = (s1.y + s2.y)/2;\n\t\tctx.quadraticCurveTo(s2.x,s2.y,tx,ty);\n\t}\n\tctx.stroke();\n};\n\nEditBitmapWidget.prototype.strokeEnd = function() {\n\t// Copy the bitmap to the off-screen canvas\n\tvar ctx = this.currCanvas.getContext(\"2d\");\n\tctx.drawImage(this.canvasDomNode,0,0);\n\t// Save the image into the tiddler\n\tthis.saveChanges();\n};\n\nEditBitmapWidget.prototype.saveChanges = function() {\n\tvar tiddler = this.wiki.getTiddler(this.editTitle) || new $tw.Tiddler({title: this.editTitle,type: DEFAULT_IMAGE_TYPE});\n\t// data URIs look like \"data:<type>;base64,<text>\"\n\tvar dataURL = this.canvasDomNode.toDataURL(tiddler.fields.type),\n\t\tposColon = dataURL.indexOf(\":\"),\n\t\tposSemiColon = dataURL.indexOf(\";\"),\n\t\tposComma = dataURL.indexOf(\",\"),\n\t\ttype = dataURL.substring(posColon+1,posSemiColon),\n\t\ttext = dataURL.substring(posComma+1);\n\tvar update = {type: type, text: text};\n\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,update,this.wiki.getCreationFields()));\n};\n\nexports[\"edit-bitmap\"] = EditBitmapWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-shortcut.js": {
            "title": "$:/core/modules/widgets/edit-shortcut.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-shortcut.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to display an editable keyboard shortcut\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditShortcutWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditShortcutWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditShortcutWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.inputNode = this.document.createElement(\"input\");\n\t// Assign classes\n\tif(this.shortcutClass) {\n\t\tthis.inputNode.className = this.shortcutClass;\t\t\n\t}\n\t// Assign other attributes\n\tif(this.shortcutStyle) {\n\t\tthis.inputNode.setAttribute(\"style\",this.shortcutStyle);\n\t}\n\tif(this.shortcutTooltip) {\n\t\tthis.inputNode.setAttribute(\"title\",this.shortcutTooltip);\n\t}\n\tif(this.shortcutPlaceholder) {\n\t\tthis.inputNode.setAttribute(\"placeholder\",this.shortcutPlaceholder);\n\t}\n\tif(this.shortcutAriaLabel) {\n\t\tthis.inputNode.setAttribute(\"aria-label\",this.shortcutAriaLabel);\n\t}\n\t// Assign the current shortcut\n\tthis.updateInputNode();\n\t// Add event handlers\n\t$tw.utils.addEventListeners(this.inputNode,[\n\t\t{name: \"keydown\", handlerObject: this, handlerMethod: \"handleKeydownEvent\"}\n\t]);\n\t// Link into the DOM\n\tparent.insertBefore(this.inputNode,nextSibling);\n\tthis.domNodes.push(this.inputNode);\n\t// Focus the input Node if focus === \"yes\" or focus === \"true\"\n\tif(this.shortcutFocus === \"yes\" || this.shortcutFocus === \"true\") {\n\t\tthis.focus();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nEditShortcutWidget.prototype.execute = function() {\n\tthis.shortcutTiddler = this.getAttribute(\"tiddler\");\n\tthis.shortcutField = this.getAttribute(\"field\");\n\tthis.shortcutIndex = this.getAttribute(\"index\");\n\tthis.shortcutPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.shortcutDefault = this.getAttribute(\"default\",\"\");\n\tthis.shortcutClass = this.getAttribute(\"class\");\n\tthis.shortcutStyle = this.getAttribute(\"style\");\n\tthis.shortcutTooltip = this.getAttribute(\"tooltip\");\n\tthis.shortcutAriaLabel = this.getAttribute(\"aria-label\");\n\tthis.shortcutFocus = this.getAttribute(\"focus\");\n};\n\n/*\nUpdate the value of the input node\n*/\nEditShortcutWidget.prototype.updateInputNode = function() {\n\tif(this.shortcutField) {\n\t\tvar tiddler = this.wiki.getTiddler(this.shortcutTiddler);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,this.shortcutField)) {\n\t\t\tthis.inputNode.value = tiddler.getFieldString(this.shortcutField);\n\t\t} else {\n\t\t\tthis.inputNode.value = this.shortcutDefault;\n\t\t}\n\t} else if(this.shortcutIndex) {\n\t\tthis.inputNode.value = this.wiki.extractTiddlerDataItem(this.shortcutTiddler,this.shortcutIndex,this.shortcutDefault);\n\t} else {\n\t\tthis.inputNode.value = this.wiki.getTiddlerText(this.shortcutTiddler,this.shortcutDefault);\n\t}\n};\n\n/*\nHandle a dom \"keydown\" event\n*/\nEditShortcutWidget.prototype.handleKeydownEvent = function(event) {\n\t// Ignore shift, ctrl, meta, alt\n\tif(event.keyCode && $tw.keyboardManager.getModifierKeys().indexOf(event.keyCode) === -1) {\n\t\t// Get the shortcut text representation\n\t\tvar value = $tw.keyboardManager.getPrintableShortcuts([{\n\t\t\tctrlKey: event.ctrlKey,\n\t\t\tshiftKey: event.shiftKey,\n\t\t\taltKey: event.altKey,\n\t\t\tmetaKey: event.metaKey,\n\t\t\tkeyCode: event.keyCode\n\t\t}]);\n\t\tif(value.length > 0) {\n\t\t\tthis.wiki.setText(this.shortcutTiddler,this.shortcutField,this.shortcutIndex,value[0]);\n\t\t}\n\t\t// Ignore the keydown if it was already handled\n\t\tevent.preventDefault();\n\t\tevent.stopPropagation();\n\t\treturn true;\t\t\n\t} else {\n\t\treturn false;\n\t}\n};\n\n/*\nfocus the input node\n*/\nEditShortcutWidget.prototype.focus = function() {\n\tif(this.inputNode.focus && this.inputNode.select) {\n\t\tthis.inputNode.focus();\n\t\tthis.inputNode.select();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget needed re-rendering\n*/\nEditShortcutWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.placeholder || changedAttributes[\"default\"] || changedAttributes[\"class\"] || changedAttributes.style || changedAttributes.tooltip || changedAttributes[\"aria-label\"] || changedAttributes.focus) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else if(changedTiddlers[this.shortcutTiddler]) {\n\t\tthis.updateInputNode();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports[\"edit-shortcut\"] = EditShortcutWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit-text.js": {
            "title": "$:/core/modules/widgets/edit-text.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit-text.js\ntype: application/javascript\nmodule-type: widget\n\nEdit-text widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar editTextWidgetFactory = require(\"$:/core/modules/editor/factory.js\").editTextWidgetFactory,\n\tFramedEngine = require(\"$:/core/modules/editor/engines/framed.js\").FramedEngine,\n\tSimpleEngine = require(\"$:/core/modules/editor/engines/simple.js\").SimpleEngine;\n\nexports[\"edit-text\"] = editTextWidgetFactory(FramedEngine,SimpleEngine);\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/edit.js": {
            "title": "$:/core/modules/widgets/edit.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/edit.js\ntype: application/javascript\nmodule-type: widget\n\nEdit widget is a meta-widget chooses the appropriate actual editting widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EditWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEditWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEditWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n// Mappings from content type to editor type are stored in tiddlers with this prefix\nvar EDITOR_MAPPING_PREFIX = \"$:/config/EditorTypeMappings/\";\n\n/*\nCompute the internal state of the widget\n*/\nEditWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.editTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.editField = this.getAttribute(\"field\",\"text\");\n\tthis.editIndex = this.getAttribute(\"index\");\n\tthis.editClass = this.getAttribute(\"class\");\n\tthis.editPlaceholder = this.getAttribute(\"placeholder\");\n\tthis.editTabIndex = this.getAttribute(\"tabindex\");\n\tthis.editFocus = this.getAttribute(\"focus\",\"\");\n\t// Choose the appropriate edit widget\n\tthis.editorType = this.getEditorType();\n\t// Make the child widgets\n\tthis.makeChildWidgets([{\n\t\ttype: \"edit-\" + this.editorType,\n\t\tattributes: {\n\t\t\ttiddler: {type: \"string\", value: this.editTitle},\n\t\t\tfield: {type: \"string\", value: this.editField},\n\t\t\tindex: {type: \"string\", value: this.editIndex},\n\t\t\t\"class\": {type: \"string\", value: this.editClass},\n\t\t\t\"placeholder\": {type: \"string\", value: this.editPlaceholder},\n\t\t\t\"tabindex\": {type: \"string\", value: this.editTabIndex},\n\t\t\t\"focus\": {type: \"string\", value: this.editFocus}\n\t\t},\n\t\tchildren: this.parseTreeNode.children\n\t}]);\n};\n\nEditWidget.prototype.getEditorType = function() {\n\t// Get the content type of the thing we're editing\n\tvar type;\n\tif(this.editField === \"text\") {\n\t\tvar tiddler = this.wiki.getTiddler(this.editTitle);\n\t\tif(tiddler) {\n\t\t\ttype = tiddler.fields.type;\n\t\t}\n\t}\n\ttype = type || \"text/vnd.tiddlywiki\";\n\tvar editorType = this.wiki.getTiddlerText(EDITOR_MAPPING_PREFIX + type);\n\tif(!editorType) {\n\t\tvar typeInfo = $tw.config.contentTypeInfo[type];\n\t\tif(typeInfo && typeInfo.encoding === \"base64\") {\n\t\t\teditorType = \"binary\";\n\t\t} else {\n\t\t\teditorType = \"text\";\n\t\t}\n\t}\n\treturn editorType;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEditWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh if an attribute has changed, or the type associated with the target tiddler has changed\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.tabindex || (changedTiddlers[this.editTitle] && this.getEditorType() !== this.editorType)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.edit = EditWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/element.js": {
            "title": "$:/core/modules/widgets/element.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/element.js\ntype: application/javascript\nmodule-type: widget\n\nElement widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ElementWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nElementWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nElementWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Neuter blacklisted elements\n\tvar tag = this.parseTreeNode.tag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"safe-\" + tag;\n\t}\n\t// Adjust headings by the current base level\n\tvar headingLevel = [\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\"].indexOf(tag);\n\tif(headingLevel !== -1) {\n\t\tvar baseLevel = parseInt(this.getVariable(\"tv-adjust-heading-level\",\"0\"),10) || 0;\n\t\theadingLevel = Math.min(Math.max(headingLevel + 1 + baseLevel,1),6);\n\t\ttag = \"h\" + headingLevel;\n\t}\n\t// Create the DOM node\n\tvar domNode = this.document.createElementNS(this.namespace,tag);\n\tthis.assignAttributes(domNode,{excludeEventAttributes: true});\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nElementWidget.prototype.execute = function() {\n\t// Select the namespace for the tag\n\tvar tagNamespaces = {\n\t\t\tsvg: \"http://www.w3.org/2000/svg\",\n\t\t\tmath: \"http://www.w3.org/1998/Math/MathML\",\n\t\t\tbody: \"http://www.w3.org/1999/xhtml\"\n\t\t};\n\tthis.namespace = tagNamespaces[this.parseTreeNode.tag];\n\tif(this.namespace) {\n\t\tthis.setVariable(\"namespace\",this.namespace);\n\t} else {\n\t\tthis.namespace = this.getVariable(\"namespace\",{defaultValue: \"http://www.w3.org/1999/xhtml\"});\n\t}\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nElementWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\thasChangedAttributes = $tw.utils.count(changedAttributes) > 0;\n\tif(hasChangedAttributes) {\n\t\t// Update our attributes\n\t\tthis.assignAttributes(this.domNodes[0],{excludeEventAttributes: true});\n\t}\n\treturn this.refreshChildren(changedTiddlers) || hasChangedAttributes;\n};\n\nexports.element = ElementWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/encrypt.js": {
            "title": "$:/core/modules/widgets/encrypt.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/encrypt.js\ntype: application/javascript\nmodule-type: widget\n\nEncrypt widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EncryptWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEncryptWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEncryptWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.encryptedText);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEncryptWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.filter = this.getAttribute(\"filter\",\"[!is[system]]\");\n\t// Encrypt the filtered tiddlers\n\tvar tiddlers = this.wiki.filterTiddlers(this.filter),\n\t\tjson = {},\n\t\tself = this;\n\t$tw.utils.each(tiddlers,function(title) {\n\t\tvar tiddler = self.wiki.getTiddler(title),\n\t\t\tjsonTiddler = {};\n\t\tfor(var f in tiddler.fields) {\n\t\t\tjsonTiddler[f] = tiddler.getFieldString(f);\n\t\t}\n\t\tjson[title] = jsonTiddler;\n\t});\n\tthis.encryptedText = $tw.utils.htmlEncode($tw.crypto.encrypt(JSON.stringify(json)));\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEncryptWidget.prototype.refresh = function(changedTiddlers) {\n\t// We don't need to worry about refreshing because the encrypt widget isn't for interactive use\n\treturn false;\n};\n\nexports.encrypt = EncryptWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/entity.js": {
            "title": "$:/core/modules/widgets/entity.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/entity.js\ntype: application/javascript\nmodule-type: widget\n\nHTML entity widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar EntityWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nEntityWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nEntityWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar entityString = this.getAttribute(\"entity\",this.parseTreeNode.entity || \"\"),\n\t\ttextNode = this.document.createTextNode($tw.utils.entityDecode(entityString));\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nEntityWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nEntityWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.entity) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.entity = EntityWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/fieldmangler.js": {
            "title": "$:/core/modules/widgets/fieldmangler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/fieldmangler.js\ntype: application/javascript\nmodule-type: widget\n\nField mangler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldManglerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-remove-field\", handler: \"handleRemoveFieldEvent\"},\n\t\t{type: \"tm-add-field\", handler: \"handleAddFieldEvent\"},\n\t\t{type: \"tm-remove-tag\", handler: \"handleRemoveTagEvent\"},\n\t\t{type: \"tm-add-tag\", handler: \"handleAddTagEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldManglerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldManglerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldManglerWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.mangleTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldManglerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nFieldManglerWidget.prototype.handleRemoveFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tdeletion = {};\n\tdeletion[event.param] = undefined;\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,deletion));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddFieldEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\taddition = this.wiki.getModificationFields(),\n\t\thadInvalidFieldName = false,\n\t\taddField = function(name,value) {\n\t\t\tvar trimmedName = name.toLowerCase().trim();\n\t\t\tif(!$tw.utils.isValidFieldName(trimmedName)) {\n\t\t\t\tif(!hadInvalidFieldName) {\n\t\t\t\t\talert($tw.language.getString(\n\t\t\t\t\t\t\"InvalidFieldName\",\n\t\t\t\t\t\t{variables:\n\t\t\t\t\t\t\t{fieldName: trimmedName}\n\t\t\t\t\t\t}\n\t\t\t\t\t));\n\t\t\t\t\thadInvalidFieldName = true;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif(!value && tiddler) {\n\t\t\t\t\tvalue = tiddler.fields[trimmedName];\n\t\t\t\t}\n\t\t\t\taddition[trimmedName] = value || \"\";\n\t\t\t}\n\t\t\treturn;\n\t\t};\n\taddition.title = this.mangleTitle;\n\tif(typeof event.param === \"string\") {\n\t\taddField(event.param,\"\");\n\t}\n\tif(typeof event.paramObject === \"object\") {\n\t\tfor(var name in event.paramObject) {\n\t\t\taddField(name,event.paramObject[name]);\n\t\t}\n\t}\n\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,addition));\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleRemoveTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && tiddler.fields.tags) {\n\t\tvar p = tiddler.fields.tags.indexOf(event.param);\n\t\tif(p !== -1) {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\tmodification.tags.splice(p,1);\n\t\t\tif(modification.tags.length === 0) {\n\t\t\t\tmodification.tags = undefined;\n\t\t\t}\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\n\t\t}\n\t}\n\treturn true;\n};\n\nFieldManglerWidget.prototype.handleAddTagEvent = function(event) {\n\tvar tiddler = this.wiki.getTiddler(this.mangleTitle),\n\t\tmodification = this.wiki.getModificationFields();\n\tif(tiddler && typeof event.param === \"string\") {\n\t\tvar tag = event.param.trim();\n\t\tif(tag !== \"\") {\n\t\t\tmodification.tags = (tiddler.fields.tags || []).slice(0);\n\t\t\t$tw.utils.pushTop(modification.tags,tag);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,modification));\t\t\t\n\t\t}\n\t} else if(typeof event.param === \"string\" && event.param.trim() !== \"\" && this.mangleTitle.trim() !== \"\") {\n\t\tvar tag = [];\n\t\ttag.push(event.param.trim());\n\t\tthis.wiki.addTiddler(new $tw.Tiddler({title: this.mangleTitle, tags: tag},modification));\n\t}\n\treturn true;\n};\n\nexports.fieldmangler = FieldManglerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/fields.js": {
            "title": "$:/core/modules/widgets/fields.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/fields.js\ntype: application/javascript\nmodule-type: widget\n\nFields widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar FieldsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nFieldsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nFieldsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar textNode = this.document.createTextNode(this.text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nFieldsWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.template = this.getAttribute(\"template\");\n\tthis.sort = this.getAttribute(\"sort\",\"yes\") === \"yes\";\n\tthis.sortReverse = this.getAttribute(\"sortReverse\",\"no\") === \"yes\";\n\tthis.exclude = this.getAttribute(\"exclude\");\n\tthis.include = this.getAttribute(\"include\",null);\n\tthis.stripTitlePrefix = this.getAttribute(\"stripTitlePrefix\",\"no\") === \"yes\";\n\t// Get the value to display\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\n\t// Get the inclusion and exclusion list\n\tvar excludeArr = (this.exclude) ? this.exclude.split(\" \") : [\"text\"];\n\t// Include takes precedence\n\tvar includeArr = (this.include) ? this.include.split(\" \") : null;\n\n\t// Compose the template\n\tvar text = [];\n\tif(this.template && tiddler) {\n\t\tvar fields = [];\n\t\tif (includeArr) { // Include takes precedence\n\t\t\tfor(var i=0; i<includeArr.length; i++) {\n\t\t\t\tif(tiddler.fields[includeArr[i]]) {\n\t\t\t\t\tfields.push(includeArr[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor(var fieldName in tiddler.fields) {\n\t\t\t\tif(excludeArr.indexOf(fieldName) === -1) {\n\t\t\t\t\tfields.push(fieldName);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tif (this.sort) fields.sort();\n\t\tif (this.sortReverse) fields.reverse();\n\t\tfor(var f=0, fmax=fields.length; f<fmax; f++) {\n\t\t\tfieldName = fields[f];\n\t\t\tvar row = this.template,\n\t\t\t\tvalue = tiddler.getFieldString(fieldName);\n\t\t\tif(this.stripTitlePrefix && fieldName === \"title\") {\n\t\t\t\tvar reStrip = /^\\{[^\\}]+\\}(.+)/mg,\n\t\t\t\t\treMatch = reStrip.exec(value);\n\t\t\t\tif(reMatch) {\n\t\t\t\t\tvalue = reMatch[1];\n\t\t\t\t}\n\t\t\t}\n\t\t\trow = $tw.utils.replaceString(row,\"$name$\",fieldName);\n\t\t\trow = $tw.utils.replaceString(row,\"$value$\",value);\n\t\t\trow = $tw.utils.replaceString(row,\"$encoded_value$\",$tw.utils.htmlEncode(value));\n\t\t\ttext.push(row);\n\t\t}\n\t}\n\tthis.text = text.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nFieldsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif( changedAttributes.tiddler || changedAttributes.template || changedAttributes.exclude ||\n\t\tchangedAttributes.include || changedAttributes.sort || changedAttributes.sortReverse ||\n\t\tchangedTiddlers[this.tiddlerTitle] || changedAttributes.stripTitlePrefix) {\n\t\t\tthis.refreshSelf();\n\t\t\treturn true;\n\t} else {\n\t\treturn false;\n\t}\n};\n\nexports.fields = FieldsWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/image.js": {
            "title": "$:/core/modules/widgets/image.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/image.js\ntype: application/javascript\nmodule-type: widget\n\nThe image widget displays an image referenced with an external URI or with a local tiddler title.\n\n```\n<$image src=\"TiddlerTitle\" width=\"320\" height=\"400\" class=\"classnames\">\n```\n\nThe image source can be the title of an existing tiddler or the URL of an external image.\n\nExternal images always generate an HTML `<img>` tag.\n\nTiddlers that have a _canonical_uri field generate an HTML `<img>` tag with the src attribute containing the URI.\n\nTiddlers that contain image data generate an HTML `<img>` tag with the src attribute containing a base64 representation of the image.\n\nTiddlers that contain wikitext could be rendered to a DIV of the usual size of a tiddler, and then transformed to the size requested.\n\nThe width and height attributes are interpreted as a number of pixels, and do not need to include the \"px\" suffix.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImageWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImageWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImageWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create element\n\t// Determine what type of image it is\n\tvar tag = \"img\", src = \"\",\n\t\ttiddler = this.wiki.getTiddler(this.imageSource);\n\tif(!tiddler) {\n\t\t// The source isn't the title of a tiddler, so we'll assume it's a URL\n\t\tsrc = this.getVariable(\"tv-get-export-image-link\",{params: [{name: \"src\",value: this.imageSource}],defaultValue: this.imageSource});\n\t} else {\n\t\t// Check if it is an image tiddler\n\t\tif(this.wiki.isImageTiddler(this.imageSource)) {\n\t\t\tvar type = tiddler.fields.type,\n\t\t\t\ttext = tiddler.fields.text,\n\t\t\t\t_canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t// If the tiddler has body text then it doesn't need to be lazily loaded\n\t\t\tif(text) {\n\t\t\t\t// Render the appropriate element for the image type\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = \"data:application/pdf;base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = \"data:image/svg+xml,\" + encodeURIComponent(text);\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = \"data:\" + type + \";base64,\" + text;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else if(_canonical_uri) {\n\t\t\t\tswitch(type) {\n\t\t\t\t\tcase \"application/pdf\":\n\t\t\t\t\t\ttag = \"embed\";\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tcase \"image/svg+xml\":\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tsrc = _canonical_uri;\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\t\n\t\t\t} else {\n\t\t\t\t// Just trigger loading of the tiddler\n\t\t\t\tthis.wiki.getTiddlerText(this.imageSource);\n\t\t\t}\n\t\t}\n\t}\n\t// Create the element and assign the attributes\n\tvar domNode = this.document.createElement(tag);\n\tdomNode.setAttribute(\"src\",src);\n\tif(this.imageClass) {\n\t\tdomNode.setAttribute(\"class\",this.imageClass);\t\t\n\t}\n\tif(this.imageWidth) {\n\t\tdomNode.setAttribute(\"width\",this.imageWidth);\n\t}\n\tif(this.imageHeight) {\n\t\tdomNode.setAttribute(\"height\",this.imageHeight);\n\t}\n\tif(this.imageTooltip) {\n\t\tdomNode.setAttribute(\"title\",this.imageTooltip);\t\t\n\t}\n\tif(this.imageAlt) {\n\t\tdomNode.setAttribute(\"alt\",this.imageAlt);\t\t\n\t}\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.domNodes.push(domNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImageWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.imageSource = this.getAttribute(\"source\");\n\tthis.imageWidth = this.getAttribute(\"width\");\n\tthis.imageHeight = this.getAttribute(\"height\");\n\tthis.imageClass = this.getAttribute(\"class\");\n\tthis.imageTooltip = this.getAttribute(\"tooltip\");\n\tthis.imageAlt = this.getAttribute(\"alt\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImageWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.source || changedAttributes.width || changedAttributes.height || changedAttributes[\"class\"] || changedAttributes.tooltip || changedTiddlers[this.imageSource]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\t\n\t}\n};\n\nexports.image = ImageWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/importvariables.js": {
            "title": "$:/core/modules/widgets/importvariables.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/importvariables.js\ntype: application/javascript\nmodule-type: widget\n\nImport variable definitions from other tiddlers\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ImportVariablesWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nImportVariablesWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nImportVariablesWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nImportVariablesWidget.prototype.execute = function(tiddlerList) {\n\tvar widgetPointer = this;\n\t// Get our parameters\n\tthis.filter = this.getAttribute(\"filter\");\n\t// Compute the filter\n\tthis.tiddlerList = tiddlerList || this.wiki.filterTiddlers(this.filter,this);\n\t// Accumulate the <$set> widgets from each tiddler\n\t$tw.utils.each(this.tiddlerList,function(title) {\n\t\tvar parser = widgetPointer.wiki.parseTiddler(title);\n\t\tif(parser) {\n\t\t\tvar parseTreeNode = parser.tree[0];\n\t\t\twhile(parseTreeNode && parseTreeNode.type === \"set\") {\n\t\t\t\tvar node = {\n\t\t\t\t\ttype: \"set\",\n\t\t\t\t\tattributes: parseTreeNode.attributes,\n\t\t\t\t\tparams: parseTreeNode.params,\n\t\t\t\t\tisMacroDefinition: parseTreeNode.isMacroDefinition\n\t\t\t\t};\n\t\t\t\tif (parseTreeNode.isMacroDefinition) {\n\t\t\t\t\t// Macro definitions can be folded into\n\t\t\t\t\t// current widget instead of adding\n\t\t\t\t\t// another link to the chain.\n\t\t\t\t\tvar widget = widgetPointer.makeChildWidget(node);\n\t\t\t\t\twidget.computeAttributes();\n\t\t\t\t\twidget.execute();\n\t\t\t\t\t// We SHALLOW copy over all variables\n\t\t\t\t\t// in widget. We can't use\n\t\t\t\t\t// $tw.utils.assign, because that copies\n\t\t\t\t\t// up the prototype chain, which we\n\t\t\t\t\t// don't want.\n\t\t\t\t\t$tw.utils.each(Object.keys(widget.variables), function(key) {\n\t\t\t\t\t\twidgetPointer.variables[key] = widget.variables[key];\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\twidgetPointer.makeChildWidgets([node]);\n\t\t\t\t\twidgetPointer = widgetPointer.children[0];\n\t\t\t\t}\n\t\t\t\tparseTreeNode = parseTreeNode.children && parseTreeNode.children[0];\n\t\t\t}\n\t\t} \n\t});\n\n\tif (widgetPointer != this) {\n\t\twidgetPointer.parseTreeNode.children = this.parseTreeNode.children;\n\t} else {\n\t\twidgetPointer.makeChildWidgets();\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nImportVariablesWidget.prototype.refresh = function(changedTiddlers) {\n\t// Recompute our attributes and the filter list\n\tvar changedAttributes = this.computeAttributes(),\n\t\ttiddlerList = this.wiki.filterTiddlers(this.getAttribute(\"filter\"),this);\n\t// Refresh if the filter has changed, or the list of tiddlers has changed, or any of the tiddlers in the list has changed\n\tfunction haveListedTiddlersChanged() {\n\t\tvar changed = false;\n\t\ttiddlerList.forEach(function(title) {\n\t\t\tif(changedTiddlers[title]) {\n\t\t\t\tchanged = true;\n\t\t\t}\n\t\t});\n\t\treturn changed;\n\t}\n\tif(changedAttributes.filter || !$tw.utils.isArrayEqual(this.tiddlerList,tiddlerList) || haveListedTiddlersChanged()) {\n\t\t// Compute the filter\n\t\tthis.removeChildDomNodes();\n\t\tthis.execute(tiddlerList);\n\t\tthis.renderChildren(this.parentDomNode,this.findNextSiblingDomNode());\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.importvariables = ImportVariablesWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/keyboard.js": {
            "title": "$:/core/modules/widgets/keyboard.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/keyboard.js\ntype: application/javascript\nmodule-type: widget\n\nKeyboard shortcut widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar KeyboardWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nKeyboardWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nKeyboardWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.tag && $tw.config.htmlUnsafeElements.indexOf(this.tag) === -1) {\n\t\ttag = this.tag;\n\t}\n\t// Create element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = (this[\"class\"] || \"\").split(\" \");\n\tclasses.push(\"tc-keyboard\");\n\tdomNode.className = classes.join(\" \");\n\t// Add a keyboard event handler\n\tdomNode.addEventListener(\"keydown\",function (event) {\n\t\tif($tw.keyboardManager.checkKeyDescriptors(event,self.keyInfoArray)) {\n\t\t\tself.invokeActions(self,event);\n\t\t\tif(self.actions) {\n\t\t\t\tself.invokeActionString(self.actions,self,event);\n\t\t\t}\n\t\t\tself.dispatchMessage(event);\n\t\t\tevent.preventDefault();\n\t\t\tevent.stopPropagation();\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t},false);\n\t// Insert element\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nKeyboardWidget.prototype.dispatchMessage = function(event) {\n\tthis.dispatchEvent({type: this.message, param: this.param, tiddlerTitle: this.getVariable(\"currentTiddler\")});\n};\n\n/*\nCompute the internal state of the widget\n*/\nKeyboardWidget.prototype.execute = function() {\n\tvar self = this;\n\t// Get attributes\n\tthis.actions = this.getAttribute(\"actions\",\"\");\n\tthis.message = this.getAttribute(\"message\",\"\");\n\tthis.param = this.getAttribute(\"param\",\"\");\n\tthis.key = this.getAttribute(\"key\",\"\");\n\tthis.tag = this.getAttribute(\"tag\",\"\");\n\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tif(this.key.substr(0,2) === \"((\" && this.key.substr(-2,2) === \"))\") {\n\t\tthis.shortcutTiddlers = [];\n\t\tvar name = this.key.substring(2,this.key.length -2);\n\t\t$tw.utils.each($tw.keyboardManager.lookupNames,function(platformDescriptor) {\n\t\t\tself.shortcutTiddlers.push(\"$:/config/\" + platformDescriptor + \"/\" + name);\n\t\t});\n\t}\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nKeyboardWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.message || changedAttributes.param || changedAttributes.key || changedAttributes[\"class\"] || changedAttributes.tag) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\t// Update the keyInfoArray if one of its shortcut-config-tiddlers has changed\n\tif(this.shortcutTiddlers && $tw.utils.hopArray(changedTiddlers,this.shortcutTiddlers)) {\n\t\tthis.keyInfoArray = $tw.keyboardManager.parseKeyDescriptors(this.key);\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.keyboard = KeyboardWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/link.js": {
            "title": "$:/core/modules/widgets/link.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/link.js\ntype: application/javascript\nmodule-type: widget\n\nLink widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the value of the tv-wikilinks configuration macro\n\tvar wikiLinksMacro = this.getVariable(\"tv-wikilinks\"),\n\t\tuseWikiLinks = wikiLinksMacro ? (wikiLinksMacro.trim() !== \"no\") : true,\n\t\tmissingLinksEnabled = !(this.hideMissingLinks && this.isMissing && !this.isShadow);\n\t// Render the link if required\n\tif(useWikiLinks && missingLinksEnabled) {\n\t\tthis.renderLink(parent,nextSibling);\n\t} else {\n\t\t// Just insert the link text\n\t\tvar domNode = this.document.createElement(\"span\");\n\t\tparent.insertBefore(domNode,nextSibling);\n\t\tthis.renderChildren(domNode,null);\n\t\tthis.domNodes.push(domNode);\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nLinkWidget.prototype.renderLink = function(parent,nextSibling) {\n\tvar self = this;\n\t// Sanitise the specified tag\n\tvar tag = this.linkTag;\n\tif($tw.config.htmlUnsafeElements.indexOf(tag) !== -1) {\n\t\ttag = \"a\";\n\t}\n\t// Create our element\n\tvar domNode = this.document.createElement(tag);\n\t// Assign classes\n\tvar classes = [];\n\tif(this.overrideClasses === undefined) {\n\t\tclasses.push(\"tc-tiddlylink\");\n\t\tif(this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-shadow\");\n\t\t}\n\t\tif(this.isMissing && !this.isShadow) {\n\t\t\tclasses.push(\"tc-tiddlylink-missing\");\n\t\t} else {\n\t\t\tif(!this.isMissing) {\n\t\t\t\tclasses.push(\"tc-tiddlylink-resolves\");\n\t\t\t}\n\t\t}\n\t\tif(this.linkClasses) {\n\t\t\tclasses.push(this.linkClasses);\t\t\t\n\t\t}\n\t} else if(this.overrideClasses !== \"\") {\n\t\tclasses.push(this.overrideClasses)\n\t}\n\tif(classes.length > 0) {\n\t\tdomNode.setAttribute(\"class\",classes.join(\" \"));\n\t}\n\t// Set an href\n\tvar wikilinkTransformFilter = this.getVariable(\"tv-filter-export-link\"),\n\t\twikiLinkText;\n\tif(wikilinkTransformFilter) {\n\t\t// Use the filter to construct the href\n\t\twikiLinkText = this.wiki.filterTiddlers(wikilinkTransformFilter,this,function(iterator) {\n\t\t\titerator(self.wiki.getTiddler(self.to),self.to)\n\t\t})[0];\n\t} else {\n\t\t// Expand the tv-wikilink-template variable to construct the href\n\t\tvar wikiLinkTemplateMacro = this.getVariable(\"tv-wikilink-template\"),\n\t\t\twikiLinkTemplate = wikiLinkTemplateMacro ? wikiLinkTemplateMacro.trim() : \"#$uri_encoded$\";\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkTemplate,\"$uri_encoded$\",encodeURIComponent(this.to));\n\t\twikiLinkText = $tw.utils.replaceString(wikiLinkText,\"$uri_doubleencoded$\",encodeURIComponent(encodeURIComponent(this.to)));\n\t}\n\t// Override with the value of tv-get-export-link if defined\n\twikiLinkText = this.getVariable(\"tv-get-export-link\",{params: [{name: \"to\",value: this.to}],defaultValue: wikiLinkText});\n\tif(tag === \"a\") {\n\t\tdomNode.setAttribute(\"href\",wikiLinkText);\n\t}\n\t// Set the tabindex\n\tif(this.tabIndex) {\n\t\tdomNode.setAttribute(\"tabindex\",this.tabIndex);\n\t}\n\t// Set the tooltip\n\t// HACK: Performance issues with re-parsing the tooltip prevent us defaulting the tooltip to \"<$transclude field='tooltip'><$transclude field='title'/></$transclude>\"\n\tvar tooltipWikiText = this.tooltip || this.getVariable(\"tv-wikilink-tooltip\");\n\tif(tooltipWikiText) {\n\t\tvar tooltipText = this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",tooltipWikiText,{\n\t\t\t\tparseAsInline: true,\n\t\t\t\tvariables: {\n\t\t\t\t\tcurrentTiddler: this.to\n\t\t\t\t},\n\t\t\t\tparentWidget: this\n\t\t\t});\n\t\tdomNode.setAttribute(\"title\",tooltipText);\n\t}\n\tif(this[\"aria-label\"]) {\n\t\tdomNode.setAttribute(\"aria-label\",this[\"aria-label\"]);\n\t}\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleClickEvent\"},\n\t]);\n\t// Make the link draggable if required\n\tif(this.draggable === \"yes\") {\n\t\t$tw.utils.makeDraggable({\n\t\t\tdomNode: domNode,\n\t\t\tdragTiddlerFn: function() {return self.to;},\n\t\t\twidget: this\n\t\t});\n\t}\n\t// Insert the link into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nLinkWidget.prototype.handleClickEvent = function(event) {\n\t// Send the click on its way as a navigate event\n\tvar bounds = this.domNodes[0].getBoundingClientRect();\n\tthis.dispatchEvent({\n\t\ttype: \"tm-navigate\",\n\t\tnavigateTo: this.to,\n\t\tnavigateFromTitle: this.getVariable(\"storyTiddler\"),\n\t\tnavigateFromNode: this,\n\t\tnavigateFromClientRect: { top: bounds.top, left: bounds.left, width: bounds.width, right: bounds.right, bottom: bounds.bottom, height: bounds.height\n\t\t},\n\t\tnavigateSuppressNavigation: event.metaKey || event.ctrlKey || (event.button === 1),\n\t\tmetaKey: event.metaKey,\n\t\tctrlKey: event.ctrlKey,\n\t\taltKey: event.altKey,\n\t\tshiftKey: event.shiftKey\n\t});\n\tif(this.domNodes[0].hasAttribute(\"href\")) {\n\t\tevent.preventDefault();\n\t}\n\tevent.stopPropagation();\n\treturn false;\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkWidget.prototype.execute = function() {\n\t// Pick up our attributes\n\tthis.to = this.getAttribute(\"to\",this.getVariable(\"currentTiddler\"));\n\tthis.tooltip = this.getAttribute(\"tooltip\");\n\tthis[\"aria-label\"] = this.getAttribute(\"aria-label\");\n\tthis.linkClasses = this.getAttribute(\"class\");\n\tthis.overrideClasses = this.getAttribute(\"overrideClass\");\n\tthis.tabIndex = this.getAttribute(\"tabindex\");\n\tthis.draggable = this.getAttribute(\"draggable\",\"yes\");\n\tthis.linkTag = this.getAttribute(\"tag\",\"a\");\n\t// Determine the link characteristics\n\tthis.isMissing = !this.wiki.tiddlerExists(this.to);\n\tthis.isShadow = this.wiki.isShadowTiddler(this.to);\n\tthis.hideMissingLinks = (this.getVariable(\"tv-show-missing-links\") || \"yes\") === \"no\";\n\t// Make the child widgets\n\tvar templateTree;\n\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\ttemplateTree = this.parseTreeNode.children;\n\t} else {\n\t\t// Default template is a link to the title\n\t\ttemplateTree = [{type: \"text\", text: this.to}];\n\t}\n\tthis.makeChildWidgets(templateTree);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedTiddlers[this.to] || changedAttributes[\"aria-label\"] || changedAttributes.tooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.link = LinkWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/linkcatcher.js": {
            "title": "$:/core/modules/widgets/linkcatcher.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/linkcatcher.js\ntype: application/javascript\nmodule-type: widget\n\nLinkcatcher widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar LinkCatcherWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nLinkCatcherWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nLinkCatcherWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nLinkCatcherWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.catchTo = this.getAttribute(\"to\");\n\tthis.catchMessage = this.getAttribute(\"message\");\n\tthis.catchSet = this.getAttribute(\"set\");\n\tthis.catchSetTo = this.getAttribute(\"setTo\");\n\tthis.catchActions = this.getAttribute(\"actions\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n\t// When executing actions we avoid trapping navigate events, so that we don't trigger ourselves recursively\n\tthis.executingActions = false;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nLinkCatcherWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.to || changedAttributes.message || changedAttributes.set || changedAttributes.setTo) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\n/*\nHandle a tm-navigate event\n*/\nLinkCatcherWidget.prototype.handleNavigateEvent = function(event) {\n\tif(!this.executingActions) {\n\t\t// Execute the actions\n\t\tif(this.catchTo) {\n\t\t\tthis.wiki.setTextReference(this.catchTo,event.navigateTo,this.getVariable(\"currentTiddler\"));\n\t\t}\n\t\tif(this.catchMessage && this.parentWidget) {\n\t\t\tthis.parentWidget.dispatchEvent({\n\t\t\t\ttype: this.catchMessage,\n\t\t\t\tparam: event.navigateTo,\n\t\t\t\tnavigateTo: event.navigateTo\n\t\t\t});\n\t\t}\n\t\tif(this.catchSet) {\n\t\t\tvar tiddler = this.wiki.getTiddler(this.catchSet);\n\t\t\tthis.wiki.addTiddler(new $tw.Tiddler(tiddler,{title: this.catchSet, text: this.catchSetTo}));\n\t\t}\n\t\tif(this.catchActions) {\n\t\t\tthis.executingActions = true;\n\t\t\tthis.invokeActionString(this.catchActions,this,event,{navigateTo: event.navigateTo});\n\t\t\tthis.executingActions = false;\n\t\t}\n\t} else {\n\t\t// This is a navigate event generated by the actions of this linkcatcher, so we don't trap it again, but just pass it to the parent\n\t\tthis.parentWidget.dispatchEvent({\n\t\t\ttype: \"tm-navigate\",\n\t\t\tparam: event.navigateTo,\n\t\t\tnavigateTo: event.navigateTo\n\t\t});\n\t}\n\treturn false;\n};\n\nexports.linkcatcher = LinkCatcherWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/list.js": {
            "title": "$:/core/modules/widgets/list.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/list.js\ntype: application/javascript\nmodule-type: widget\n\nList and list item widgets\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\n/*\nThe list widget creates list element sub-widgets that reach back into the list widget for their configuration\n*/\n\nvar ListWidget = function(parseTreeNode,options) {\n\t// Initialise the storyviews if they've not been done already\n\tif(!this.storyViews) {\n\t\tListWidget.prototype.storyViews = {};\n\t\t$tw.modules.applyMethods(\"storyview\",this.storyViews);\n\t}\n\t// Main initialisation inherited from widget.js\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\t// Construct the storyview\n\tvar StoryView = this.storyViews[this.storyViewName];\n\tif(this.storyViewName && !StoryView) {\n\t\tStoryView = this.storyViews[\"classic\"];\n\t}\n\tif(StoryView && !this.document.isTiddlyWikiFakeDom) {\n\t\tthis.storyview = new StoryView(this);\n\t} else {\n\t\tthis.storyview = null;\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nListWidget.prototype.execute = function() {\n\t// Get our attributes\n\tthis.template = this.getAttribute(\"template\");\n\tthis.editTemplate = this.getAttribute(\"editTemplate\");\n\tthis.variableName = this.getAttribute(\"variable\",\"currentTiddler\");\n\tthis.storyViewName = this.getAttribute(\"storyview\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\t// Compose the list elements\n\tthis.list = this.getTiddlerList();\n\tvar members = [],\n\t\tself = this;\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\tmembers = this.getEmptyMessage();\n\t} else {\n\t\t$tw.utils.each(this.list,function(title,index) {\n\t\t\tmembers.push(self.makeItemTemplate(title));\n\t\t});\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(members);\n\t// Clear the last history\n\tthis.history = [];\n};\n\nListWidget.prototype.getTiddlerList = function() {\n\tvar defaultFilter = \"[!is[system]sort[title]]\";\n\treturn this.wiki.filterTiddlers(this.getAttribute(\"filter\",defaultFilter),this);\n};\n\nListWidget.prototype.getEmptyMessage = function() {\n\tvar emptyMessage = this.getAttribute(\"emptyMessage\",\"\"),\n\t\tparser = this.wiki.parseText(\"text/vnd.tiddlywiki\",emptyMessage,{parseAsInline: true});\n\tif(parser) {\n\t\treturn parser.tree;\n\t} else {\n\t\treturn [];\n\t}\n};\n\n/*\nCompose the template for a list item\n*/\nListWidget.prototype.makeItemTemplate = function(title) {\n\t// Check if the tiddler is a draft\n\tvar tiddler = this.wiki.getTiddler(title),\n\t\tisDraft = tiddler && tiddler.hasField(\"draft.of\"),\n\t\ttemplate = this.template,\n\t\ttemplateTree;\n\tif(isDraft && this.editTemplate) {\n\t\ttemplate = this.editTemplate;\n\t}\n\t// Compose the transclusion of the template\n\tif(template) {\n\t\ttemplateTree = [{type: \"transclude\", attributes: {tiddler: {type: \"string\", value: template}}}];\n\t} else {\n\t\tif(this.parseTreeNode.children && this.parseTreeNode.children.length > 0) {\n\t\t\ttemplateTree = this.parseTreeNode.children;\n\t\t} else {\n\t\t\t// Default template is a link to the title\n\t\t\ttemplateTree = [{type: \"element\", tag: this.parseTreeNode.isBlock ? \"div\" : \"span\", children: [{type: \"link\", attributes: {to: {type: \"string\", value: title}}, children: [\n\t\t\t\t\t{type: \"text\", text: title}\n\t\t\t]}]}];\n\t\t}\n\t}\n\t// Return the list item\n\treturn {type: \"listitem\", itemTitle: title, variableName: this.variableName, children: templateTree};\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tresult;\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshStart) {\n\t\tthis.storyview.refreshStart(changedTiddlers,changedAttributes);\n\t}\n\t// Completely refresh if any of our attributes have changed\n\tif(changedAttributes.filter || changedAttributes.template || changedAttributes.editTemplate || changedAttributes.emptyMessage || changedAttributes.storyview || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\tresult = true;\n\t} else {\n\t\t// Handle any changes to the list\n\t\tresult = this.handleListChanges(changedTiddlers);\n\t\t// Handle any changes to the history stack\n\t\tif(this.historyTitle && changedTiddlers[this.historyTitle]) {\n\t\t\tthis.handleHistoryChanges();\n\t\t}\n\t}\n\t// Call the storyview\n\tif(this.storyview && this.storyview.refreshEnd) {\n\t\tthis.storyview.refreshEnd(changedTiddlers,changedAttributes);\n\t}\n\treturn result;\n};\n\n/*\nHandle any changes to the history list\n*/\nListWidget.prototype.handleHistoryChanges = function() {\n\t// Get the history data\n\tvar newHistory = this.wiki.getTiddlerDataCached(this.historyTitle,[]);\n\t// Ignore any entries of the history that match the previous history\n\tvar entry = 0;\n\twhile(entry < newHistory.length && entry < this.history.length && newHistory[entry].title === this.history[entry].title) {\n\t\tentry++;\n\t}\n\t// Navigate forwards to each of the new tiddlers\n\twhile(entry < newHistory.length) {\n\t\tif(this.storyview && this.storyview.navigateTo) {\n\t\t\tthis.storyview.navigateTo(newHistory[entry]);\n\t\t}\n\t\tentry++;\n\t}\n\t// Update the history\n\tthis.history = newHistory;\n};\n\n/*\nProcess any changes to the list\n*/\nListWidget.prototype.handleListChanges = function(changedTiddlers) {\n\t// Get the new list\n\tvar prevList = this.list;\n\tthis.list = this.getTiddlerList();\n\t// Check for an empty list\n\tif(this.list.length === 0) {\n\t\t// Check if it was empty before\n\t\tif(prevList.length === 0) {\n\t\t\t// If so, just refresh the empty message\n\t\t\treturn this.refreshChildren(changedTiddlers);\n\t\t} else {\n\t\t\t// Replace the previous content with the empty message\n\t\t\tfor(t=this.children.length-1; t>=0; t--) {\n\t\t\t\tthis.removeListItem(t);\n\t\t\t}\n\t\t\tvar nextSibling = this.findNextSiblingDomNode();\n\t\t\tthis.makeChildWidgets(this.getEmptyMessage());\n\t\t\tthis.renderChildren(this.parentDomNode,nextSibling);\n\t\t\treturn true;\n\t\t}\n\t} else {\n\t\t// If the list was empty then we need to remove the empty message\n\t\tif(prevList.length === 0) {\n\t\t\tthis.removeChildDomNodes();\n\t\t\tthis.children = [];\n\t\t}\n\t\t// Cycle through the list, inserting and removing list items as needed\n\t\tvar hasRefreshed = false;\n\t\tfor(var t=0; t<this.list.length; t++) {\n\t\t\tvar index = this.findListItem(t,this.list[t]);\n\t\t\tif(index === undefined) {\n\t\t\t\t// The list item must be inserted\n\t\t\t\tthis.insertListItem(t,this.list[t]);\n\t\t\t\thasRefreshed = true;\n\t\t\t} else {\n\t\t\t\t// There are intervening list items that must be removed\n\t\t\t\tfor(var n=index-1; n>=t; n--) {\n\t\t\t\t\tthis.removeListItem(n);\n\t\t\t\t\thasRefreshed = true;\n\t\t\t\t}\n\t\t\t\t// Refresh the item we're reusing\n\t\t\t\tvar refreshed = this.children[t].refresh(changedTiddlers);\n\t\t\t\thasRefreshed = hasRefreshed || refreshed;\n\t\t\t}\n\t\t}\n\t\t// Remove any left over items\n\t\tfor(t=this.children.length-1; t>=this.list.length; t--) {\n\t\t\tthis.removeListItem(t);\n\t\t\thasRefreshed = true;\n\t\t}\n\t\treturn hasRefreshed;\n\t}\n};\n\n/*\nFind the list item with a given title, starting from a specified position\n*/\nListWidget.prototype.findListItem = function(startIndex,title) {\n\twhile(startIndex < this.children.length) {\n\t\tif(this.children[startIndex].parseTreeNode.itemTitle === title) {\n\t\t\treturn startIndex;\n\t\t}\n\t\tstartIndex++;\n\t}\n\treturn undefined;\n};\n\n/*\nInsert a new list item at the specified index\n*/\nListWidget.prototype.insertListItem = function(index,title) {\n\t// Create, insert and render the new child widgets\n\tvar widget = this.makeChildWidget(this.makeItemTemplate(title));\n\twidget.parentDomNode = this.parentDomNode; // Hack to enable findNextSiblingDomNode() to work\n\tthis.children.splice(index,0,widget);\n\tvar nextSibling = widget.findNextSiblingDomNode();\n\twidget.render(this.parentDomNode,nextSibling);\n\t// Animate the insertion if required\n\tif(this.storyview && this.storyview.insert) {\n\t\tthis.storyview.insert(widget);\n\t}\n\treturn true;\n};\n\n/*\nRemove the specified list item\n*/\nListWidget.prototype.removeListItem = function(index) {\n\tvar widget = this.children[index];\n\t// Animate the removal if required\n\tif(this.storyview && this.storyview.remove) {\n\t\tthis.storyview.remove(widget);\n\t} else {\n\t\twidget.removeChildDomNodes();\n\t}\n\t// Remove the child widget\n\tthis.children.splice(index,1);\n};\n\nexports.list = ListWidget;\n\nvar ListItemWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nListItemWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nListItemWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nListItemWidget.prototype.execute = function() {\n\t// Set the current list item title\n\tthis.setVariable(this.parseTreeNode.variableName,this.parseTreeNode.itemTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nListItemWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.listitem = ListItemWidget;\n\n})();",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/macrocall.js": {
            "title": "$:/core/modules/widgets/macrocall.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/macrocall.js\ntype: application/javascript\nmodule-type: widget\n\nMacrocall widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar MacroCallWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nMacroCallWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nMacroCallWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nMacroCallWidget.prototype.execute = function() {\n\t// Get the parse type if specified\n\tthis.parseType = this.getAttribute(\"$type\",\"text/vnd.tiddlywiki\");\n\tthis.renderOutput = this.getAttribute(\"$output\",\"text/html\");\n\t// Merge together the parameters specified in the parse tree with the specified attributes\n\tvar params = this.parseTreeNode.params ? this.parseTreeNode.params.slice(0) : [];\n\t$tw.utils.each(this.attributes,function(attribute,name) {\n\t\tif(name.charAt(0) !== \"$\") {\n\t\t\tparams.push({name: name, value: attribute});\t\t\t\n\t\t}\n\t});\n\t// Get the macro value\n\tvar macroName = this.parseTreeNode.name || this.getAttribute(\"$name\"),\n\t\tvariableInfo = this.getVariableInfo(macroName,{params: params}),\n\t\ttext = variableInfo.text,\n\t\tparseTreeNodes;\n\t// Are we rendering to HTML?\n\tif(this.renderOutput === \"text/html\") {\n\t\t// If so we'll return the parsed macro\n\t\tvar parser = this.wiki.parseText(this.parseType,text,\n\t\t\t\t\t\t\t{parseAsInline: !this.parseTreeNode.isBlock});\n\t\tparseTreeNodes = parser ? parser.tree : [];\n\t\t// Wrap the parse tree in a vars widget assigning the parameters to variables named \"__paramname__\"\n\t\tvar attributes = {};\n\t\t$tw.utils.each(variableInfo.params,function(param) {\n\t\t\tvar name = \"__\" + param.name + \"__\";\n\t\t\tattributes[name] = {\n\t\t\t\tname: name,\n\t\t\t\ttype: \"string\",\n\t\t\t\tvalue: param.value\n\t\t\t};\n\t\t});\n\t\tparseTreeNodes = [{\n\t\t\ttype: \"vars\",\n\t\t\tattributes: attributes,\n\t\t\tchildren: parseTreeNodes\n\t\t}];\n\t} else {\n\t\t// Otherwise, we'll render the text\n\t\tvar plainText = this.wiki.renderText(\"text/plain\",this.parseType,text,{parentWidget: this});\n\t\tparseTreeNodes = [{type: \"text\", text: plainText}];\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nMacroCallWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif($tw.utils.count(changedAttributes) > 0) {\n\t\t// Rerender ourselves\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.macrocall = MacroCallWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/navigator.js": {
            "title": "$:/core/modules/widgets/navigator.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/navigator.js\ntype: application/javascript\nmodule-type: widget\n\nNavigator widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar IMPORT_TITLE = \"$:/Import\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar NavigatorWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t{type: \"tm-navigate\", handler: \"handleNavigateEvent\"},\n\t\t{type: \"tm-edit-tiddler\", handler: \"handleEditTiddlerEvent\"},\n\t\t{type: \"tm-delete-tiddler\", handler: \"handleDeleteTiddlerEvent\"},\n\t\t{type: \"tm-save-tiddler\", handler: \"handleSaveTiddlerEvent\"},\n\t\t{type: \"tm-cancel-tiddler\", handler: \"handleCancelTiddlerEvent\"},\n\t\t{type: \"tm-close-tiddler\", handler: \"handleCloseTiddlerEvent\"},\n\t\t{type: \"tm-close-all-tiddlers\", handler: \"handleCloseAllTiddlersEvent\"},\n\t\t{type: \"tm-close-other-tiddlers\", handler: \"handleCloseOtherTiddlersEvent\"},\n\t\t{type: \"tm-new-tiddler\", handler: \"handleNewTiddlerEvent\"},\n\t\t{type: \"tm-import-tiddlers\", handler: \"handleImportTiddlersEvent\"},\n\t\t{type: \"tm-perform-import\", handler: \"handlePerformImportEvent\"},\n\t\t{type: \"tm-fold-tiddler\", handler: \"handleFoldTiddlerEvent\"},\n\t\t{type: \"tm-fold-other-tiddlers\", handler: \"handleFoldOtherTiddlersEvent\"},\n\t\t{type: \"tm-fold-all-tiddlers\", handler: \"handleFoldAllTiddlersEvent\"},\n\t\t{type: \"tm-unfold-all-tiddlers\", handler: \"handleUnfoldAllTiddlersEvent\"},\n\t\t{type: \"tm-rename-tiddler\", handler: \"handleRenameTiddlerEvent\"}\n\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nNavigatorWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nNavigatorWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nNavigatorWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.storyTitle = this.getAttribute(\"story\");\n\tthis.historyTitle = this.getAttribute(\"history\");\n\tthis.setVariable(\"tv-story-list\",this.storyTitle);\n\tthis.setVariable(\"tv-history-list\",this.historyTitle);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nNavigatorWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.story || changedAttributes.history) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nNavigatorWidget.prototype.getStoryList = function() {\n\treturn this.storyTitle ? this.wiki.getTiddlerList(this.storyTitle) : null;\n};\n\nNavigatorWidget.prototype.saveStoryList = function(storyList) {\n\tif(this.storyTitle) {\n\t\tvar storyTiddler = this.wiki.getTiddler(this.storyTitle);\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\t\t{title: this.storyTitle},\n\t\t\tstoryTiddler,\n\t\t\t{list: storyList}\n\t\t));\t\t\n\t}\n};\n\nNavigatorWidget.prototype.removeTitleFromStory = function(storyList,title) {\n\tif(storyList) {\n\t\tvar p = storyList.indexOf(title);\n\t\twhile(p !== -1) {\n\t\t\tstoryList.splice(p,1);\n\t\t\tp = storyList.indexOf(title);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.replaceFirstTitleInStory = function(storyList,oldTitle,newTitle) {\n\tif(storyList) {\n\t\tvar pos = storyList.indexOf(oldTitle);\n\t\tif(pos !== -1) {\n\t\t\tstoryList[pos] = newTitle;\n\t\t\tdo {\n\t\t\t\tpos = storyList.indexOf(oldTitle,pos + 1);\n\t\t\t\tif(pos !== -1) {\n\t\t\t\t\tstoryList.splice(pos,1);\n\t\t\t\t}\n\t\t\t} while(pos !== -1);\n\t\t} else {\n\t\t\tstoryList.splice(0,0,newTitle);\n\t\t}\t\t\n\t}\n};\n\nNavigatorWidget.prototype.addToStory = function(title,fromTitle) {\n\tif(this.storyTitle) {\n\t\tthis.wiki.addToStory(title,fromTitle,this.storyTitle,{\n\t\t\topenLinkFromInsideRiver: this.getAttribute(\"openLinkFromInsideRiver\",\"top\"),\n\t\t\topenLinkFromOutsideRiver: this.getAttribute(\"openLinkFromOutsideRiver\",\"top\")\n\t\t});\n\t}\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\n*/\nNavigatorWidget.prototype.addToHistory = function(title,fromPageRect) {\n\tthis.wiki.addToHistory(title,fromPageRect,this.historyTitle);\n};\n\n/*\nHandle a tm-navigate event\n*/\nNavigatorWidget.prototype.handleNavigateEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-navigating\",event);\n\tif(event.navigateTo) {\n\t\tthis.addToStory(event.navigateTo,event.navigateFromTitle);\n\t\tif(!event.navigateSuppressNavigation) {\n\t\t\tthis.addToHistory(event.navigateTo,event.navigateFromClientRect);\n\t\t}\n\t}\n\treturn false;\n};\n\n// Close a specified tiddler\nNavigatorWidget.prototype.handleCloseTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\tstoryList = this.getStoryList();\n\t// Look for tiddlers with this title to close\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\treturn false;\n};\n\n// Close all tiddlers\nNavigatorWidget.prototype.handleCloseAllTiddlersEvent = function(event) {\n\tthis.saveStoryList([]);\n\treturn false;\n};\n\n// Close other tiddlers\nNavigatorWidget.prototype.handleCloseOtherTiddlersEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle;\n\tthis.saveStoryList([title]);\n\treturn false;\n};\n\n// Place a tiddler in edit mode\nNavigatorWidget.prototype.handleEditTiddlerEvent = function(event) {\n\tvar editTiddler = $tw.hooks.invokeHook(\"th-editing-tiddler\",event);\n\tif(!editTiddler) {\n\t\treturn false;\n\t}\n\tvar self = this;\n\tfunction isUnmodifiedShadow(title) {\n\t\treturn self.wiki.isShadowTiddler(title) && !self.wiki.tiddlerExists(title);\n\t}\n\tfunction confirmEditShadow(title) {\n\t\treturn confirm($tw.language.getString(\n\t\t\t\"ConfirmEditShadowTiddler\",\n\t\t\t{variables:\n\t\t\t\t{title: title}\n\t\t\t}\n\t\t));\n\t}\n\tvar title = event.param || event.tiddlerTitle;\n\tif(isUnmodifiedShadow(title) && !confirmEditShadow(title)) {\n\t\treturn false;\n\t}\n\t// Replace the specified tiddler with a draft in edit mode\n\tvar draftTiddler = this.makeDraftTiddler(title);\n\t// Update the story and history if required\n\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\tvar draftTitle = draftTiddler.fields.title,\n\t\t\tstoryList = this.getStoryList();\n\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\tthis.saveStoryList(storyList);\n\t\treturn false;\n\t}\n};\n\n// Delete a tiddler\nNavigatorWidget.prototype.handleDeleteTiddlerEvent = function(event) {\n\t// Get the tiddler we're deleting\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList(),\n\t\toriginalTitle = tiddler ? tiddler.fields[\"draft.of\"] : \"\",\n\t\toriginalTiddler = originalTitle ? this.wiki.getTiddler(originalTitle) : undefined,\n\t\tconfirmationTitle;\n\tif(!tiddler) {\n\t\treturn false;\n\t}\n\t// Check if the tiddler we're deleting is in draft mode\n\tif(originalTitle) {\n\t\t// If so, we'll prompt for confirmation referencing the original tiddler\n\t\tconfirmationTitle = originalTitle;\n\t} else {\n\t\t// If not a draft, then prompt for confirmation referencing the specified tiddler\n\t\tconfirmationTitle = title;\n\t}\n\t// Seek confirmation\n\tif((this.wiki.getTiddler(originalTitle) || (tiddler.fields.text || \"\") !== \"\") && !confirm($tw.language.getString(\n\t\t\t\t\"ConfirmDeleteTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: confirmationTitle}\n\t\t\t\t}\n\t\t\t))) {\n\t\treturn false;\n\t}\n\t// Delete the original tiddler\n\tif(originalTitle) {\n\t\tif(originalTiddler) {\n\t\t\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",originalTiddler);\n\t\t}\n\t\tthis.wiki.deleteTiddler(originalTitle);\n\t\tthis.removeTitleFromStory(storyList,originalTitle);\n\t}\n\t// Invoke the hook function and delete this tiddler\n\t$tw.hooks.invokeHook(\"th-deleting-tiddler\",tiddler);\n\tthis.wiki.deleteTiddler(title);\n\t// Remove the closed tiddler from the story\n\tthis.removeTitleFromStory(storyList,title);\n\tthis.saveStoryList(storyList);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\treturn false;\n};\n\n/*\nCreate/reuse the draft tiddler for a given title\n*/\nNavigatorWidget.prototype.makeDraftTiddler = function(targetTitle) {\n\t// See if there is already a draft tiddler for this tiddler\n\tvar draftTitle = this.wiki.findDraft(targetTitle);\n\tif(draftTitle) {\n\t\treturn this.wiki.getTiddler(draftTitle);\n\t}\n\t// Get the current value of the tiddler we're editing\n\tvar tiddler = this.wiki.getTiddler(targetTitle);\n\t// Save the initial value of the draft tiddler\n\tdraftTitle = this.generateDraftTitle(targetTitle);\n\tvar draftTiddler = new $tw.Tiddler(\n\t\t\ttiddler,\n\t\t\t{\n\t\t\t\ttitle: draftTitle,\n\t\t\t\t\"draft.title\": targetTitle,\n\t\t\t\t\"draft.of\": targetTitle\n\t\t\t},\n\t\t\tthis.wiki.getModificationFields()\n\t\t);\n\tthis.wiki.addTiddler(draftTiddler);\n\treturn draftTiddler;\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nNavigatorWidget.prototype.generateDraftTitle = function(title) {\n\treturn this.wiki.generateDraftTitle(title);\n};\n\n// Take a tiddler out of edit mode, saving the changes\nNavigatorWidget.prototype.handleSaveTiddlerEvent = function(event) {\n\tvar title = event.param || event.tiddlerTitle,\n\t\ttiddler = this.wiki.getTiddler(title),\n\t\tstoryList = this.getStoryList();\n\t// Replace the original tiddler with the draft\n\tif(tiddler) {\n\t\tvar draftTitle = (tiddler.fields[\"draft.title\"] || \"\").trim(),\n\t\t\tdraftOf = (tiddler.fields[\"draft.of\"] || \"\").trim();\n\t\tif(draftTitle) {\n\t\t\tvar isRename = draftOf !== draftTitle,\n\t\t\t\tisConfirmed = true;\n\t\t\tif(isRename && this.wiki.tiddlerExists(draftTitle)) {\n\t\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\t\"ConfirmOverwriteTiddler\",\n\t\t\t\t\t{variables:\n\t\t\t\t\t\t{title: draftTitle}\n\t\t\t\t\t}\n\t\t\t\t));\n\t\t\t}\n\t\t\tif(isConfirmed) {\n\t\t\t\t// Create the new tiddler and pass it through the th-saving-tiddler hook\n\t\t\t\tvar newTiddler = new $tw.Tiddler(this.wiki.getCreationFields(),tiddler,{\n\t\t\t\t\ttitle: draftTitle,\n\t\t\t\t\t\"draft.title\": undefined,\n\t\t\t\t\t\"draft.of\": undefined\n\t\t\t\t},this.wiki.getModificationFields());\n\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-saving-tiddler\",newTiddler);\n\t\t\t\tthis.wiki.addTiddler(newTiddler);\n\t\t\t\t// If enabled, relink references to renamed tiddler\n\t\t\t\tvar shouldRelink = this.getAttribute(\"relinkOnRename\",\"no\").toLowerCase().trim() === \"yes\";\n\t\t\t\tif(isRename && shouldRelink && this.wiki.tiddlerExists(draftOf)) {\nconsole.log(\"Relinking '\" + draftOf + \"' to '\" + draftTitle + \"'\");\n\t\t\t\t\tthis.wiki.relinkTiddler(draftOf,draftTitle);\n\t\t\t\t}\n\t\t\t\t// Remove the draft tiddler\n\t\t\t\tthis.wiki.deleteTiddler(title);\n\t\t\t\t// Remove the original tiddler if we're renaming it\n\t\t\t\tif(isRename) {\n\t\t\t\t\tthis.wiki.deleteTiddler(draftOf);\n\t\t\t\t}\n\t\t\t\t// #2381 always remove new title & old\n\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\tthis.removeTitleFromStory(storyList,draftOf);\n\t\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\t\t// Replace the draft in the story with the original\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,title,draftTitle);\n\t\t\t\t\tthis.addToHistory(draftTitle,event.navigateFromClientRect);\n\t\t\t\t\tif(draftTitle !== this.storyTitle) {\n\t\t\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// Trigger an autosave\n\t\t\t\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Take a tiddler out of edit mode without saving the changes\nNavigatorWidget.prototype.handleCancelTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-cancelling-tiddler\", event);\n\t// Flip the specified tiddler from draft back to the original\n\tvar draftTitle = event.param || event.tiddlerTitle,\n\t\tdraftTiddler = this.wiki.getTiddler(draftTitle),\n\t\toriginalTitle = draftTiddler && draftTiddler.fields[\"draft.of\"];\n\tif(draftTiddler && originalTitle) {\n\t\t// Ask for confirmation if the tiddler text has changed\n\t\tvar isConfirmed = true,\n\t\t\toriginalTiddler = this.wiki.getTiddler(originalTitle),\n\t\t\tstoryList = this.getStoryList();\n\t\tif(this.wiki.isDraftModified(draftTitle)) {\n\t\t\tisConfirmed = confirm($tw.language.getString(\n\t\t\t\t\"ConfirmCancelTiddler\",\n\t\t\t\t{variables:\n\t\t\t\t\t{title: draftTitle}\n\t\t\t\t}\n\t\t\t));\n\t\t}\n\t\t// Remove the draft tiddler\n\t\tif(isConfirmed) {\n\t\t\tthis.wiki.deleteTiddler(draftTitle);\n\t\t\tif(!event.paramObject || event.paramObject.suppressNavigation !== \"yes\") {\n\t\t\t\tif(originalTiddler) {\n\t\t\t\t\tthis.replaceFirstTitleInStory(storyList,draftTitle,originalTitle);\n\t\t\t\t\tthis.addToHistory(originalTitle,event.navigateFromClientRect);\n\t\t\t\t} else {\n\t\t\t\t\tthis.removeTitleFromStory(storyList,draftTitle);\n\t\t\t\t}\n\t\t\t\tthis.saveStoryList(storyList);\n\t\t\t}\n\t\t}\n\t}\n\treturn false;\n};\n\n// Create a new draft tiddler\n// event.param can either be the title of a template tiddler, or a hashmap of fields.\n//\n// The title of the newly created tiddler follows these rules:\n// * If a hashmap was used and a title field was specified, use that title\n// * If a hashmap was used without a title field, use a default title, if necessary making it unique with a numeric suffix\n// * If a template tiddler was used, use the title of the template, if necessary making it unique with a numeric suffix\n//\n// If a draft of the target tiddler already exists then it is reused\nNavigatorWidget.prototype.handleNewTiddlerEvent = function(event) {\n\tevent = $tw.hooks.invokeHook(\"th-new-tiddler\", event);\n\t// Get the story details\n\tvar storyList = this.getStoryList(),\n\t\ttemplateTiddler, additionalFields, title, draftTitle, existingTiddler;\n\t// Get the template tiddler (if any)\n\tif(typeof event.param === \"string\") {\n\t\t// Get the template tiddler\n\t\ttemplateTiddler = this.wiki.getTiddler(event.param);\n\t\t// Generate a new title\n\t\ttitle = this.wiki.generateNewTitle(event.param || $tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t}\n\t// Get the specified additional fields\n\tif(typeof event.paramObject === \"object\") {\n\t\tadditionalFields = event.paramObject;\n\t}\n\tif(typeof event.param === \"object\") { // Backwards compatibility with 5.1.3\n\t\tadditionalFields = event.param;\n\t}\n\tif(additionalFields && additionalFields.title) {\n\t\ttitle = additionalFields.title;\n\t}\n\t// Make a copy of the additional fields excluding any blank ones\n\tvar filteredAdditionalFields = $tw.utils.extend({},additionalFields);\n\tObject.keys(filteredAdditionalFields).forEach(function(fieldName) {\n\t\tif(filteredAdditionalFields[fieldName] === \"\") {\n\t\t\tdelete filteredAdditionalFields[fieldName];\n\t\t}\n\t});\n\t// Generate a title if we don't have one\n\ttitle = title || this.wiki.generateNewTitle($tw.language.getString(\"DefaultNewTiddlerTitle\"));\n\t// Find any existing draft for this tiddler\n\tdraftTitle = this.wiki.findDraft(title);\n\t// Pull in any existing tiddler\n\tif(draftTitle) {\n\t\texistingTiddler = this.wiki.getTiddler(draftTitle);\n\t} else {\n\t\tdraftTitle = this.generateDraftTitle(title);\n\t\texistingTiddler = this.wiki.getTiddler(title);\n\t}\n\t// Merge the tags\n\tvar mergedTags = [];\n\tif(existingTiddler && existingTiddler.fields.tags) {\n\t\t$tw.utils.pushTop(mergedTags,existingTiddler.fields.tags);\n\t}\n\tif(additionalFields && additionalFields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,$tw.utils.parseStringArray(additionalFields.tags));\n\t}\n\tif(templateTiddler && templateTiddler.fields.tags) {\n\t\t// Merge tags\n\t\tmergedTags = $tw.utils.pushTop(mergedTags,templateTiddler.fields.tags);\n\t}\n\t// Save the draft tiddler\n\tvar draftTiddler = new $tw.Tiddler({\n\t\t\ttext: \"\",\n\t\t\t\"draft.title\": title\n\t\t},\n\t\ttemplateTiddler,\n\t\tadditionalFields,\n\t\tthis.wiki.getCreationFields(),\n\t\texistingTiddler,\n\t\tfilteredAdditionalFields,\n\t\t{\n\t\t\ttitle: draftTitle,\n\t\t\t\"draft.of\": title,\n\t\t\ttags: mergedTags\n\t\t},this.wiki.getModificationFields());\n\tthis.wiki.addTiddler(draftTiddler);\n\t// Update the story to insert the new draft at the top and remove any existing tiddler\n\tif(storyList && storyList.indexOf(draftTitle) === -1) {\n\t\tvar slot = storyList.indexOf(event.navigateFromTitle);\n\t\tif(slot === -1) {\n\t\t\tslot = this.getAttribute(\"openLinkFromOutsideRiver\",\"top\") === \"bottom\" ? storyList.length - 1 : slot;\n\t\t}\n\t\tstoryList.splice(slot + 1,0,draftTitle);\n\t}\n\tif(storyList && storyList.indexOf(title) !== -1) {\n\t\tstoryList.splice(storyList.indexOf(title),1);\n\t}\n\tthis.saveStoryList(storyList);\n\t// Add a new record to the top of the history stack\n\tthis.addToHistory(draftTitle);\n\treturn false;\n};\n\n// Import JSON tiddlers into a pending import tiddler\nNavigatorWidget.prototype.handleImportTiddlersEvent = function(event) {\n\t// Get the tiddlers\n\tvar tiddlers = [];\n\ttry {\n\t\ttiddlers = JSON.parse(event.param);\n\t} catch(e) {\n\t}\n\t// Get the current $:/Import tiddler\n\tvar importTiddler = this.wiki.getTiddler(IMPORT_TITLE),\n\t\timportData = this.wiki.getTiddlerData(IMPORT_TITLE,{}),\n\t\tnewFields = new Object({\n\t\t\ttitle: IMPORT_TITLE,\n\t\t\ttype: \"application/json\",\n\t\t\t\"plugin-type\": \"import\",\n\t\t\t\"status\": \"pending\"\n\t\t}),\n\t\tincomingTiddlers = [];\n\t// Process each tiddler\n\timportData.tiddlers = importData.tiddlers || {};\n\t$tw.utils.each(tiddlers,function(tiddlerFields) {\n\t\ttiddlerFields.title = $tw.utils.trim(tiddlerFields.title);\n\t\tvar title = tiddlerFields.title;\n\t\tif(title) {\n\t\t\tincomingTiddlers.push(title);\n\t\t\timportData.tiddlers[title] = tiddlerFields;\n\t\t}\n\t});\n\t// Give the active upgrader modules a chance to process the incoming tiddlers\n\tvar messages = this.wiki.invokeUpgraders(incomingTiddlers,importData.tiddlers);\n\t$tw.utils.each(messages,function(message,title) {\n\t\tnewFields[\"message-\" + title] = message;\n\t});\n\t// Deselect any suppressed tiddlers\n\t$tw.utils.each(importData.tiddlers,function(tiddler,title) {\n\t\tif($tw.utils.count(tiddler) === 0) {\n\t\t\tnewFields[\"selection-\" + title] = \"unchecked\";\n\t\t}\n\t});\n\t// Save the $:/Import tiddler\n\tnewFields.text = JSON.stringify(importData,null,$tw.config.preferences.jsonSpaces);\n\tthis.wiki.addTiddler(new $tw.Tiddler(importTiddler,newFields));\n\t// Update the story and history details\n\tif(this.getVariable(\"tv-auto-open-on-import\") !== \"no\") {\n\t\tvar storyList = this.getStoryList(),\n\t\t\thistory = [];\n\t\t// Add it to the story\n\t\tif(storyList && storyList.indexOf(IMPORT_TITLE) === -1) {\n\t\t\tstoryList.unshift(IMPORT_TITLE);\n\t\t}\n\t\t// And to history\n\t\thistory.push(IMPORT_TITLE);\n\t\t// Save the updated story and history\n\t\tthis.saveStoryList(storyList);\n\t\tthis.addToHistory(history);\n\t}\n\treturn false;\n};\n\n//\nNavigatorWidget.prototype.handlePerformImportEvent = function(event) {\n\tvar self = this,\n\t\timportTiddler = this.wiki.getTiddler(event.param),\n\t\timportData = this.wiki.getTiddlerDataCached(event.param,{tiddlers: {}}),\n\t\timportReport = [];\n\t// Add the tiddlers to the store\n\timportReport.push($tw.language.getString(\"Import/Imported/Hint\") + \"\\n\");\n\t$tw.utils.each(importData.tiddlers,function(tiddlerFields) {\n\t\tvar title = tiddlerFields.title;\n\t\tif(title && importTiddler && importTiddler.fields[\"selection-\" + title] !== \"unchecked\") {\n\t\t\tvar tiddler = new $tw.Tiddler(tiddlerFields);\n\t\t\ttiddler = $tw.hooks.invokeHook(\"th-importing-tiddler\",tiddler);\n\t\t\tself.wiki.addTiddler(tiddler);\n\t\t\timportReport.push(\"# [[\" + tiddlerFields.title + \"]]\");\n\t\t}\n\t});\n\t// Replace the $:/Import tiddler with an import report\n\tthis.wiki.addTiddler(new $tw.Tiddler({\n\t\ttitle: event.param,\n\t\ttext: importReport.join(\"\\n\"),\n\t\t\"status\": \"complete\"\n\t}));\n\t// Navigate to the $:/Import tiddler\n\tthis.addToHistory([event.param]);\n\t// Trigger an autosave\n\t$tw.rootWidget.dispatchEvent({type: \"tm-auto-save-wiki\"});\n};\n\nNavigatorWidget.prototype.handleFoldTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {};\n\tif(paramObject.foldedState) {\n\t\tvar foldedState = this.wiki.getTiddlerText(paramObject.foldedState,\"show\") === \"show\" ? \"hide\" : \"show\";\n\t\tthis.wiki.setText(paramObject.foldedState,\"text\",null,foldedState);\n\t}\n};\n\nNavigatorWidget.prototype.handleFoldOtherTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,event.param === title ? \"show\" : \"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleFoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix || \"$:/state/folded/\";\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"hide\");\n\t});\n};\n\nNavigatorWidget.prototype.handleUnfoldAllTiddlersEvent = function(event) {\n\tvar self = this,\n\t\tparamObject = event.paramObject || {},\n\t\tprefix = paramObject.foldedStatePrefix;\n\t$tw.utils.each(this.getStoryList(),function(title) {\n\t\tself.wiki.setText(prefix + title,\"text\",null,\"show\");\n\t});\n};\n\nNavigatorWidget.prototype.handleRenameTiddlerEvent = function(event) {\n\tvar paramObject = event.paramObject || {},\n\t\tfrom = paramObject.from || event.tiddlerTitle,\n\t\tto = paramObject.to;\n\tthis.wiki.renameTiddler(from,to);\n};\n\nexports.navigator = NavigatorWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/password.js": {
            "title": "$:/core/modules/widgets/password.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/password.js\ntype: application/javascript\nmodule-type: widget\n\nPassword widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar PasswordWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nPasswordWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nPasswordWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Get the current password\n\tvar password = $tw.browser ? $tw.utils.getPassword(this.passwordName) || \"\" : \"\";\n\t// Create our element\n\tvar domNode = this.document.createElement(\"input\");\n\tdomNode.setAttribute(\"type\",\"password\");\n\tdomNode.setAttribute(\"value\",password);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(domNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tthis.domNodes.push(domNode);\n};\n\nPasswordWidget.prototype.handleChangeEvent = function(event) {\n\tvar password = this.domNodes[0].value;\n\treturn $tw.utils.savePassword(this.passwordName,password);\n};\n\n/*\nCompute the internal state of the widget\n*/\nPasswordWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.passwordName = this.getAttribute(\"name\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nPasswordWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.password = PasswordWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/qualify.js": {
            "title": "$:/core/modules/widgets/qualify.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/qualify.js\ntype: application/javascript\nmodule-type: widget\n\nQualify text to a variable \n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar QualifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nQualifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nQualifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nQualifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.qualifyName = this.getAttribute(\"name\");\n\tthis.qualifyTitle = this.getAttribute(\"title\");\n\t// Set context variable\n\tif(this.qualifyName) {\n\t\tthis.setVariable(this.qualifyName,this.qualifyTitle + \"-\" + this.getStateQualifier());\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nQualifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.title) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.qualify = QualifyWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/radio.js": {
            "title": "$:/core/modules/widgets/radio.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/radio.js\ntype: application/javascript\nmodule-type: widget\n\nSet a field or index at a given tiddler via radio buttons\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RadioWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRadioWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRadioWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\tvar isChecked = this.getValue() === this.radioValue;\n\t// Create our elements\n\tthis.labelDomNode = this.document.createElement(\"label\");\n\tthis.labelDomNode.setAttribute(\"class\",\n   \t\t\"tc-radio \" + this.radioClass + (isChecked ? \" tc-radio-selected\" : \"\")\n  \t);\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"radio\");\n\tif(isChecked) {\n\t\tthis.inputDomNode.setAttribute(\"checked\",\"true\");\n\t}\n\tthis.labelDomNode.appendChild(this.inputDomNode);\n\tthis.spanDomNode = this.document.createElement(\"span\");\n\tthis.labelDomNode.appendChild(this.spanDomNode);\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.labelDomNode,nextSibling);\n\tthis.renderChildren(this.spanDomNode,null);\n\tthis.domNodes.push(this.labelDomNode);\n};\n\nRadioWidget.prototype.getValue = function() {\n\tvar value,\n\t\ttiddler = this.wiki.getTiddler(this.radioTitle);\n\tif (this.radioIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.radioTitle,this.radioIndex);\n\t} else {\n\t\tvalue = tiddler && tiddler.getFieldString(this.radioField);\n\t}\n\treturn value;\n};\n\nRadioWidget.prototype.setValue = function() {\n\tif(this.radioIndex) {\n\t\tthis.wiki.setText(this.radioTitle,\"\",this.radioIndex,this.radioValue);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.radioTitle),\n\t\t\taddition = {};\n\t\taddition[this.radioField] = this.radioValue;\n\t\tthis.wiki.addTiddler(new $tw.Tiddler(this.wiki.getCreationFields(),{title: this.radioTitle},tiddler,addition,this.wiki.getModificationFields()));\n\t}\n};\n\nRadioWidget.prototype.handleChangeEvent = function(event) {\n\tif(this.inputDomNode.checked) {\n\t\tthis.setValue();\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRadioWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.radioTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.radioField = this.getAttribute(\"field\",\"text\");\n\tthis.radioIndex = this.getAttribute(\"index\");\n\tthis.radioValue = this.getAttribute(\"value\");\n\tthis.radioClass = this.getAttribute(\"class\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRadioWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.radioTitle]) {\n\t\t\tthis.inputDomNode.checked = this.getValue() === this.radioValue;\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.radio = RadioWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/range.js": {
            "title": "$:/core/modules/widgets/range.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/range.js\ntype: application/javascript\nmodule-type: widget\n\nRange widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RangeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRangeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRangeWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute our attributes\n\tthis.computeAttributes();\n\t// Execute our logic\n\tthis.execute();\n\t// Create our elements\n\tthis.inputDomNode = this.document.createElement(\"input\");\n\tthis.inputDomNode.setAttribute(\"type\",\"range\");\n\tthis.inputDomNode.setAttribute(\"class\",this.elementClass);\n\tif(this.minValue){\n\t\tthis.inputDomNode.setAttribute(\"min\", this.minValue);\n\t}\n\tif(this.maxValue){\n\t\tthis.inputDomNode.setAttribute(\"max\", this.maxValue);\n\t}\n\tif(this.increment){\n\t\tthis.inputDomNode.setAttribute(\"step\", this.increment);\n\t}\n\tthis.inputDomNode.value = this.getValue();\n\t// Add a click event handler\n\t$tw.utils.addEventListeners(this.inputDomNode,[\n\t\t{name: \"input\", handlerObject: this, handlerMethod: \"handleInputEvent\"},\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleInputEvent\"}\t\t\n\t]);\n\t// Insert the label into the DOM and render any children\n\tparent.insertBefore(this.inputDomNode,nextSibling);\n\tthis.domNodes.push(this.inputDomNode);\n};\n\nRangeWidget.prototype.getValue = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle),\n\t\tfieldName = this.tiddlerField || \"text\",\n\t\tvalue   = this.defaultValue;\n\tif(tiddler) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(tiddler,this.tiddlerIndex,this.defaultValue || \"\");\n\t\t} else {\n\t\t\tif($tw.utils.hop(tiddler.fields,fieldName)) {\n\t\t\t\tvalue = tiddler.fields[fieldName] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = this.defaultValue || \"\";\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nRangeWidget.prototype.handleInputEvent = function(event) {\n\tif(this.getValue() !== this.inputDomNode.value) {\n\t\tif(this.tiddlerIndex) {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,\"\",this.tiddlerIndex,this.inputDomNode.value);\n\t\t} else {\n\t\t\tthis.wiki.setText(this.tiddlerTitle,this.tiddlerField,null,this.inputDomNode.value);\n\t\t}\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nRangeWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.tiddlerField = this.getAttribute(\"field\");\n\tthis.tiddlerIndex = this.getAttribute(\"index\");\n\tthis.minValue = this.getAttribute(\"min\");\n\tthis.maxValue = this.getAttribute(\"max\");\n\tthis.increment = this.getAttribute(\"increment\");\n\tthis.defaultValue = this.getAttribute(\"default\");\n\tthis.elementClass = this.getAttribute(\"class\",\"\");\n\t// Make the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRangeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes['min'] || changedAttributes['max'] || changedAttributes['increment'] || changedAttributes[\"default\"] || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tif(changedTiddlers[this.tiddlerTitle]) {\n\t\t\tvar value = this.getValue();\n\t\t\tif(this.inputDomNode.value !== value) {\n\t\t\t\tthis.inputDomNode.value = value;\t\t\t\t\n\t\t\t}\n\t\t\trefreshed = true;\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.range = RangeWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/raw.js": {
            "title": "$:/core/modules/widgets/raw.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/raw.js\ntype: application/javascript\nmodule-type: widget\n\nRaw widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RawWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRawWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRawWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tvar div = this.document.createElement(\"div\");\n\tdiv.innerHTML=this.parseTreeNode.html;\n\tparent.insertBefore(div,nextSibling);\n\tthis.domNodes.push(div);\t\n};\n\n/*\nCompute the internal state of the widget\n*/\nRawWidget.prototype.execute = function() {\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRawWidget.prototype.refresh = function(changedTiddlers) {\n\treturn false;\n};\n\nexports.raw = RawWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/reveal.js": {
            "title": "$:/core/modules/widgets/reveal.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/reveal.js\ntype: application/javascript\nmodule-type: widget\n\nReveal widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar RevealWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nRevealWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nRevealWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar tag = this.parseTreeNode.isBlock ? \"div\" : \"span\";\n\tif(this.revealTag && $tw.config.htmlUnsafeElements.indexOf(this.revealTag) === -1) {\n\t\ttag = this.revealTag;\n\t}\n\tvar domNode = this.document.createElement(tag);\n\tvar classes = this[\"class\"].split(\" \") || [];\n\tclasses.push(\"tc-reveal\");\n\tdomNode.className = classes.join(\" \");\n\tif(this.style) {\n\t\tdomNode.setAttribute(\"style\",this.style);\n\t}\n\tparent.insertBefore(domNode,nextSibling);\n\tthis.renderChildren(domNode,null);\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\t}\n\tif(!this.isOpen) {\n\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t}\n\tthis.domNodes.push(domNode);\n};\n\nRevealWidget.prototype.positionPopup = function(domNode) {\n\tdomNode.style.position = \"absolute\";\n\tdomNode.style.zIndex = \"1000\";\n\tvar left,top;\n\tswitch(this.position) {\n\t\tcase \"left\":\n\t\t\tleft = this.popup.left - domNode.offsetWidth;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"above\":\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"aboveright\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top + this.popup.height - domNode.offsetHeight;\n\t\t\tbreak;\n\t\tcase \"right\":\n\t\t\tleft = this.popup.left + this.popup.width;\n\t\t\ttop = this.popup.top;\n\t\t\tbreak;\n\t\tcase \"belowleft\":\n\t\t\tleft = this.popup.left + this.popup.width - domNode.offsetWidth;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t\tdefault: // Below\n\t\t\tleft = this.popup.left;\n\t\t\ttop = this.popup.top + this.popup.height;\n\t\t\tbreak;\n\t}\n\tif(!this.positionAllowNegative) {\n\t\tleft = Math.max(0,left);\n\t\ttop = Math.max(0,top);\n\t}\n\tdomNode.style.left = left + \"px\";\n\tdomNode.style.top = top + \"px\";\n};\n\n/*\nCompute the internal state of the widget\n*/\nRevealWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.state = this.getAttribute(\"state\");\n\tthis.revealTag = this.getAttribute(\"tag\");\n\tthis.type = this.getAttribute(\"type\");\n\tthis.text = this.getAttribute(\"text\");\n\tthis.position = this.getAttribute(\"position\");\n\tthis.positionAllowNegative = this.getAttribute(\"positionAllowNegative\") === \"yes\";\n\tthis[\"class\"] = this.getAttribute(\"class\",\"\");\n\tthis.style = this.getAttribute(\"style\",\"\");\n\tthis[\"default\"] = this.getAttribute(\"default\",\"\");\n\tthis.animate = this.getAttribute(\"animate\",\"no\");\n\tthis.retain = this.getAttribute(\"retain\",\"no\");\n\tthis.openAnimation = this.animate === \"no\" ? undefined : \"open\";\n\tthis.closeAnimation = this.animate === \"no\" ? undefined : \"close\";\n\t// Compute the title of the state tiddler and read it\n\tthis.stateTiddlerTitle = this.state;\n\tthis.stateTitle = this.getAttribute(\"stateTitle\");\n\tthis.stateField = this.getAttribute(\"stateField\");\n\tthis.stateIndex = this.getAttribute(\"stateIndex\");\n\tthis.readState();\n\t// Construct the child widgets\n\tvar childNodes = this.isOpen ? this.parseTreeNode.children : [];\n\tthis.hasChildNodes = this.isOpen;\n\tthis.makeChildWidgets(childNodes);\n};\n\n/*\nRead the state tiddler\n*/\nRevealWidget.prototype.readState = function() {\n\t// Read the information from the state tiddler\n\tvar state,\n\t    defaultState = this[\"default\"];\n\tif(this.stateTitle) {\n\t\tvar stateTitleTiddler = this.wiki.getTiddler(this.stateTitle);\n\t\tif(this.stateField) {\n\t\t\tstate = stateTitleTiddler ? stateTitleTiddler.getFieldString(this.stateField) || defaultState : defaultState;\n\t\t} else if(this.stateIndex) {\n\t\t\tstate = stateTitleTiddler ? this.wiki.extractTiddlerDataItem(this.stateTitle,this.stateIndex) || defaultState : defaultState;\n\t\t} else if(stateTitleTiddler) {\n\t\t\tstate = this.wiki.getTiddlerText(this.stateTitle) || defaultState;\n\t\t} else {\n\t\t\tstate = defaultState;\n\t\t}\n\t} else {\n\t\tstate = this.stateTiddlerTitle ? this.wiki.getTextReference(this.state,this[\"default\"],this.getVariable(\"currentTiddler\")) : this[\"default\"];\n\t}\n\tif(state === null) {\n\t\tstate = this[\"default\"];\n\t}\n\tswitch(this.type) {\n\t\tcase \"popup\":\n\t\t\tthis.readPopupState(state);\n\t\t\tbreak;\n\t\tcase \"match\":\n\t\t\tthis.isOpen = this.text === state;\n\t\t\tbreak;\n\t\tcase \"nomatch\":\n\t\t\tthis.isOpen = this.text !== state;\n\t\t\tbreak;\n\t\tcase \"lt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t\tcase \"gt\":\n\t\t\tthis.isOpen = !!(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"lteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) > 0);\n\t\t\tbreak;\n\t\tcase \"gteq\":\n\t\t\tthis.isOpen = !(this.compareStateText(state) < 0);\n\t\t\tbreak;\n\t}\n};\n\nRevealWidget.prototype.compareStateText = function(state) {\n\treturn state.localeCompare(this.text,undefined,{numeric: true,sensitivity: \"case\"});\n};\n\nRevealWidget.prototype.readPopupState = function(state) {\n\tvar popupLocationRegExp = /^\\((-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+),(-?[0-9\\.E]+)\\)$/,\n\t\tmatch = popupLocationRegExp.exec(state);\n\t// Check if the state matches the location regexp\n\tif(match) {\n\t\t// If so, we're open\n\t\tthis.isOpen = true;\n\t\t// Get the location\n\t\tthis.popup = {\n\t\t\tleft: parseFloat(match[1]),\n\t\t\ttop: parseFloat(match[2]),\n\t\t\twidth: parseFloat(match[3]),\n\t\t\theight: parseFloat(match[4])\n\t\t};\n\t} else {\n\t\t// If not, we're closed\n\t\tthis.isOpen = false;\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nRevealWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.state || changedAttributes.type || changedAttributes.text || changedAttributes.position || changedAttributes.positionAllowNegative || changedAttributes[\"default\"] || changedAttributes.animate || changedAttributes.stateTitle || changedAttributes.stateField || changedAttributes.stateIndex) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar currentlyOpen = this.isOpen;\n\t\tthis.readState();\n\t\tif(this.isOpen !== currentlyOpen) {\n\t\t\tif(this.retain === \"yes\") {\n\t\t\t\tthis.updateState();\n\t\t\t} else {\n\t\t\t\tthis.refreshSelf();\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\n/*\nCalled by refresh() to dynamically show or hide the content\n*/\nRevealWidget.prototype.updateState = function() {\n\tvar self = this;\n\t// Read the current state\n\tthis.readState();\n\t// Construct the child nodes if needed\n\tvar domNode = this.domNodes[0];\n\tif(this.isOpen && !this.hasChildNodes) {\n\t\tthis.hasChildNodes = true;\n\t\tthis.makeChildWidgets(this.parseTreeNode.children);\n\t\tthis.renderChildren(domNode,null);\n\t}\n\t// Animate our DOM node\n\tif(!domNode.isTiddlyWikiFakeDom && this.type === \"popup\" && this.isOpen) {\n\t\tthis.positionPopup(domNode);\n\t\t$tw.utils.addClass(domNode,\"tc-popup\"); // Make sure that clicks don't dismiss popups within the revealed content\n\n\t}\n\tif(this.isOpen) {\n\t\tdomNode.removeAttribute(\"hidden\");\n        $tw.anim.perform(this.openAnimation,domNode);\n\t} else {\n\t\t$tw.anim.perform(this.closeAnimation,domNode,{callback: function() {\n\t\t\t//make sure that the state hasn't changed during the close animation\n\t\t\tself.readState()\n\t\t\tif(!self.isOpen) {\n\t\t\t\tdomNode.setAttribute(\"hidden\",\"true\");\n\t\t\t}\n\t\t}});\n\t}\n};\n\nexports.reveal = RevealWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/scrollable.js": {
            "title": "$:/core/modules/widgets/scrollable.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/scrollable.js\ntype: application/javascript\nmodule-type: widget\n\nScrollable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ScrollableWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.scaleFactor = 1;\n\tthis.addEventListeners([\n\t\t{type: \"tm-scroll\", handler: \"handleScrollEvent\"}\n\t]);\n\tif($tw.browser) {\n\t\tthis.requestAnimationFrame = window.requestAnimationFrame ||\n\t\t\twindow.webkitRequestAnimationFrame ||\n\t\t\twindow.mozRequestAnimationFrame ||\n\t\t\tfunction(callback) {\n\t\t\t\treturn window.setTimeout(callback, 1000/60);\n\t\t\t};\n\t\tthis.cancelAnimationFrame = window.cancelAnimationFrame ||\n\t\t\twindow.webkitCancelAnimationFrame ||\n\t\t\twindow.webkitCancelRequestAnimationFrame ||\n\t\t\twindow.mozCancelAnimationFrame ||\n\t\t\twindow.mozCancelRequestAnimationFrame ||\n\t\t\tfunction(id) {\n\t\t\t\twindow.clearTimeout(id);\n\t\t\t};\n\t}\n};\n\n/*\nInherit from the base widget class\n*/\nScrollableWidget.prototype = new Widget();\n\nScrollableWidget.prototype.cancelScroll = function() {\n\tif(this.idRequestFrame) {\n\t\tthis.cancelAnimationFrame.call(window,this.idRequestFrame);\n\t\tthis.idRequestFrame = null;\n\t}\n};\n\n/*\nHandle a scroll event\n*/\nScrollableWidget.prototype.handleScrollEvent = function(event) {\n\t// Pass the scroll event through if our offsetsize is larger than our scrollsize\n\tif(this.outerDomNode.scrollWidth <= this.outerDomNode.offsetWidth && this.outerDomNode.scrollHeight <= this.outerDomNode.offsetHeight && this.fallthrough === \"yes\") {\n\t\treturn true;\n\t}\n\tthis.scrollIntoView(event.target);\n\treturn false; // Handled event\n};\n\n/*\nScroll an element into view\n*/\nScrollableWidget.prototype.scrollIntoView = function(element) {\n\tvar duration = $tw.utils.getAnimationDuration();\n\tthis.cancelScroll();\n\tthis.startTime = Date.now();\n\tvar scrollPosition = {\n\t\tx: this.outerDomNode.scrollLeft,\n\t\ty: this.outerDomNode.scrollTop\n\t};\n\t// Get the client bounds of the element and adjust by the scroll position\n\tvar scrollableBounds = this.outerDomNode.getBoundingClientRect(),\n\t\tclientTargetBounds = element.getBoundingClientRect(),\n\t\tbounds = {\n\t\t\tleft: clientTargetBounds.left + scrollPosition.x - scrollableBounds.left,\n\t\t\ttop: clientTargetBounds.top + scrollPosition.y - scrollableBounds.top,\n\t\t\twidth: clientTargetBounds.width,\n\t\t\theight: clientTargetBounds.height\n\t\t};\n\t// We'll consider the horizontal and vertical scroll directions separately via this function\n\tvar getEndPos = function(targetPos,targetSize,currentPos,currentSize) {\n\t\t\t// If the target is already visible then stay where we are\n\t\t\tif(targetPos >= currentPos && (targetPos + targetSize) <= (currentPos + currentSize)) {\n\t\t\t\treturn currentPos;\n\t\t\t// If the target is above/left of the current view, then scroll to its top/left\n\t\t\t} else if(targetPos <= currentPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// If the target is smaller than the window and the scroll position is too far up, then scroll till the target is at the bottom of the window\n\t\t\t} else if(targetSize < currentSize && currentPos < (targetPos + targetSize - currentSize)) {\n\t\t\t\treturn targetPos + targetSize - currentSize;\n\t\t\t// If the target is big, then just scroll to the top\n\t\t\t} else if(currentPos < targetPos) {\n\t\t\t\treturn targetPos;\n\t\t\t// Otherwise, stay where we are\n\t\t\t} else {\n\t\t\t\treturn currentPos;\n\t\t\t}\n\t\t},\n\t\tendX = getEndPos(bounds.left,bounds.width,scrollPosition.x,this.outerDomNode.offsetWidth),\n\t\tendY = getEndPos(bounds.top,bounds.height,scrollPosition.y,this.outerDomNode.offsetHeight);\n\t// Only scroll if necessary\n\tif(endX !== scrollPosition.x || endY !== scrollPosition.y) {\n\t\tvar self = this,\n\t\t\tdrawFrame;\n\t\tdrawFrame = function () {\n\t\t\tvar t;\n\t\t\tif(duration <= 0) {\n\t\t\t\tt = 1;\n\t\t\t} else {\n\t\t\t\tt = ((Date.now()) - self.startTime) / duration;\t\n\t\t\t}\n\t\t\tif(t >= 1) {\n\t\t\t\tself.cancelScroll();\n\t\t\t\tt = 1;\n\t\t\t}\n\t\t\tt = $tw.utils.slowInSlowOut(t);\n\t\t\tself.outerDomNode.scrollLeft = scrollPosition.x + (endX - scrollPosition.x) * t;\n\t\t\tself.outerDomNode.scrollTop = scrollPosition.y + (endY - scrollPosition.y) * t;\n\t\t\tif(t < 1) {\n\t\t\t\tself.idRequestFrame = self.requestAnimationFrame.call(window,drawFrame);\n\t\t\t}\n\t\t};\n\t\tdrawFrame();\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nScrollableWidget.prototype.render = function(parent,nextSibling) {\n\tvar self = this;\n\t// Remember parent\n\tthis.parentDomNode = parent;\n\t// Compute attributes and execute state\n\tthis.computeAttributes();\n\tthis.execute();\n\t// Create elements\n\tthis.outerDomNode = this.document.createElement(\"div\");\n\t$tw.utils.setStyle(this.outerDomNode,[\n\t\t{overflowY: \"auto\"},\n\t\t{overflowX: \"auto\"},\n\t\t{webkitOverflowScrolling: \"touch\"}\n\t]);\n\tthis.innerDomNode = this.document.createElement(\"div\");\n\tthis.outerDomNode.appendChild(this.innerDomNode);\n\t// Assign classes\n\tthis.outerDomNode.className = this[\"class\"] || \"\";\n\t// Insert element\n\tparent.insertBefore(this.outerDomNode,nextSibling);\n\tthis.renderChildren(this.innerDomNode,null);\n\tthis.domNodes.push(this.outerDomNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nScrollableWidget.prototype.execute = function() {\n\t// Get attributes\n\tthis.fallthrough = this.getAttribute(\"fallthrough\",\"yes\");\n\tthis[\"class\"] = this.getAttribute(\"class\");\n\t// Make child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nScrollableWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports.scrollable = ScrollableWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/select.js": {
            "title": "$:/core/modules/widgets/select.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/select.js\ntype: application/javascript\nmodule-type: widget\n\nSelect widget:\n\n```\n<$select tiddler=\"MyTiddler\" field=\"text\">\n<$list filter=\"[tag[chapter]]\">\n<option value=<<currentTiddler>>>\n<$view field=\"description\"/>\n</option>\n</$list>\n</$select>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SelectWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSelectWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSelectWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n\tthis.setSelectValue();\n\t$tw.utils.addEventListeners(this.getSelectDomNode(),[\n\t\t{name: \"change\", handlerObject: this, handlerMethod: \"handleChangeEvent\"}\n\t]);\n};\n\n/*\nHandle a change event\n*/\nSelectWidget.prototype.handleChangeEvent = function(event) {\n\t// Get the new value and assign it to the tiddler\n\tif(this.selectMultiple == false) {\n\t\tvar value = this.getSelectDomNode().value;\n\t} else {\n\t\tvar value = this.getSelectValues()\n\t\t\t\tvalue = $tw.utils.stringifyList(value);\n\t}\n\tthis.wiki.setText(this.selectTitle,this.selectField,this.selectIndex,value);\n\t// Trigger actions\n\tif(this.selectActions) {\n\t\tthis.invokeActionString(this.selectActions,this,event);\n\t}\n};\n\n/*\nIf necessary, set the value of the select element to the current value\n*/\nSelectWidget.prototype.setSelectValue = function() {\n\tvar value = this.selectDefault;\n\t// Get the value\n\tif(this.selectIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.selectTitle,this.selectIndex,value);\n\t} else {\n\t\tvar tiddler = this.wiki.getTiddler(this.selectTitle);\n\t\tif(tiddler) {\n\t\t\tif(this.selectField === \"text\") {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.selectTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.selectField)) {\n\t\t\t\t\tvalue = tiddler.getFieldString(this.selectField);\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.selectField === \"title\") {\n\t\t\t\tvalue = this.selectTitle;\n\t\t\t}\n\t\t}\n\t}\n\t// Assign it to the select element if it's different than the current value\n\tif (this.selectMultiple) {\n\t\tvalue = value === undefined ? \"\" : value;\n\t\tvar select = this.getSelectDomNode();\n\t\tvar values = Array.isArray(value) ? value : $tw.utils.parseStringArray(value);\n\t\tfor(var i=0; i < select.children.length; i++){\n\t\t\tselect.children[i].selected = values.indexOf(select.children[i].value) !== -1\n\t\t}\n\t} else {\n\t\tvar domNode = this.getSelectDomNode();\n\t\tif(domNode.value !== value) {\n\t\t\tdomNode.value = value;\n\t\t}\n\t}\n};\n\n/*\nGet the DOM node of the select element\n*/\nSelectWidget.prototype.getSelectDomNode = function() {\n\treturn this.children[0].domNodes[0];\n};\n\n// Return an array of the selected opion values\n// select is an HTML select element\nSelectWidget.prototype.getSelectValues = function() {\n\tvar select, result, options, opt;\n\tselect = this.getSelectDomNode();\n\tresult = [];\n\toptions = select && select.options;\n\tfor (var i=0; i<options.length; i++) {\n\t\topt = options[i];\n\t\tif (opt.selected) {\n\t\t\tresult.push(opt.value || opt.text);\n\t\t}\n\t}\n\treturn result;\n}\n\n/*\nCompute the internal state of the widget\n*/\nSelectWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.selectActions = this.getAttribute(\"actions\");\n\tthis.selectTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.selectField = this.getAttribute(\"field\",\"text\");\n\tthis.selectIndex = this.getAttribute(\"index\");\n\tthis.selectClass = this.getAttribute(\"class\");\n\tthis.selectDefault = this.getAttribute(\"default\");\n\tthis.selectMultiple = this.getAttribute(\"multiple\", false);\n\tthis.selectSize = this.getAttribute(\"size\");\n\tthis.selectTooltip = this.getAttribute(\"tooltip\");\n\t// Make the child widgets\n\tvar selectNode = {\n\t\ttype: \"element\",\n\t\ttag: \"select\",\n\t\tchildren: this.parseTreeNode.children\n\t};\n\tif(this.selectClass) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"class\",this.selectClass);\n\t}\n\tif(this.selectMultiple) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"multiple\",\"multiple\");\n\t}\n\tif(this.selectSize) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"size\",this.selectSize);\n\t}\n\tif(this.selectTooltip) {\n\t\t$tw.utils.addAttributeToParseTreeNode(selectNode,\"title\",this.selectTooltip);\n\t}\n\tthis.makeChildWidgets([selectNode]);\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSelectWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// If we're using a different tiddler/field/index then completely refresh ourselves\n\tif(changedAttributes.selectTitle || changedAttributes.selectField || changedAttributes.selectIndex || changedAttributes.selectTooltip) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t// If the target tiddler value has changed, just update setting and refresh the children\n\t} else {\n\t\tvar childrenRefreshed = this.refreshChildren(changedTiddlers);\n\t\tif(changedTiddlers[this.selectTitle] || childrenRefreshed) {\n\t\t\tthis.setSelectValue();\n\t\t} \n\t\treturn childrenRefreshed;\n\t}\n};\n\nexports.select = SelectWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/set.js": {
            "title": "$:/core/modules/widgets/set.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/set.js\ntype: application/javascript\nmodule-type: widget\n\nSet variable widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar SetWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nSetWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nSetWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nSetWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.setName = this.getAttribute(\"name\",\"currentTiddler\");\n\tthis.setFilter = this.getAttribute(\"filter\");\n\tthis.setSelect = this.getAttribute(\"select\");\n\tthis.setTiddler = this.getAttribute(\"tiddler\");\n\tthis.setSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.setField = this.getAttribute(\"field\");\n\tthis.setIndex = this.getAttribute(\"index\");\n\tthis.setValue = this.getAttribute(\"value\");\n\tthis.setEmptyValue = this.getAttribute(\"emptyValue\");\n\t// Set context variable\n\tthis.setVariable(this.setName,this.getValue(),this.parseTreeNode.params,!!this.parseTreeNode.isMacroDefinition);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nGet the value to be assigned\n*/\nSetWidget.prototype.getValue = function() {\n\tvar value = this.setValue;\n\tif(this.setTiddler) {\n\t\tvar tiddler;\n\t\tif(this.setSubTiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.setTiddler,this.setSubTiddler);\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.setTiddler);\t\t\t\n\t\t}\n\t\tif(!tiddler) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t} else if(this.setField) {\n\t\t\tvalue = tiddler.getFieldString(this.setField) || this.setEmptyValue;\n\t\t} else if(this.setIndex) {\n\t\t\tvalue = this.wiki.extractTiddlerDataItem(this.setTiddler,this.setIndex,this.setEmptyValue);\n\t\t} else {\n\t\t\tvalue = tiddler.fields.text || this.setEmptyValue ;\n\t\t}\n\t} else if(this.setFilter) {\n\t\tvar results = this.wiki.filterTiddlers(this.setFilter,this);\n\t\tif(this.setValue == null) {\n\t\t\tvar select;\n\t\t\tif(this.setSelect) {\n\t\t\t\tselect = parseInt(this.setSelect,10);\n\t\t\t}\n\t\t\tif(select !== undefined) {\n\t\t\t\tvalue = results[select] || \"\";\n\t\t\t} else {\n\t\t\t\tvalue = $tw.utils.stringifyList(results);\t\t\t\n\t\t\t}\n\t\t}\n\t\tif(results.length === 0 && this.setEmptyValue !== undefined) {\n\t\t\tvalue = this.setEmptyValue;\n\t\t}\n\t} else if(!value && this.setEmptyValue) {\n\t\tvalue = this.setEmptyValue;\n\t}\n\treturn value || \"\";\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nSetWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.name || changedAttributes.filter || changedAttributes.select || changedAttributes.tiddler || (this.setTiddler && changedTiddlers[this.setTiddler]) || changedAttributes.field || changedAttributes.index || changedAttributes.value || changedAttributes.emptyValue ||\n\t   (this.setFilter && this.getValue() != this.variables[this.setName].value)) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.setvariable = SetWidget;\nexports.set = SetWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/text.js": {
            "title": "$:/core/modules/widgets/text.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/text.js\ntype: application/javascript\nmodule-type: widget\n\nText node widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TextNodeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTextNodeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTextNodeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tvar text = this.getAttribute(\"text\",this.parseTreeNode.text || \"\");\n\ttext = text.replace(/\\r/mg,\"\");\n\tvar textNode = this.document.createTextNode(text);\n\tparent.insertBefore(textNode,nextSibling);\n\tthis.domNodes.push(textNode);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTextNodeWidget.prototype.execute = function() {\n\t// Nothing to do for a text node\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTextNodeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.text) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.text = TextNodeWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/tiddler.js": {
            "title": "$:/core/modules/widgets/tiddler.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/tiddler.js\ntype: application/javascript\nmodule-type: widget\n\nTiddler widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTiddlerWidget.prototype.execute = function() {\n\tthis.tiddlerState = this.computeTiddlerState();\n\tthis.setVariable(\"currentTiddler\",this.tiddlerState.currentTiddler);\n\tthis.setVariable(\"missingTiddlerClass\",this.tiddlerState.missingTiddlerClass);\n\tthis.setVariable(\"shadowTiddlerClass\",this.tiddlerState.shadowTiddlerClass);\n\tthis.setVariable(\"systemTiddlerClass\",this.tiddlerState.systemTiddlerClass);\n\tthis.setVariable(\"tiddlerTagClasses\",this.tiddlerState.tiddlerTagClasses);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nCompute the tiddler state flags\n*/\nTiddlerWidget.prototype.computeTiddlerState = function() {\n\t// Get our parameters\n\tthis.tiddlerTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t// Compute the state\n\tvar state = {\n\t\tcurrentTiddler: this.tiddlerTitle || \"\",\n\t\tmissingTiddlerClass: (this.wiki.tiddlerExists(this.tiddlerTitle) || this.wiki.isShadowTiddler(this.tiddlerTitle)) ? \"tc-tiddler-exists\" : \"tc-tiddler-missing\",\n\t\tshadowTiddlerClass: this.wiki.isShadowTiddler(this.tiddlerTitle) ? \"tc-tiddler-shadow\" : \"\",\n\t\tsystemTiddlerClass: this.wiki.isSystemTiddler(this.tiddlerTitle) ? \"tc-tiddler-system\" : \"\",\n\t\ttiddlerTagClasses: this.getTagClasses()\n\t};\n\t// Compute a simple hash to make it easier to detect changes\n\tstate.hash = state.currentTiddler + state.missingTiddlerClass + state.shadowTiddlerClass + state.systemTiddlerClass + state.tiddlerTagClasses;\n\treturn state;\n};\n\n/*\nCreate a string of CSS classes derived from the tags of the current tiddler\n*/\nTiddlerWidget.prototype.getTagClasses = function() {\n\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\tif(tiddler) {\n\t\tvar tags = [];\n\t\t$tw.utils.each(tiddler.fields.tags,function(tag) {\n\t\t\ttags.push(\"tc-tagged-\" + encodeURIComponent(tag));\n\t\t});\n\t\treturn tags.join(\" \");\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes(),\n\t\tnewTiddlerState = this.computeTiddlerState();\n\tif(changedAttributes.tiddler || newTiddlerState.hash !== this.tiddlerState.hash) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.tiddler = TiddlerWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/transclude.js": {
            "title": "$:/core/modules/widgets/transclude.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/transclude.js\ntype: application/javascript\nmodule-type: widget\n\nTransclude widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar TranscludeWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nTranscludeWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nTranscludeWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nTranscludeWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.transcludeTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.transcludeSubTiddler = this.getAttribute(\"subtiddler\");\n\tthis.transcludeField = this.getAttribute(\"field\");\n\tthis.transcludeIndex = this.getAttribute(\"index\");\n\tthis.transcludeMode = this.getAttribute(\"mode\");\n\t// Parse the text reference\n\tvar parseAsInline = !this.parseTreeNode.isBlock;\n\tif(this.transcludeMode === \"inline\") {\n\t\tparseAsInline = true;\n\t} else if(this.transcludeMode === \"block\") {\n\t\tparseAsInline = false;\n\t}\n\tvar parser = this.wiki.parseTextReference(\n\t\t\t\t\t\tthis.transcludeTitle,\n\t\t\t\t\t\tthis.transcludeField,\n\t\t\t\t\t\tthis.transcludeIndex,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparseAsInline: parseAsInline,\n\t\t\t\t\t\t\tsubTiddler: this.transcludeSubTiddler\n\t\t\t\t\t\t}),\n\t\tparseTreeNodes = parser ? parser.tree : this.parseTreeNode.children;\n\t// Set context variables for recursion detection\n\tvar recursionMarker = this.makeRecursionMarker();\n\tthis.setVariable(\"transclusion\",recursionMarker);\n\t// Check for recursion\n\tif(parser) {\n\t\tif(this.parentWidget && this.parentWidget.hasVariable(\"transclusion\",recursionMarker)) {\n\t\t\tparseTreeNodes = [{type: \"element\", tag: \"span\", attributes: {\n\t\t\t\t\"class\": {type: \"string\", value: \"tc-error\"}\n\t\t\t}, children: [\n\t\t\t\t{type: \"text\", text: $tw.language.getString(\"Error/RecursiveTransclusion\")}\n\t\t\t]}];\n\t\t}\n\t}\n\t// Construct the child widgets\n\tthis.makeChildWidgets(parseTreeNodes);\n};\n\n/*\nCompose a string comprising the title, field and/or index to identify this transclusion for recursion detection\n*/\nTranscludeWidget.prototype.makeRecursionMarker = function() {\n\tvar output = [];\n\toutput.push(\"{\");\n\toutput.push(this.getVariable(\"currentTiddler\",{defaultValue: \"\"}));\n\toutput.push(\"|\");\n\toutput.push(this.transcludeTitle || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeField || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeIndex || \"\");\n\toutput.push(\"|\");\n\toutput.push(this.transcludeSubTiddler || \"\");\n\toutput.push(\"}\");\n\treturn output.join(\"\");\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nTranscludeWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedTiddlers[this.transcludeTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\t\t\n\t}\n};\n\nexports.transclude = TranscludeWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/vars.js": {
            "title": "$:/core/modules/widgets/vars.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/vars.js\ntype: application/javascript\nmodule-type: widget\n\nThis widget allows multiple variables to be set in one go:\n\n```\n\\define helloworld() Hello world!\n<$vars greeting=\"Hi\" me={{!!title}} sentence=<<helloworld>>>\n  <<greeting>>! I am <<me>> and I say: <<sentence>>\n</$vars>\n```\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar VarsWidget = function(parseTreeNode,options) {\n\t// Call the constructor\n\tWidget.call(this);\n\t// Initialise\t\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nVarsWidget.prototype = Object.create(Widget.prototype);\n\n/*\nRender this widget into the DOM\n*/\nVarsWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nVarsWidget.prototype.execute = function() {\n\t// Parse variables\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(val,key) {\n\t\tif(key.charAt(0) !== \"$\") {\n\t\t\tself.setVariable(key,val);\n\t\t}\n\t});\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nRefresh the widget by ensuring our attributes are up to date\n*/\nVarsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(Object.keys(changedAttributes).length) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t}\n\treturn this.refreshChildren(changedTiddlers);\n};\n\nexports[\"vars\"] = VarsWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/view.js": {
            "title": "$:/core/modules/widgets/view.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/view.js\ntype: application/javascript\nmodule-type: widget\n\nView widget\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar ViewWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nViewWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nViewWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tif(this.text) {\n\t\tvar textNode = this.document.createTextNode(this.text);\n\t\tparent.insertBefore(textNode,nextSibling);\n\t\tthis.domNodes.push(textNode);\n\t} else {\n\t\tthis.makeChildWidgets();\n\t\tthis.renderChildren(parent,nextSibling);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nViewWidget.prototype.execute = function() {\n\t// Get parameters from our attributes\n\tthis.viewTitle = this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\tthis.viewSubtiddler = this.getAttribute(\"subtiddler\");\n\tthis.viewField = this.getAttribute(\"field\",\"text\");\n\tthis.viewIndex = this.getAttribute(\"index\");\n\tthis.viewFormat = this.getAttribute(\"format\",\"text\");\n\tthis.viewTemplate = this.getAttribute(\"template\",\"\");\n\tthis.viewMode = this.getAttribute(\"mode\",\"block\");\n\tswitch(this.viewFormat) {\n\t\tcase \"htmlwikified\":\n\t\t\tthis.text = this.getValueAsHtmlWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"plainwikified\":\n\t\t\tthis.text = this.getValueAsPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencodedplainwikified\":\n\t\t\tthis.text = this.getValueAsHtmlEncodedPlainWikified(this.viewMode);\n\t\t\tbreak;\n\t\tcase \"htmlencoded\":\n\t\t\tthis.text = this.getValueAsHtmlEncoded();\n\t\t\tbreak;\n\t\tcase \"urlencoded\":\n\t\t\tthis.text = this.getValueAsUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"doubleurlencoded\":\n\t\t\tthis.text = this.getValueAsDoubleUrlEncoded();\n\t\t\tbreak;\n\t\tcase \"date\":\n\t\t\tthis.text = this.getValueAsDate(this.viewTemplate);\n\t\t\tbreak;\n\t\tcase \"relativedate\":\n\t\t\tthis.text = this.getValueAsRelativeDate();\n\t\t\tbreak;\n\t\tcase \"stripcomments\":\n\t\t\tthis.text = this.getValueAsStrippedComments();\n\t\t\tbreak;\n\t\tcase \"jsencoded\":\n\t\t\tthis.text = this.getValueAsJsEncoded();\n\t\t\tbreak;\n\t\tdefault: // \"text\"\n\t\t\tthis.text = this.getValueAsText();\n\t\t\tbreak;\n\t}\n};\n\n/*\nThe various formatter functions are baked into this widget for the moment. Eventually they will be replaced by macro functions\n*/\n\n/*\nRetrieve the value of the widget. Options are:\nasString: Optionally return the value as a string\n*/\nViewWidget.prototype.getValue = function(options) {\n\toptions = options || {};\n\tvar value = options.asString ? \"\" : undefined;\n\tif(this.viewIndex) {\n\t\tvalue = this.wiki.extractTiddlerDataItem(this.viewTitle,this.viewIndex);\n\t} else {\n\t\tvar tiddler;\n\t\tif(this.viewSubtiddler) {\n\t\t\ttiddler = this.wiki.getSubTiddler(this.viewTitle,this.viewSubtiddler);\t\n\t\t} else {\n\t\t\ttiddler = this.wiki.getTiddler(this.viewTitle);\n\t\t}\n\t\tif(tiddler) {\n\t\t\tif(this.viewField === \"text\" && !this.viewSubtiddler) {\n\t\t\t\t// Calling getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\tvalue = this.wiki.getTiddlerText(this.viewTitle);\n\t\t\t} else {\n\t\t\t\tif($tw.utils.hop(tiddler.fields,this.viewField)) {\n\t\t\t\t\tif(options.asString) {\n\t\t\t\t\t\tvalue = tiddler.getFieldString(this.viewField);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tvalue = tiddler.fields[this.viewField];\t\t\t\t\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.viewField === \"title\") {\n\t\t\t\tvalue = this.viewTitle;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n\nViewWidget.prototype.getValueAsText = function() {\n\treturn this.getValue({asString: true});\n};\n\nViewWidget.prototype.getValueAsHtmlWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/html\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsPlainWikified = function(mode) {\n\treturn this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t});\n};\n\nViewWidget.prototype.getValueAsHtmlEncodedPlainWikified = function(mode) {\n\treturn $tw.utils.htmlEncode(this.wiki.renderText(\"text/plain\",\"text/vnd.tiddlywiki\",this.getValueAsText(),{\n\t\tparseAsInline: mode !== \"block\",\n\t\tparentWidget: this\n\t}));\n};\n\nViewWidget.prototype.getValueAsHtmlEncoded = function() {\n\treturn $tw.utils.htmlEncode(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsUrlEncoded = function() {\n\treturn encodeURIComponent(this.getValueAsText());\n};\n\nViewWidget.prototype.getValueAsDoubleUrlEncoded = function() {\n\treturn encodeURIComponent(encodeURIComponent(this.getValueAsText()));\n};\n\nViewWidget.prototype.getValueAsDate = function(format) {\n\tformat = format || \"YYYY MM DD 0hh:0mm\";\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.formatDateString(value,format);\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsRelativeDate = function(format) {\n\tvar value = $tw.utils.parseDate(this.getValue());\n\tif(value && $tw.utils.isDate(value) && value.toString() !== \"Invalid Date\") {\n\t\treturn $tw.utils.getRelativeDate((new Date()) - (new Date(value))).description;\n\t} else {\n\t\treturn \"\";\n\t}\n};\n\nViewWidget.prototype.getValueAsStrippedComments = function() {\n\tvar lines = this.getValueAsText().split(\"\\n\"),\n\t\tout = [];\n\tfor(var line=0; line<lines.length; line++) {\n\t\tvar text = lines[line];\n\t\tif(!/^\\s*\\/\\/#/.test(text)) {\n\t\t\tout.push(text);\n\t\t}\n\t}\n\treturn out.join(\"\\n\");\n};\n\nViewWidget.prototype.getValueAsJsEncoded = function() {\n\treturn $tw.utils.stringify(this.getValueAsText());\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nViewWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.index || changedAttributes.template || changedAttributes.format || changedTiddlers[this.viewTitle]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn false;\t\n\t}\n};\n\nexports.view = ViewWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/widget.js": {
            "title": "$:/core/modules/widgets/widget.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/widget.js\ntype: application/javascript\nmodule-type: widget\n\nWidget base class\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nCreate a widget object for a parse tree node\n\tparseTreeNode: reference to the parse tree node to be rendered\n\toptions: see below\nOptions include:\n\twiki: mandatory reference to wiki associated with this render tree\n\tparentWidget: optional reference to a parent renderer node for the context chain\n\tdocument: optional document object to use instead of global document\n*/\nvar Widget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInitialise widget properties. These steps are pulled out of the constructor so that we can reuse them in subclasses\n*/\nWidget.prototype.initialise = function(parseTreeNode,options) {\n\t// Bail if parseTreeNode is undefined, meaning  that the widget constructor was called without any arguments so that it can be subclassed\n\tif(parseTreeNode === undefined) {\n\t\treturn;\n\t}\n\toptions = options || {};\n\t// Save widget info\n\tthis.parseTreeNode = parseTreeNode;\n\tthis.wiki = options.wiki;\n\tthis.parentWidget = options.parentWidget;\n\tthis.variablesConstructor = function() {};\n\tthis.variablesConstructor.prototype = this.parentWidget ? this.parentWidget.variables : {};\n\tthis.variables = new this.variablesConstructor();\n\tthis.document = options.document;\n\tthis.attributes = {};\n\tthis.children = [];\n\tthis.domNodes = [];\n\tthis.eventListeners = {};\n\t// Hashmap of the widget classes\n\tif(!this.widgetClasses) {\n\t\t// Get widget classes\n\t\tWidget.prototype.widgetClasses = $tw.modules.applyMethods(\"widget\");\n\t\t// Process any subclasses\n\t\t$tw.modules.forEachModuleOfType(\"widget-subclass\",function(title,module) {\n\t\t\tif(module.baseClass) {\n\t\t\t\tvar baseClass = Widget.prototype.widgetClasses[module.baseClass];\n\t\t\t\tif(!baseClass) {\n\t\t\t\t\tthrow \"Module '\" + title + \"' is attemping to extend a non-existent base class '\" + module.baseClass + \"'\";\n\t\t\t\t}\n\t\t\t\tvar subClass = module.constructor;\n\t\t\t\tsubClass.prototype = new baseClass();\n\t\t\t\t$tw.utils.extend(subClass.prototype,module.prototype);\n\t\t\t\tWidget.prototype.widgetClasses[module.name || module.baseClass] = subClass;\n\t\t\t}\n\t\t});\n\t}\n};\n\n/*\nRender this widget into the DOM\n*/\nWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWidget.prototype.execute = function() {\n\tthis.makeChildWidgets();\n};\n\n/*\nSet the value of a context variable\nname: name of the variable\nvalue: value of the variable\nparams: array of {name:, default:} for each parameter\nisMacroDefinition: true if the variable is set via a \\define macro pragma (and hence should have variable substitution performed)\n*/\nWidget.prototype.setVariable = function(name,value,params,isMacroDefinition) {\n\tthis.variables[name] = {value: value, params: params, isMacroDefinition: !!isMacroDefinition};\n};\n\n/*\nGet the prevailing value of a context variable\nname: name of variable\noptions: see below\nOptions include\nparams: array of {name:, value:} for each parameter\ndefaultValue: default value if the variable is not defined\n\nReturns an object with the following fields:\n\nparams: array of {name:,value:} of parameters passed to wikitext variables\ntext: text of variable, with parameters properly substituted\n*/\nWidget.prototype.getVariableInfo = function(name,options) {\n\toptions = options || {};\n\tvar actualParams = options.params || [],\n\t\tparentWidget = this.parentWidget;\n\t// Check for the variable defined in the parent widget (or an ancestor in the prototype chain)\n\tif(parentWidget && name in parentWidget.variables) {\n\t\tvar variable = parentWidget.variables[name],\n\t\t\tvalue = variable.value,\n\t\t\tparams = this.resolveVariableParameters(variable.params,actualParams);\n\t\t// Substitute any parameters specified in the definition\n\t\t$tw.utils.each(params,function(param) {\n\t\t\tvalue = $tw.utils.replaceString(value,new RegExp(\"\\\\$\" + $tw.utils.escapeRegExp(param.name) + \"\\\\$\",\"mg\"),param.value);\n\t\t});\n\t\t// Only substitute variable references if this variable was defined with the \\define pragma\n\t\tif(variable.isMacroDefinition) {\n\t\t\tvalue = this.substituteVariableReferences(value);\t\t\t\n\t\t}\n\t\treturn {\n\t\t\ttext: value,\n\t\t\tparams: params\n\t\t};\n\t}\n\t// If the variable doesn't exist in the parent widget then look for a macro module\n\treturn {\n\t\ttext: this.evaluateMacroModule(name,actualParams,options.defaultValue)\n\t};\n};\n\n/*\nSimplified version of getVariableInfo() that just returns the text\n*/\nWidget.prototype.getVariable = function(name,options) {\n\treturn this.getVariableInfo(name,options).text;\n};\n\nWidget.prototype.resolveVariableParameters = function(formalParams,actualParams) {\n\tformalParams = formalParams || [];\n\tactualParams = actualParams || [];\n\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\tparamInfo, paramValue,\n\t\tresults = [];\n\t// Step through each of the parameters in the macro definition\n\tfor(var p=0; p<formalParams.length; p++) {\n\t\t// Check if we've got a macro call parameter with the same name\n\t\tparamInfo = formalParams[p];\n\t\tparamValue = undefined;\n\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t}\n\t\t}\n\t\t// If not, use the next available anonymous macro call parameter\n\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\tnextAnonParameter++;\n\t\t}\n\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t}\n\t\t// If we've still not got a value, use the default, if any\n\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t// Store the parameter name and value\n\t\tresults.push({name: paramInfo.name, value: paramValue});\n\t}\n\treturn results;\n};\n\nWidget.prototype.substituteVariableReferences = function(text) {\n\tvar self = this;\n\treturn (text || \"\").replace(/\\$\\(([^\\)\\$]+)\\)\\$/g,function(match,p1,offset,string) {\n\t\treturn self.getVariable(p1,{defaultValue: \"\"});\n\t});\n};\n\nWidget.prototype.evaluateMacroModule = function(name,actualParams,defaultValue) {\n\tif($tw.utils.hop($tw.macros,name)) {\n\t\tvar macro = $tw.macros[name],\n\t\t\targs = [];\n\t\tif(macro.params.length > 0) {\n\t\t\tvar nextAnonParameter = 0, // Next candidate anonymous parameter in macro call\n\t\t\t\tparamInfo, paramValue;\n\t\t\t// Step through each of the parameters in the macro definition\n\t\t\tfor(var p=0; p<macro.params.length; p++) {\n\t\t\t\t// Check if we've got a macro call parameter with the same name\n\t\t\t\tparamInfo = macro.params[p];\n\t\t\t\tparamValue = undefined;\n\t\t\t\tfor(var m=0; m<actualParams.length; m++) {\n\t\t\t\t\tif(actualParams[m].name === paramInfo.name) {\n\t\t\t\t\t\tparamValue = actualParams[m].value;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If not, use the next available anonymous macro call parameter\n\t\t\t\twhile(nextAnonParameter < actualParams.length && actualParams[nextAnonParameter].name) {\n\t\t\t\t\tnextAnonParameter++;\n\t\t\t\t}\n\t\t\t\tif(paramValue === undefined && nextAnonParameter < actualParams.length) {\n\t\t\t\t\tparamValue = actualParams[nextAnonParameter++].value;\n\t\t\t\t}\n\t\t\t\t// If we've still not got a value, use the default, if any\n\t\t\t\tparamValue = paramValue || paramInfo[\"default\"] || \"\";\n\t\t\t\t// Save the parameter\n\t\t\t\targs.push(paramValue);\n\t\t\t}\n\t\t}\n\t\telse for(var i=0; i<actualParams.length; ++i) {\n\t\t\targs.push(actualParams[i].value);\n\t\t}\n\t\treturn (macro.run.apply(this,args) || \"\").toString();\n\t} else {\n\t\treturn defaultValue;\n\t}\n};\n\n/*\nCheck whether a given context variable value exists in the parent chain\n*/\nWidget.prototype.hasVariable = function(name,value) {\n\tvar node = this;\n\twhile(node) {\n\t\tif($tw.utils.hop(node.variables,name) && node.variables[name].value === value) {\n\t\t\treturn true;\n\t\t}\n\t\tnode = node.parentWidget;\n\t}\n\treturn false;\n};\n\n/*\nConstruct a qualifying string based on a hash of concatenating the values of a given variable in the parent chain\n*/\nWidget.prototype.getStateQualifier = function(name) {\n\tthis.qualifiers = this.qualifiers || Object.create(null);\n\tname = name || \"transclusion\";\n\tif(this.qualifiers[name]) {\n\t\treturn this.qualifiers[name];\n\t} else {\n\t\tvar output = [],\n\t\t\tnode = this;\n\t\twhile(node && node.parentWidget) {\n\t\t\tif($tw.utils.hop(node.parentWidget.variables,name)) {\n\t\t\t\toutput.push(node.getVariable(name));\n\t\t\t}\n\t\t\tnode = node.parentWidget;\n\t\t}\n\t\tvar value = $tw.utils.hashString(output.join(\"\"));\n\t\tthis.qualifiers[name] = value;\n\t\treturn value;\n\t}\n};\n\n/*\nCompute the current values of the attributes of the widget. Returns a hashmap of the names of the attributes that have changed\n*/\nWidget.prototype.computeAttributes = function() {\n\tvar changedAttributes = {},\n\t\tself = this,\n\t\tvalue;\n\t$tw.utils.each(this.parseTreeNode.attributes,function(attribute,name) {\n\t\tif(attribute.type === \"filtered\") {\n\t\t\tvalue = self.wiki.filterTiddlers(attribute.filter,self)[0] || \"\";\n\t\t} else if(attribute.type === \"indirect\") {\n\t\t\tvalue = self.wiki.getTextReference(attribute.textReference,\"\",self.getVariable(\"currentTiddler\"));\n\t\t} else if(attribute.type === \"macro\") {\n\t\t\tvalue = self.getVariable(attribute.value.name,{params: attribute.value.params});\n\t\t} else { // String attribute\n\t\t\tvalue = attribute.value;\n\t\t}\n\t\t// Check whether the attribute has changed\n\t\tif(self.attributes[name] !== value) {\n\t\t\tself.attributes[name] = value;\n\t\t\tchangedAttributes[name] = true;\n\t\t}\n\t});\n\treturn changedAttributes;\n};\n\n/*\nCheck for the presence of an attribute\n*/\nWidget.prototype.hasAttribute = function(name) {\n\treturn $tw.utils.hop(this.attributes,name);\n};\n\n/*\nGet the value of an attribute\n*/\nWidget.prototype.getAttribute = function(name,defaultText) {\n\tif($tw.utils.hop(this.attributes,name)) {\n\t\treturn this.attributes[name];\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nAssign the computed attributes of the widget to a domNode\noptions include:\nexcludeEventAttributes: ignores attributes whose name begins with \"on\"\n*/\nWidget.prototype.assignAttributes = function(domNode,options) {\n\toptions = options || {};\n\tvar self = this;\n\t$tw.utils.each(this.attributes,function(v,a) {\n\t\t// Check exclusions\n\t\tif(options.excludeEventAttributes && a.substr(0,2) === \"on\") {\n\t\t\tv = undefined;\n\t\t}\n\t\tif(v !== undefined) {\n\t\t\tvar b = a.split(\":\");\n\t\t\t// Setting certain attributes can cause a DOM error (eg xmlns on the svg element)\n\t\t\ttry {\n\t\t\t\tif (b.length == 2 && b[0] == \"xlink\"){\n\t\t\t\t\tdomNode.setAttributeNS(\"http://www.w3.org/1999/xlink\",b[1],v);\n\t\t\t\t} else {\n\t\t\t\t\tdomNode.setAttributeNS(null,a,v);\n\t\t\t\t}\n\t\t\t} catch(e) {\n\t\t\t}\n\t\t}\n\t});\n};\n\n/*\nMake child widgets correspondng to specified parseTreeNodes\n*/\nWidget.prototype.makeChildWidgets = function(parseTreeNodes) {\n\tthis.children = [];\n\tvar self = this;\n\t$tw.utils.each(parseTreeNodes || (this.parseTreeNode && this.parseTreeNode.children),function(childNode) {\n\t\tself.children.push(self.makeChildWidget(childNode));\n\t});\n};\n\n/*\nConstruct the widget object for a parse tree node\n*/\nWidget.prototype.makeChildWidget = function(parseTreeNode) {\n\tvar WidgetClass = this.widgetClasses[parseTreeNode.type];\n\tif(!WidgetClass) {\n\t\tWidgetClass = this.widgetClasses.text;\n\t\tparseTreeNode = {type: \"text\", text: \"Undefined widget '\" + parseTreeNode.type + \"'\"};\n\t}\n\treturn new WidgetClass(parseTreeNode,{\n\t\twiki: this.wiki,\n\t\tvariables: {},\n\t\tparentWidget: this,\n\t\tdocument: this.document\n\t});\n};\n\n/*\nGet the next sibling of this widget\n*/\nWidget.prototype.nextSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index < this.parentWidget.children.length-1) {\n\t\t\treturn this.parentWidget.children[index+1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nGet the previous sibling of this widget\n*/\nWidget.prototype.previousSibling = function() {\n\tif(this.parentWidget) {\n\t\tvar index = this.parentWidget.children.indexOf(this);\n\t\tif(index !== -1 && index > 0) {\n\t\t\treturn this.parentWidget.children[index-1];\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRender the children of this widget into the DOM\n*/\nWidget.prototype.renderChildren = function(parent,nextSibling) {\n\tvar children = this.children;\n\tfor(var i = 0; i < children.length; i++) {\n\t\tchildren[i].render(parent,nextSibling);\n\t};\n};\n\n/*\nAdd a list of event listeners from an array [{type:,handler:},...]\n*/\nWidget.prototype.addEventListeners = function(listeners) {\n\tvar self = this;\n\t$tw.utils.each(listeners,function(listenerInfo) {\n\t\tself.addEventListener(listenerInfo.type,listenerInfo.handler);\n\t});\n};\n\n/*\nAdd an event listener\n*/\nWidget.prototype.addEventListener = function(type,handler) {\n\tvar self = this;\n\tif(typeof handler === \"string\") { // The handler is a method name on this widget\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn self[handler].call(self,event);\n\t\t};\n\t} else { // The handler is a function\n\t\tthis.eventListeners[type] = function(event) {\n\t\t\treturn handler.call(self,event);\n\t\t};\n\t}\n};\n\n/*\nDispatch an event to a widget. If the widget doesn't handle the event then it is also dispatched to the parent widget\n*/\nWidget.prototype.dispatchEvent = function(event) {\n\t// Dispatch the event if this widget handles it\n\tvar listener = this.eventListeners[event.type];\n\tif(listener) {\n\t\t// Don't propagate the event if the listener returned false\n\t\tif(!listener(event)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Dispatch the event to the parent widget\n\tif(this.parentWidget) {\n\t\treturn this.parentWidget.dispatchEvent(event);\n\t}\n\treturn true;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWidget.prototype.refresh = function(changedTiddlers) {\n\treturn this.refreshChildren(changedTiddlers);\n};\n\n/*\nRebuild a previously rendered widget\n*/\nWidget.prototype.refreshSelf = function() {\n\tvar nextSibling = this.findNextSiblingDomNode();\n\tthis.removeChildDomNodes();\n\tthis.render(this.parentDomNode,nextSibling);\n};\n\n/*\nRefresh all the children of a widget\n*/\nWidget.prototype.refreshChildren = function(changedTiddlers) {\n\tvar children = this.children,\n\t\trefreshed = false;\n\tfor (var i = 0; i < children.length; i++) {\n\t\trefreshed = children[i].refresh(changedTiddlers) || refreshed;\n\t}\n\treturn refreshed;\n};\n\n/*\nFind the next sibling in the DOM to this widget. This is done by scanning the widget tree through all next siblings and their descendents that share the same parent DOM node\n*/\nWidget.prototype.findNextSiblingDomNode = function(startIndex) {\n\t// Refer to this widget by its index within its parents children\n\tvar parent = this.parentWidget,\n\t\tindex = startIndex !== undefined ? startIndex : parent.children.indexOf(this);\nif(index === -1) {\n\tthrow \"node not found in parents children\";\n}\n\t// Look for a DOM node in the later siblings\n\twhile(++index < parent.children.length) {\n\t\tvar domNode = parent.children[index].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\t// Go back and look for later siblings of our parent if it has the same parent dom node\n\tvar grandParent = parent.parentWidget;\n\tif(grandParent && parent.parentDomNode === this.parentDomNode) {\n\t\tindex = grandParent.children.indexOf(parent);\n\t\tif(index !== -1) {\n\t\t\treturn parent.findNextSiblingDomNode(index);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nFind the first DOM node generated by a widget or its children\n*/\nWidget.prototype.findFirstDomNode = function() {\n\t// Return the first dom node of this widget, if we've got one\n\tif(this.domNodes.length > 0) {\n\t\treturn this.domNodes[0];\n\t}\n\t// Otherwise, recursively call our children\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar domNode = this.children[t].findFirstDomNode();\n\t\tif(domNode) {\n\t\t\treturn domNode;\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRemove any DOM nodes created by this widget or its children\n*/\nWidget.prototype.removeChildDomNodes = function() {\n\t// If this widget has directly created DOM nodes, delete them and exit. This assumes that any child widgets are contained within the created DOM nodes, which would normally be the case\n\tif(this.domNodes.length > 0) {\n\t\t$tw.utils.each(this.domNodes,function(domNode) {\n\t\t\tdomNode.parentNode.removeChild(domNode);\n\t\t});\n\t\tthis.domNodes = [];\n\t} else {\n\t\t// Otherwise, ask the child widgets to delete their DOM nodes\n\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\tchildWidget.removeChildDomNodes();\n\t\t});\n\t}\n};\n\n/*\nInvoke the action widgets that are descendents of the current widget.\n*/\nWidget.prototype.invokeActions = function(triggeringWidget,event) {\n\tvar handled = false;\n\t// For each child widget\n\tfor(var t=0; t<this.children.length; t++) {\n\t\tvar child = this.children[t];\n\t\t// Invoke the child if it is an action widget\n\t\tif(child.invokeAction) {\n\t\t\tchild.refreshSelf();\n\t\t\tif(child.invokeAction(triggeringWidget,event)) {\n\t\t\t\thandled = true;\n\t\t\t}\n\t\t}\n\t\t// Propagate through through the child if it permits it\n\t\tif(child.allowActionPropagation() && child.invokeActions(triggeringWidget,event)) {\n\t\t\thandled = true;\n\t\t}\n\t}\n\treturn handled;\n};\n\n/*\nInvoke the action widgets defined in a string\n*/\nWidget.prototype.invokeActionString = function(actions,triggeringWidget,event,variables) {\n\tactions = actions || \"\";\n\tvar parser = this.wiki.parseText(\"text/vnd.tiddlywiki\",actions,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document\n\t\t}),\n\t\twidgetNode = this.wiki.makeWidget(parser,{\n\t\t\tparentWidget: this,\n\t\t\tdocument: this.document,\n\t\t\tvariables: variables\n\t\t});\n\tvar container = this.document.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn widgetNode.invokeActions(this,event);\n};\n\nWidget.prototype.allowActionPropagation = function() {\n\treturn true;\n};\n\nexports.widget = Widget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/widgets/wikify.js": {
            "title": "$:/core/modules/widgets/wikify.js",
            "text": "/*\\\ntitle: $:/core/modules/widgets/wikify.js\ntype: application/javascript\nmodule-type: widget\n\nWidget to wikify text into a variable\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar WikifyWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nWikifyWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nWikifyWidget.prototype.render = function(parent,nextSibling) {\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nWikifyWidget.prototype.execute = function() {\n\t// Get our parameters\n\tthis.wikifyName = this.getAttribute(\"name\");\n\tthis.wikifyText = this.getAttribute(\"text\");\n\tthis.wikifyType = this.getAttribute(\"type\");\n\tthis.wikifyMode = this.getAttribute(\"mode\",\"block\");\n\tthis.wikifyOutput = this.getAttribute(\"output\",\"text\");\n\t// Create the parse tree\n\tthis.wikifyParser = this.wiki.parseText(this.wikifyType,this.wikifyText,{\n\t\t\tparseAsInline: this.wikifyMode === \"inline\"\n\t\t});\n\t// Create the widget tree \n\tthis.wikifyWidgetNode = this.wiki.makeWidget(this.wikifyParser,{\n\t\t\tdocument: $tw.fakeDocument,\n\t\t\tparentWidget: this\n\t\t});\n\t// Render the widget tree to the container\n\tthis.wikifyContainer = $tw.fakeDocument.createElement(\"div\");\n\tthis.wikifyWidgetNode.render(this.wikifyContainer,null);\n\tthis.wikifyResult = this.getResult();\n\t// Set context variable\n\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nReturn the result string\n*/\nWikifyWidget.prototype.getResult = function() {\n\tvar result;\n\tswitch(this.wikifyOutput) {\n\t\tcase \"text\":\n\t\t\tresult = this.wikifyContainer.textContent;\n\t\t\tbreak;\n\t\tcase \"formattedtext\":\n\t\t\tresult = this.wikifyContainer.formattedTextContent;\n\t\t\tbreak;\n\t\tcase \"html\":\n\t\t\tresult = this.wikifyContainer.innerHTML;\n\t\t\tbreak;\n\t\tcase \"parsetree\":\n\t\t\tresult = JSON.stringify(this.wikifyParser.tree,0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t\tcase \"widgettree\":\n\t\t\tresult = JSON.stringify(this.getWidgetTree(),0,$tw.config.preferences.jsonSpaces);\n\t\t\tbreak;\n\t}\n\treturn result;\n};\n\n/*\nReturn a string of the widget tree\n*/\nWikifyWidget.prototype.getWidgetTree = function() {\n\tvar copyNode = function(widgetNode,resultNode) {\n\t\t\tvar type = widgetNode.parseTreeNode.type;\n\t\t\tresultNode.type = type;\n\t\t\tswitch(type) {\n\t\t\t\tcase \"element\":\n\t\t\t\t\tresultNode.tag = widgetNode.parseTreeNode.tag;\n\t\t\t\t\tbreak;\n\t\t\t\tcase \"text\":\n\t\t\t\t\tresultNode.text = widgetNode.parseTreeNode.text;\n\t\t\t\t\tbreak;\t\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.attributes || {}).length > 0) {\n\t\t\t\tresultNode.attributes = {};\n\t\t\t\t$tw.utils.each(widgetNode.attributes,function(attr,attrName) {\n\t\t\t\t\tresultNode.attributes[attrName] = widgetNode.getAttribute(attrName);\n\t\t\t\t});\n\t\t\t}\n\t\t\tif(Object.keys(widgetNode.children || {}).length > 0) {\n\t\t\t\tresultNode.children = [];\n\t\t\t\t$tw.utils.each(widgetNode.children,function(widgetChildNode) {\n\t\t\t\t\tvar node = {};\n\t\t\t\t\tresultNode.children.push(node);\n\t\t\t\t\tcopyNode(widgetChildNode,node);\n\t\t\t\t});\n\t\t\t}\n\t\t},\n\t\tresults = {};\n\tcopyNode(this.wikifyWidgetNode,results);\n\treturn results;\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nWikifyWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\t// Refresh ourselves entirely if any of our attributes have changed\n\tif(changedAttributes.name || changedAttributes.text || changedAttributes.type || changedAttributes.mode || changedAttributes.output) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\t// Refresh the widget tree\n\t\tif(this.wikifyWidgetNode.refresh(changedTiddlers)) {\n\t\t\t// Check if there was any change\n\t\t\tvar result = this.getResult();\n\t\t\tif(result !== this.wikifyResult) {\n\t\t\t\t// If so, save the change\n\t\t\t\tthis.wikifyResult = result;\n\t\t\t\tthis.setVariable(this.wikifyName,this.wikifyResult);\n\t\t\t\t// Refresh each of our child widgets\n\t\t\t\t$tw.utils.each(this.children,function(childWidget) {\n\t\t\t\t\tchildWidget.refreshSelf();\n\t\t\t\t});\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\t// Just refresh the children\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nexports.wikify = WikifyWidget;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/core/modules/wiki-bulkops.js": {
            "title": "$:/core/modules/wiki-bulkops.js",
            "text": "/*\\\ntitle: $:/core/modules/wiki-bulkops.js\ntype: application/javascript\nmodule-type: wikimethod\n\nBulk tiddler operations such as rename.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nRename a tiddler, and relink any tags or lists that reference it.\n*/\nfunction renameTiddler(fromTitle,toTitle,options) {\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\t// Rename the tiddler itself\n\t\tvar oldTiddler = this.getTiddler(fromTitle),\n\t\t\tnewTiddler = new $tw.Tiddler(oldTiddler,{title: toTitle},this.getModificationFields());\n\t\tnewTiddler = $tw.hooks.invokeHook(\"th-renaming-tiddler\",newTiddler,oldTiddler);\n\t\tthis.addTiddler(newTiddler);\n\t\tthis.deleteTiddler(fromTitle);\n\t\t// Rename any tags or lists that reference it\n\t\tthis.relinkTiddler(fromTitle,toTitle,options)\n\t}\n}\n\n/*\nRelink any tags or lists that reference a given tiddler\n*/\nfunction relinkTiddler(fromTitle,toTitle,options) {\n\tvar self = this;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\toptions = options || {};\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\tthis.each(function(tiddler,title) {\n\t\t\tvar type = tiddler.fields.type || \"\";\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(!tiddler.fields[\"plugin-type\"] && type !== \"application/javascript\") {\n\t\t\t\tvar tags = tiddler.fields.tags ? tiddler.fields.tags.slice(0) : undefined,\n\t\t\t\t\tlist = tiddler.fields.list ? tiddler.fields.list.slice(0) : undefined,\n\t\t\t\t\tisModified = false;\n\t\t\t\tif(!options.dontRenameInTags) {\n\t\t\t\t\t// Rename tags\n\t\t\t\t\t$tw.utils.each(tags,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming tag '\" + tags[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\ttags[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(!options.dontRenameInLists) {\n\t\t\t\t\t// Rename lists\n\t\t\t\t\t$tw.utils.each(list,function (title,index) {\n\t\t\t\t\t\tif(title === fromTitle) {\nconsole.log(\"Renaming list item '\" + list[index] + \"' to '\" + toTitle + \"' of tiddler '\" + tiddler.fields.title + \"'\");\n\t\t\t\t\t\t\tlist[index] = toTitle;\n\t\t\t\t\t\t\tisModified = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t\tif(isModified) {\n\t\t\t\t\tvar newTiddler = new $tw.Tiddler(tiddler,{tags: tags, list: list},self.getModificationFields())\n\t\t\t\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\t\t\t\tself.addTiddler(newTiddler);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t}\n};\n\nexports.renameTiddler = renameTiddler;\nexports.relinkTiddler = relinkTiddler;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/core/modules/wiki.js": {
            "title": "$:/core/modules/wiki.js",
            "text": "/*\\\ntitle: $:/core/modules/wiki.js\ntype: application/javascript\nmodule-type: wikimethod\n\nExtension methods for the $tw.Wiki object\n\nAdds the following properties to the wiki object:\n\n* `eventListeners` is a hashmap by type of arrays of listener functions\n* `changedTiddlers` is a hashmap describing changes to named tiddlers since wiki change events were last dispatched. Each entry is a hashmap containing two fields:\n\tmodified: true/false\n\tdeleted: true/false\n* `changeCount` is a hashmap by tiddler title containing a numerical index that starts at zero and is incremented each time a tiddler is created changed or deleted\n* `caches` is a hashmap by tiddler title containing a further hashmap of named cache objects. Caches are automatically cleared when a tiddler is modified or deleted\n* `globalCache` is a hashmap by cache name of cache objects that are cleared whenever any tiddler change occurs\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar widget = require(\"$:/core/modules/widgets/widget.js\");\n\nvar USER_NAME_TITLE = \"$:/status/UserName\",\n\tTIMESTAMP_DISABLE_TITLE = \"$:/config/TimestampDisable\";\n\n/*\nAdd available indexers to this wiki\n*/\nexports.addIndexersToWiki = function() {\n\tvar self = this;\n\t$tw.utils.each($tw.modules.applyMethods(\"indexer\"),function(Indexer,name) {\n\t\tself.addIndexer(new Indexer(self),name);\n\t});\n};\n\n/*\nGet the value of a text reference. Text references can have any of these forms:\n\t<tiddlertitle>\n\t<tiddlertitle>!!<fieldname>\n\t!!<fieldname> - specifies a field of the current tiddlers\n\t<tiddlertitle>##<index>\n*/\nexports.getTextReference = function(textRef,defaultText,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tif(tr.field) {\n\t\tvar tiddler = this.getTiddler(title);\n\t\tif(tr.field === \"title\") { // Special case so we can return the title of a non-existent tiddler\n\t\t\treturn title;\n\t\t} else if(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\treturn tiddler.getFieldString(tr.field);\n\t\t} else {\n\t\t\treturn defaultText;\n\t\t}\n\t} else if(tr.index) {\n\t\treturn this.extractTiddlerDataItem(title,tr.index,defaultText);\n\t} else {\n\t\treturn this.getTiddlerText(title,defaultText);\n\t}\n};\n\nexports.setTextReference = function(textRef,value,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle = tr.title || currTiddlerTitle;\n\tthis.setText(title,tr.field,tr.index,value);\n};\n\nexports.setText = function(title,field,index,value,options) {\n\toptions = options || {};\n\tvar creationFields = options.suppressTimestamp ? {} : this.getCreationFields(),\n\t\tmodificationFields = options.suppressTimestamp ? {} : this.getModificationFields();\n\t// Check if it is a reference to a tiddler field\n\tif(index) {\n\t\tvar data = this.getTiddlerData(title,Object.create(null));\n\t\tif(value !== undefined) {\n\t\t\tdata[index] = value;\n\t\t} else {\n\t\t\tdelete data[index];\n\t\t}\n\t\tthis.setTiddlerData(title,data,modificationFields);\n\t} else {\n\t\tvar tiddler = this.getTiddler(title),\n\t\t\tfields = {title: title};\n\t\tfields[field || \"text\"] = value;\n\t\tthis.addTiddler(new $tw.Tiddler(creationFields,tiddler,fields,modificationFields));\n\t}\n};\n\nexports.deleteTextReference = function(textRef,currTiddlerTitle) {\n\tvar tr = $tw.utils.parseTextReference(textRef),\n\t\ttitle,tiddler,fields;\n\t// Check if it is a reference to a tiddler\n\tif(tr.title && !tr.field) {\n\t\tthis.deleteTiddler(tr.title);\n\t// Else check for a field reference\n\t} else if(tr.field) {\n\t\ttitle = tr.title || currTiddlerTitle;\n\t\ttiddler = this.getTiddler(title);\n\t\tif(tiddler && $tw.utils.hop(tiddler.fields,tr.field)) {\n\t\t\tfields = Object.create(null);\n\t\t\tfields[tr.field] = undefined;\n\t\t\tthis.addTiddler(new $tw.Tiddler(tiddler,fields,this.getModificationFields()));\n\t\t}\n\t}\n};\n\nexports.addEventListener = function(type,listener) {\n\tthis.eventListeners = this.eventListeners || {};\n\tthis.eventListeners[type] = this.eventListeners[type]  || [];\n\tthis.eventListeners[type].push(listener);\t\n};\n\nexports.removeEventListener = function(type,listener) {\n\tvar listeners = this.eventListeners[type];\n\tif(listeners) {\n\t\tvar p = listeners.indexOf(listener);\n\t\tif(p !== -1) {\n\t\t\tlisteners.splice(p,1);\n\t\t}\n\t}\n};\n\nexports.dispatchEvent = function(type /*, args */) {\n\tvar args = Array.prototype.slice.call(arguments,1),\n\t\tlisteners = this.eventListeners[type];\n\tif(listeners) {\n\t\tfor(var p=0; p<listeners.length; p++) {\n\t\t\tvar listener = listeners[p];\n\t\t\tlistener.apply(listener,args);\n\t\t}\n\t}\n};\n\n/*\nCauses a tiddler to be marked as changed, incrementing the change count, and triggers event handlers.\nThis method should be called after the changes it describes have been made to the wiki.tiddlers[] array.\n\ttitle: Title of tiddler\n\tisDeleted: defaults to false (meaning the tiddler has been created or modified),\n\t\ttrue if the tiddler has been deleted\n*/\nexports.enqueueTiddlerEvent = function(title,isDeleted) {\n\t// Record the touch in the list of changed tiddlers\n\tthis.changedTiddlers = this.changedTiddlers || Object.create(null);\n\tthis.changedTiddlers[title] = this.changedTiddlers[title] || Object.create(null);\n\tthis.changedTiddlers[title][isDeleted ? \"deleted\" : \"modified\"] = true;\n\t// Increment the change count\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\tthis.changeCount[title]++;\n\t} else {\n\t\tthis.changeCount[title] = 1;\n\t}\n\t// Trigger events\n\tthis.eventListeners = this.eventListeners || {};\n\tif(!this.eventsTriggered) {\n\t\tvar self = this;\n\t\t$tw.utils.nextTick(function() {\n\t\t\tvar changes = self.changedTiddlers;\n\t\t\tself.changedTiddlers = Object.create(null);\n\t\t\tself.eventsTriggered = false;\n\t\t\tif($tw.utils.count(changes) > 0) {\n\t\t\t\tself.dispatchEvent(\"change\",changes);\n\t\t\t}\n\t\t});\n\t\tthis.eventsTriggered = true;\n\t}\n};\n\nexports.getSizeOfTiddlerEventQueue = function() {\n\treturn $tw.utils.count(this.changedTiddlers);\n};\n\nexports.clearTiddlerEventQueue = function() {\n\tthis.changedTiddlers = Object.create(null);\n\tthis.changeCount = Object.create(null);\n};\n\nexports.getChangeCount = function(title) {\n\tthis.changeCount = this.changeCount || Object.create(null);\n\tif($tw.utils.hop(this.changeCount,title)) {\n\t\treturn this.changeCount[title];\n\t} else {\n\t\treturn 0;\n\t}\n};\n\n/*\nGenerate an unused title from the specified base\n*/\nexports.generateNewTitle = function(baseTitle,options) {\n\toptions = options || {};\n\tvar c = 0,\n\t\ttitle = baseTitle;\n\twhile(this.tiddlerExists(title) || this.isShadowTiddler(title) || this.findDraft(title)) {\n\t\ttitle = baseTitle + \n\t\t\t(options.prefix || \" \") + \n\t\t\t(++c);\n\t}\n\treturn title;\n};\n\nexports.isSystemTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/\") === 0;\n};\n\nexports.isTemporaryTiddler = function(title) {\n\treturn title && title.indexOf(\"$:/temp/\") === 0;\n};\n\nexports.isImageTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.flags.indexOf(\"image\") !== -1;\n\t} else {\n\t\treturn null;\n\t}\n};\n\nexports.isBinaryTiddler = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\t\t\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || \"text/vnd.tiddlywiki\"];\n\t\treturn !!contentTypeInfo && contentTypeInfo.encoding === \"base64\";\n\t} else {\n\t\treturn null;\n\t}\n};\n\n/*\nLike addTiddler() except it will silently reject any plugin tiddlers that are older than the currently loaded version. Returns true if the tiddler was imported\n*/\nexports.importTiddler = function(tiddler) {\n\tvar existingTiddler = this.getTiddler(tiddler.fields.title);\n\t// Check if we're dealing with a plugin\n\tif(tiddler && tiddler.hasField(\"plugin-type\") && tiddler.hasField(\"version\") && existingTiddler && existingTiddler.hasField(\"plugin-type\") && existingTiddler.hasField(\"version\")) {\n\t\t// Reject the incoming plugin if it is older\n\t\tif(!$tw.utils.checkVersions(tiddler.fields.version,existingTiddler.fields.version)) {\n\t\t\treturn false;\n\t\t}\n\t}\n\t// Fall through to adding the tiddler\n\tthis.addTiddler(tiddler);\n\treturn true;\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is created\n*/\nexports.getCreationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = {\n\t\t\t\tcreated: new Date()\n\t\t\t},\n\t\t\tcreator = this.getTiddlerText(USER_NAME_TITLE);\n\t\tif(creator) {\n\t\t\tfields.creator = creator;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a hashmap of the fields that should be set when a tiddler is modified\n*/\nexports.getModificationFields = function() {\n\tif(this.getTiddlerText(TIMESTAMP_DISABLE_TITLE,\"\").toLowerCase() !== \"yes\") {\n\t\tvar fields = Object.create(null),\n\t\t\tmodifier = this.getTiddlerText(USER_NAME_TITLE);\n\t\tfields.modified = new Date();\n\t\tif(modifier) {\n\t\t\tfields.modifier = modifier;\n\t\t}\n\t\treturn fields;\n\t} else {\n\t\treturn {};\n\t}\n};\n\n/*\nReturn a sorted array of tiddler titles.  Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.getTiddlers = function(options) {\n\toptions = options || Object.create(null);\n\tvar self = this,\n\t\tsortField = options.sortField || \"title\",\n\t\ttiddlers = [], t, titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tif(options.includeSystem || !self.isSystemTiddler(title)) {\n\t\t\tif(!options.excludeTag || !tiddler.hasTag(options.excludeTag)) {\n\t\t\t\ttiddlers.push(tiddler);\n\t\t\t}\n\t\t}\n\t});\n\ttiddlers.sort(function(a,b) {\n\t\tvar aa = a.fields[sortField].toLowerCase() || \"\",\n\t\t\tbb = b.fields[sortField].toLowerCase() || \"\";\n\t\tif(aa < bb) {\n\t\t\treturn -1;\n\t\t} else {\n\t\t\tif(aa > bb) {\n\t\t\t\treturn 1;\n\t\t\t} else {\n\t\t\t\treturn 0;\n\t\t\t}\n\t\t}\n\t});\n\tfor(t=0; t<tiddlers.length; t++) {\n\t\ttitles.push(tiddlers[t].fields.title);\n\t}\n\treturn titles;\n};\n\nexports.countTiddlers = function(excludeTag) {\n\tvar tiddlers = this.getTiddlers({excludeTag: excludeTag});\n\treturn $tw.utils.count(tiddlers);\n};\n\n/*\nReturns a function iterator(callback) that iterates through the specified titles, and invokes the callback with callback(tiddler,title)\n*/\nexports.makeTiddlerIterator = function(titles) {\n\tvar self = this;\n\tif(!$tw.utils.isArray(titles)) {\n\t\ttitles = Object.keys(titles);\n\t} else {\n\t\ttitles = titles.slice(0);\n\t}\n\treturn function(callback) {\n\t\ttitles.forEach(function(title) {\n\t\t\tcallback(self.getTiddler(title),title);\n\t\t});\n\t};\n};\n\n/*\nSort an array of tiddler titles by a specified field\n\ttitles: array of titles (sorted in place)\n\tsortField: name of field to sort by\n\tisDescending: true if the sort should be descending\n\tisCaseSensitive: true if the sort should consider upper and lower case letters to be different\n*/\nexports.sortTiddlers = function(titles,sortField,isDescending,isCaseSensitive,isNumeric,isAlphaNumeric) {\n\tvar self = this;\n\ttitles.sort(function(a,b) {\n\t\tvar x,y,\n\t\t\tcompareNumbers = function(x,y) {\n\t\t\t\tvar result = \n\t\t\t\t\tisNaN(x) && !isNaN(y) ? (isDescending ? -1 : 1) :\n\t\t\t\t\t!isNaN(x) && isNaN(y) ? (isDescending ? 1 : -1) :\n\t\t\t\t\t\t\t\t\t\t\t(isDescending ? y - x :  x - y);\n\t\t\t\treturn result;\n\t\t\t};\n\t\tif(sortField !== \"title\") {\n\t\t\tvar tiddlerA = self.getTiddler(a),\n\t\t\t\ttiddlerB = self.getTiddler(b);\n\t\t\tif(tiddlerA) {\n\t\t\t\ta = tiddlerA.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\ta = \"\";\n\t\t\t}\n\t\t\tif(tiddlerB) {\n\t\t\t\tb = tiddlerB.fields[sortField] || \"\";\n\t\t\t} else {\n\t\t\t\tb = \"\";\n\t\t\t}\n\t\t}\n\t\tx = Number(a);\n\t\ty = Number(b);\n\t\tif(isNumeric && (!isNaN(x) || !isNaN(y))) {\n\t\t\treturn compareNumbers(x,y);\n\t\t} else if(isAlphaNumeric) {\n\t\t\treturn isDescending ? b.localeCompare(a,undefined,{numeric: true,sensitivity: \"base\"}) : a.localeCompare(b,undefined,{numeric: true,sensitivity: \"base\"});\n\t\t} else if($tw.utils.isDate(a) && $tw.utils.isDate(b)) {\n\t\t\treturn isDescending ? b - a : a - b;\n\t\t} else {\n\t\t\ta = String(a);\n\t\t\tb = String(b);\n\t\t\tif(!isCaseSensitive) {\n\t\t\t\ta = a.toLowerCase();\n\t\t\t\tb = b.toLowerCase();\n\t\t\t}\n\t\t\treturn isDescending ? b.localeCompare(a) : a.localeCompare(b);\n\t\t}\n\t});\n};\n\n/*\nFor every tiddler invoke a callback(title,tiddler) with `this` set to the wiki object. Options include:\nsortField: field to sort by\nexcludeTag: tag to exclude\nincludeSystem: whether to include system tiddlers (defaults to false)\n*/\nexports.forEachTiddler = function(/* [options,]callback */) {\n\tvar arg = 0,\n\t\toptions = arguments.length >= 2 ? arguments[arg++] : {},\n\t\tcallback = arguments[arg++],\n\t\ttitles = this.getTiddlers(options),\n\t\tt, tiddler;\n\tfor(t=0; t<titles.length; t++) {\n\t\ttiddler = this.getTiddler(titles[t]);\n\t\tif(tiddler) {\n\t\t\tcallback.call(this,tiddler.fields.title,tiddler);\n\t\t}\n\t}\n};\n\n/*\nReturn an array of tiddler titles that are directly linked within the given parse tree\n */\nexports.extractLinks = function(parseTreeRoot) {\n\t// Count up the links\n\tvar links = [],\n\t\tcheckParseTree = function(parseTree) {\n\t\t\tfor(var t=0; t<parseTree.length; t++) {\n\t\t\t\tvar parseTreeNode = parseTree[t];\n\t\t\t\tif(parseTreeNode.type === \"link\" && parseTreeNode.attributes.to && parseTreeNode.attributes.to.type === \"string\") {\n\t\t\t\t\tvar value = parseTreeNode.attributes.to.value;\n\t\t\t\t\tif(links.indexOf(value) === -1) {\n\t\t\t\t\t\tlinks.push(value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif(parseTreeNode.children) {\n\t\t\t\t\tcheckParseTree(parseTreeNode.children);\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\tcheckParseTree(parseTreeRoot);\n\treturn links;\n};\n\n/*\nReturn an array of tiddler titles that are directly linked from the specified tiddler\n*/\nexports.getTiddlerLinks = function(title) {\n\tvar self = this;\n\t// We'll cache the links so they only get computed if the tiddler changes\n\treturn this.getCacheForTiddler(title,\"links\",function() {\n\t\t// Parse the tiddler\n\t\tvar parser = self.parseTiddler(title);\n\t\tif(parser) {\n\t\t\treturn self.extractLinks(parser.tree);\n\t\t}\n\t\treturn [];\n\t});\n};\n\n/*\nReturn an array of tiddler titles that link to the specified tiddler\n*/\nexports.getTiddlerBacklinks = function(targetTitle) {\n\tvar self = this,\n\t\tbacklinksIndexer = this.getIndexer(\"BacklinksIndexer\"),\n\t\tbacklinks = backlinksIndexer && backlinksIndexer.lookup(targetTitle);\n\n\tif(!backlinks) {\n\t\tbacklinks = [];\n\t\tthis.forEachTiddler(function(title,tiddler) {\n\t\t\tvar links = self.getTiddlerLinks(title);\n\t\t\tif(links.indexOf(targetTitle) !== -1) {\n\t\t\t\tbacklinks.push(title);\n\t\t\t}\n\t\t});\n\t}\n\treturn backlinks;\n};\n\n/*\nReturn a hashmap of tiddler titles that are referenced but not defined. Each value is the number of times the missing tiddler is referenced\n*/\nexports.getMissingTitles = function() {\n\tvar self = this,\n\t\tmissing = [];\n// We should cache the missing tiddler list, even if we recreate it every time any tiddler is modified\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tif((!self.tiddlerExists(link) && !self.isShadowTiddler(link)) && missing.indexOf(link) === -1) {\n\t\t\t\tmissing.push(link);\n\t\t\t}\n\t\t});\n\t});\n\treturn missing;\n};\n\nexports.getOrphanTitles = function() {\n\tvar self = this,\n\t\torphans = this.getTiddlers();\n\tthis.forEachTiddler(function(title,tiddler) {\n\t\tvar links = self.getTiddlerLinks(title);\n\t\t$tw.utils.each(links,function(link) {\n\t\t\tvar p = orphans.indexOf(link);\n\t\t\tif(p !== -1) {\n\t\t\t\torphans.splice(p,1);\n\t\t\t}\n\t\t});\n\t});\n\treturn orphans; // Todo\n};\n\n/*\nRetrieves a list of the tiddler titles that are tagged with a given tag\n*/\nexports.getTiddlersWithTag = function(tag) {\n\t// Try to use the indexer\n\tvar self = this,\n\t\ttagIndexer = this.getIndexer(\"TagIndexer\"),\n\t\tresults = tagIndexer && tagIndexer.subIndexers[3].lookup(tag);\n\tif(!results) {\n\t\t// If not available, perform a manual scan\n\t\tresults = this.getGlobalCache(\"taglist-\" + tag,function() {\n\t\t\tvar tagmap = self.getTagMap();\n\t\t\treturn self.sortByList(tagmap[tag],tag);\n\t\t});\n\t}\n\treturn results;\n};\n\n/*\nGet a hashmap by tag of arrays of tiddler titles\n*/\nexports.getTagMap = function() {\n\tvar self = this;\n\treturn this.getGlobalCache(\"tagmap\",function() {\n\t\tvar tags = Object.create(null),\n\t\t\tstoreTags = function(tagArray,title) {\n\t\t\t\tif(tagArray) {\n\t\t\t\t\tfor(var index=0; index<tagArray.length; index++) {\n\t\t\t\t\t\tvar tag = tagArray[index];\n\t\t\t\t\t\tif($tw.utils.hop(tags,tag)) {\n\t\t\t\t\t\t\ttags[tag].push(title);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\ttags[tag] = [title];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\t\t\ttitle, tiddler;\n\t\t// Collect up all the tags\n\t\tself.eachShadow(function(tiddler,title) {\n\t\t\tif(!self.tiddlerExists(title)) {\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t\t}\n\t\t});\n\t\tself.each(function(tiddler,title) {\n\t\t\tstoreTags(tiddler.fields.tags,title);\n\t\t});\n\t\treturn tags;\n\t});\n};\n\n/*\nLookup a given tiddler and return a list of all the tiddlers that include it in the specified list field\n*/\nexports.findListingsOfTiddler = function(targetTitle,fieldName) {\n\tfieldName = fieldName || \"list\";\n\tvar titles = [];\n\tthis.each(function(tiddler,title) {\n\t\tvar list = $tw.utils.parseStringArray(tiddler.fields[fieldName]);\n\t\tif(list && list.indexOf(targetTitle) !== -1) {\n\t\t\ttitles.push(title);\n\t\t}\n\t});\n\treturn titles;\n};\n\n/*\nSorts an array of tiddler titles according to an ordered list\n*/\nexports.sortByList = function(array,listTitle) {\n\tvar self = this,\n\t\treplacedTitles = Object.create(null);\n\t// Given a title, this function will place it in the correct location\n\t// within titles.\n\tfunction moveItemInList(title) {\n\t\tif(!$tw.utils.hop(replacedTitles, title)) {\n\t\t\treplacedTitles[title] = true;\n\t\t\tvar newPos = -1,\n\t\t\t\ttiddler = self.getTiddler(title);\n\t\t\tif(tiddler) {\n\t\t\t\tvar beforeTitle = tiddler.fields[\"list-before\"],\n\t\t\t\t\tafterTitle = tiddler.fields[\"list-after\"];\n\t\t\t\tif(beforeTitle === \"\") {\n\t\t\t\t\tnewPos = 0;\n\t\t\t\t} else if(afterTitle === \"\") {\n\t\t\t\t\tnewPos = titles.length;\n\t\t\t\t} else if(beforeTitle) {\n\t\t\t\t\t// if this title is placed relative\n\t\t\t\t\t// to another title, make sure that\n\t\t\t\t\t// title is placed before we place\n\t\t\t\t\t// this one.\n\t\t\t\t\tmoveItemInList(beforeTitle);\n\t\t\t\t\tnewPos = titles.indexOf(beforeTitle);\n\t\t\t\t} else if(afterTitle) {\n\t\t\t\t\t// Same deal\n\t\t\t\t\tmoveItemInList(afterTitle);\n\t\t\t\t\tnewPos = titles.indexOf(afterTitle);\n\t\t\t\t\tif(newPos >= 0) {\n\t\t\t\t\t\t++newPos;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\t// If a new position is specified, let's move it\n\t\t\t\tif (newPos !== -1) {\n\t\t\t\t\t// get its current Pos, and make sure\n\t\t\t\t\t// sure that it's _actually_ in the list\n\t\t\t\t\t// and that it would _actually_ move\n\t\t\t\t\t// (#4275) We don't bother calling\n\t\t\t\t\t//         indexOf unless we have a new\n\t\t\t\t\t//         position to work with\n\t\t\t\t\tvar currPos = titles.indexOf(title);\n\t\t\t\t\tif(currPos >= 0 && newPos !== currPos) {\n\t\t\t\t\t\t// move it!\n\t\t\t\t\t\ttitles.splice(currPos,1);\n\t\t\t\t\t\tif(newPos >= currPos) {\n\t\t\t\t\t\t\tnewPos--;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ttitles.splice(newPos,0,title);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\tvar list = this.getTiddlerList(listTitle);\n\tif(!array || array.length === 0) {\n\t\treturn [];\n\t} else {\n\t\tvar titles = [], t, title;\n\t\t// First place any entries that are present in the list\n\t\tfor(t=0; t<list.length; t++) {\n\t\t\ttitle = list[t];\n\t\t\tif(array.indexOf(title) !== -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Then place any remaining entries\n\t\tfor(t=0; t<array.length; t++) {\n\t\t\ttitle = array[t];\n\t\t\tif(list.indexOf(title) === -1) {\n\t\t\t\ttitles.push(title);\n\t\t\t}\n\t\t}\n\t\t// Finally obey the list-before and list-after fields of each tiddler in turn\n\t\tvar sortedTitles = titles.slice(0);\n\t\tfor(t=0; t<sortedTitles.length; t++) {\n\t\t\ttitle = sortedTitles[t];\n\t\t\tmoveItemInList(title);\n\t\t}\n\t\treturn titles;\n\t}\n};\n\nexports.getSubTiddler = function(title,subTiddlerTitle) {\n\tvar bundleInfo = this.getPluginInfo(title) || this.getTiddlerDataCached(title);\n\tif(bundleInfo && bundleInfo.tiddlers) {\n\t\tvar subTiddler = bundleInfo.tiddlers[subTiddlerTitle];\n\t\tif(subTiddler) {\n\t\t\treturn new $tw.Tiddler(subTiddler);\n\t\t}\n\t}\n\treturn null;\n};\n\n/*\nRetrieve a tiddler as a JSON string of the fields\n*/\nexports.getTiddlerAsJson = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\tvar fields = Object.create(null);\n\t\t$tw.utils.each(tiddler.fields,function(value,name) {\n\t\t\tfields[name] = tiddler.getFieldString(name);\n\t\t});\n\t\treturn JSON.stringify(fields);\n\t} else {\n\t\treturn JSON.stringify({title: title});\n\t}\n};\n\nexports.getTiddlersAsJson = function(filter,spaces) {\n\tvar tiddlers = this.filterTiddlers(filter),\n\t\tspaces = (spaces === undefined) ? $tw.config.preferences.jsonSpaces : spaces,\n\t\tdata = [];\n\tfor(var t=0;t<tiddlers.length; t++) {\n\t\tvar tiddler = this.getTiddler(tiddlers[t]);\n\t\tif(tiddler) {\n\t\t\tvar fields = new Object();\n\t\t\tfor(var field in tiddler.fields) {\n\t\t\t\tfields[field] = tiddler.getFieldString(field);\n\t\t\t}\n\t\t\tdata.push(fields);\n\t\t}\n\t}\n\treturn JSON.stringify(data,null,spaces);\n};\n\n/*\nGet the content of a tiddler as a JavaScript object. How this is done depends on the type of the tiddler:\n\napplication/json: the tiddler JSON is parsed into an object\napplication/x-tiddler-dictionary: the tiddler is parsed as sequence of name:value pairs\n\nOther types currently just return null.\n\ntitleOrTiddler: string tiddler title or a tiddler object\ndefaultData: default data to be returned if the tiddler is missing or doesn't contain data\n\nNote that the same value is returned for repeated calls for the same tiddler data. The value is frozen to prevent modification; otherwise modifications would be visible to all callers\n*/\nexports.getTiddlerDataCached = function(titleOrTiddler,defaultData) {\n\tvar self = this,\n\t\ttiddler = titleOrTiddler;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler) {\n\t\treturn this.getCacheForTiddler(tiddler.fields.title,\"data\",function() {\n\t\t\t// Return the frozen value\n\t\t\tvar value = self.getTiddlerData(tiddler.fields.title,undefined);\n\t\t\t$tw.utils.deepFreeze(value);\n\t\t\treturn value;\n\t\t}) || defaultData;\n\t} else {\n\t\treturn defaultData;\n\t}\n};\n\n/*\nAlternative, uncached version of getTiddlerDataCached(). The return value can be mutated freely and reused\n*/\nexports.getTiddlerData = function(titleOrTiddler,defaultData) {\n\tvar tiddler = titleOrTiddler,\n\t\tdata;\n\tif(!(tiddler instanceof $tw.Tiddler)) {\n\t\ttiddler = this.getTiddler(tiddler);\t\n\t}\n\tif(tiddler && tiddler.fields.text) {\n\t\tswitch(tiddler.fields.type) {\n\t\t\tcase \"application/json\":\n\t\t\t\t// JSON tiddler\n\t\t\t\ttry {\n\t\t\t\t\tdata = JSON.parse(tiddler.fields.text);\n\t\t\t\t} catch(ex) {\n\t\t\t\t\treturn defaultData;\n\t\t\t\t}\n\t\t\t\treturn data;\n\t\t\tcase \"application/x-tiddler-dictionary\":\n\t\t\t\treturn $tw.utils.parseFields(tiddler.fields.text);\n\t\t}\n\t}\n\treturn defaultData;\n};\n\n/*\nExtract an indexed field from within a data tiddler\n*/\nexports.extractTiddlerDataItem = function(titleOrTiddler,index,defaultText) {\n\tvar data = this.getTiddlerDataCached(titleOrTiddler,Object.create(null)),\n\t\ttext;\n\tif(data && $tw.utils.hop(data,index)) {\n\t\ttext = data[index];\n\t}\n\tif(typeof text === \"string\" || typeof text === \"number\") {\n\t\treturn text.toString();\n\t} else {\n\t\treturn defaultText;\n\t}\n};\n\n/*\nSet a tiddlers content to a JavaScript object. Currently this is done by setting the tiddler's type to \"application/json\" and setting the text to the JSON text of the data.\ntitle: title of tiddler\ndata: object that can be serialised to JSON\nfields: optional hashmap of additional tiddler fields to be set\n*/\nexports.setTiddlerData = function(title,data,fields) {\n\tvar existingTiddler = this.getTiddler(title),\n\t\tnewFields = {\n\t\t\ttitle: title\n\t};\n\tif(existingTiddler && existingTiddler.fields.type === \"application/x-tiddler-dictionary\") {\n\t\tnewFields.text = $tw.utils.makeTiddlerDictionary(data);\n\t} else {\n\t\tnewFields.type = \"application/json\";\n\t\tnewFields.text = JSON.stringify(data,null,$tw.config.preferences.jsonSpaces);\n\t}\n\tthis.addTiddler(new $tw.Tiddler(this.getCreationFields(),existingTiddler,fields,newFields,this.getModificationFields()));\n};\n\n/*\nReturn the content of a tiddler as an array containing each line\n*/\nexports.getTiddlerList = function(title,field,index) {\n\tif(index) {\n\t\treturn $tw.utils.parseStringArray(this.extractTiddlerDataItem(title,index,\"\"));\n\t}\n\tfield = field || \"list\";\n\tvar tiddler = this.getTiddler(title);\n\tif(tiddler) {\n\t\treturn ($tw.utils.parseStringArray(tiddler.fields[field]) || []).slice(0);\n\t}\n\treturn [];\n};\n\n// Return a named global cache object. Global cache objects are cleared whenever a tiddler change occurs\nexports.getGlobalCache = function(cacheName,initializer) {\n\tthis.globalCache = this.globalCache || Object.create(null);\n\tif($tw.utils.hop(this.globalCache,cacheName)) {\n\t\treturn this.globalCache[cacheName];\n\t} else {\n\t\tthis.globalCache[cacheName] = initializer();\n\t\treturn this.globalCache[cacheName];\n\t}\n};\n\nexports.clearGlobalCache = function() {\n\tthis.globalCache = Object.create(null);\n};\n\n// Return the named cache object for a tiddler. If the cache doesn't exist then the initializer function is invoked to create it\nexports.getCacheForTiddler = function(title,cacheName,initializer) {\n\tthis.caches = this.caches || Object.create(null);\n\tvar caches = this.caches[title];\n\tif(caches && caches[cacheName]) {\n\t\treturn caches[cacheName];\n\t} else {\n\t\tif(!caches) {\n\t\t\tcaches = Object.create(null);\n\t\t\tthis.caches[title] = caches;\n\t\t}\n\t\tcaches[cacheName] = initializer();\n\t\treturn caches[cacheName];\n\t}\n};\n\n// Clear all caches associated with a particular tiddler, or, if the title is null, clear all the caches for all the tiddlers\nexports.clearCache = function(title) {\n\tif(title) {\n\t\tthis.caches = this.caches || Object.create(null);\n\t\tif($tw.utils.hop(this.caches,title)) {\n\t\t\tdelete this.caches[title];\n\t\t}\n\t} else {\n\t\tthis.caches = Object.create(null);\n\t}\n};\n\nexports.initParsers = function(moduleType) {\n\t// Install the parser modules\n\t$tw.Wiki.parsers = {};\n\tvar self = this;\n\t$tw.modules.forEachModuleOfType(\"parser\",function(title,module) {\n\t\tfor(var f in module) {\n\t\t\tif($tw.utils.hop(module,f)) {\n\t\t\t\t$tw.Wiki.parsers[f] = module[f]; // Store the parser class\n\t\t\t}\n\t\t}\n\t});\n\t// Use the generic binary parser for any binary types not registered so far\n\tif($tw.Wiki.parsers[\"application/octet-stream\"]) {\n\t\tObject.keys($tw.config.contentTypeInfo).forEach(function(type) {\n\t\t\tif(!$tw.utils.hop($tw.Wiki.parsers,type) && $tw.config.contentTypeInfo[type].encoding === \"base64\") {\n\t\t\t\t$tw.Wiki.parsers[type] = $tw.Wiki.parsers[\"application/octet-stream\"];\n\t\t\t}\n\t\t});\t\t\n\t}\n};\n\n/*\nParse a block of text of a specified MIME type\n\ttype: content type of text to be parsed\n\ttext: text\n\toptions: see below\nOptions include:\n\tparseAsInline: if true, the text of the tiddler will be parsed as an inline run\n\t_canonical_uri: optional string of the canonical URI of this content\n*/\nexports.parseText = function(type,text,options) {\n\ttext = text || \"\";\n\toptions = options || {};\n\t// Select a parser\n\tvar Parser = $tw.Wiki.parsers[type];\n\tif(!Parser && $tw.utils.getFileExtensionInfo(type)) {\n\t\tParser = $tw.Wiki.parsers[$tw.utils.getFileExtensionInfo(type).type];\n\t}\n\tif(!Parser) {\n\t\tParser = $tw.Wiki.parsers[options.defaultType || \"text/vnd.tiddlywiki\"];\n\t}\n\tif(!Parser) {\n\t\treturn null;\n\t}\n\t// Return the parser instance\n\treturn new Parser(type,text,{\n\t\tparseAsInline: options.parseAsInline,\n\t\twiki: this,\n\t\t_canonical_uri: options._canonical_uri\n\t});\n};\n\n/*\nParse a tiddler according to its MIME type\n*/\nexports.parseTiddler = function(title,options) {\n\toptions = $tw.utils.extend({},options);\n\tvar cacheType = options.parseAsInline ? \"inlineParseTree\" : \"blockParseTree\",\n\t\ttiddler = this.getTiddler(title),\n\t\tself = this;\n\treturn tiddler ? this.getCacheForTiddler(title,cacheType,function() {\n\t\t\tif(tiddler.hasField(\"_canonical_uri\")) {\n\t\t\t\toptions._canonical_uri = tiddler.fields._canonical_uri;\n\t\t\t}\n\t\t\treturn self.parseText(tiddler.fields.type,tiddler.fields.text,options);\n\t\t}) : null;\n};\n\nexports.parseTextReference = function(title,field,index,options) {\n\tvar tiddler,text;\n\tif(options.subTiddler) {\n\t\ttiddler = this.getSubTiddler(title,options.subTiddler);\n\t} else {\n\t\ttiddler = this.getTiddler(title);\n\t\tif(field === \"text\" || (!field && !index)) {\n\t\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\t\treturn this.parseTiddler(title,options);\n\t\t}\n\t}\n\tif(field === \"text\" || (!field && !index)) {\n\t\tif(tiddler && tiddler.fields) {\n\t\t\treturn this.parseText(tiddler.fields.type,tiddler.fields.text,options);\t\t\t\n\t\t} else {\n\t\t\treturn null;\n\t\t}\n\t} else if(field) {\n\t\tif(field === \"title\") {\n\t\t\ttext = title;\n\t\t} else {\n\t\t\tif(!tiddler || !tiddler.hasField(field)) {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t\ttext = tiddler.fields[field];\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text.toString(),options);\n\t} else if(index) {\n\t\tthis.getTiddlerText(title); // Force the tiddler to be lazily loaded\n\t\ttext = this.extractTiddlerDataItem(tiddler,index,undefined);\n\t\tif(text === undefined) {\n\t\t\treturn null;\n\t\t}\n\t\treturn this.parseText(\"text/vnd.tiddlywiki\",text,options);\n\t}\n};\n\n/*\nMake a widget tree for a parse tree\nparser: parser object\noptions: see below\nOptions include:\ndocument: optional document to use\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.makeWidget = function(parser,options) {\n\toptions = options || {};\n\tvar widgetNode = {\n\t\t\ttype: \"widget\",\n\t\t\tchildren: []\n\t\t},\n\t\tcurrWidgetNode = widgetNode;\n\t// Create set variable widgets for each variable\n\t$tw.utils.each(options.variables,function(value,name) {\n\t\tvar setVariableWidget = {\n\t\t\ttype: \"set\",\n\t\t\tattributes: {\n\t\t\t\tname: {type: \"string\", value: name},\n\t\t\t\tvalue: {type: \"string\", value: value}\n\t\t\t},\n\t\t\tchildren: []\n\t\t};\n\t\tcurrWidgetNode.children = [setVariableWidget];\n\t\tcurrWidgetNode = setVariableWidget;\n\t});\n\t// Add in the supplied parse tree nodes\n\tcurrWidgetNode.children = parser ? parser.tree : [];\n\t// Create the widget\n\treturn new widget.widget(widgetNode,{\n\t\twiki: this,\n\t\tdocument: options.document || $tw.fakeDocument,\n\t\tparentWidget: options.parentWidget\n\t});\n};\n\n/*\nMake a widget tree for transclusion\ntitle: target tiddler title\noptions: as for wiki.makeWidget() plus:\noptions.field: optional field to transclude (defaults to \"text\")\noptions.mode: transclusion mode \"inline\" or \"block\"\noptions.children: optional array of children for the transclude widget\noptions.importVariables: optional importvariables filter string for macros to be included\noptions.importPageMacros: optional boolean; if true, equivalent to passing \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\" to options.importVariables\n*/\nexports.makeTranscludeWidget = function(title,options) {\n\toptions = options || {};\n\tvar parseTreeDiv = {tree: [{\n\t\t\ttype: \"element\",\n\t\t\ttag: \"div\",\n\t\t\tchildren: []}]},\n\t\tparseTreeImportVariables = {\n\t\t\ttype: \"importvariables\",\n\t\t\tattributes: {\n\t\t\t\tfilter: {\n\t\t\t\t\tname: \"filter\",\n\t\t\t\t\ttype: \"string\"\n\t\t\t\t}\n\t\t\t},\n\t\t\tisBlock: false,\n\t\t\tchildren: []},\n\t\tparseTreeTransclude = {\n\t\t\ttype: \"transclude\",\n\t\t\tattributes: {\n\t\t\t\ttiddler: {\n\t\t\t\t\tname: \"tiddler\",\n\t\t\t\t\ttype: \"string\",\n\t\t\t\t\tvalue: title}},\n\t\t\tisBlock: !options.parseAsInline};\n\tif(options.importVariables || options.importPageMacros) {\n\t\tif(options.importVariables) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = options.importVariables;\n\t\t} else if(options.importPageMacros) {\n\t\t\tparseTreeImportVariables.attributes.filter.value = \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\";\n\t\t}\n\t\tparseTreeDiv.tree[0].children.push(parseTreeImportVariables);\n\t\tparseTreeImportVariables.children.push(parseTreeTransclude);\n\t} else {\n\t\tparseTreeDiv.tree[0].children.push(parseTreeTransclude);\n\t}\n\tif(options.field) {\n\t\tparseTreeTransclude.attributes.field = {type: \"string\", value: options.field};\n\t}\n\tif(options.mode) {\n\t\tparseTreeTransclude.attributes.mode = {type: \"string\", value: options.mode};\n\t}\n\tif(options.children) {\n\t\tparseTreeTransclude.children = options.children;\n\t}\n\treturn $tw.wiki.makeWidget(parseTreeDiv,options);\n};\n\n/*\nParse text in a specified format and render it into another format\n\toutputType: content type for the output\n\ttextType: content type of the input text\n\ttext: input text\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderText = function(outputType,textType,text,options) {\n\toptions = options || {};\n\tvar parser = this.parseText(textType,text,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : container.textContent;\n};\n\n/*\nParse text from a tiddler and render it into another format\n\toutputType: content type for the output\n\ttitle: title of the tiddler to be rendered\n\toptions: see below\nOptions include:\nvariables: hashmap of variables to set\nparentWidget: optional parent widget for the root node\n*/\nexports.renderTiddler = function(outputType,title,options) {\n\toptions = options || {};\n\tvar parser = this.parseTiddler(title,options),\n\t\twidgetNode = this.makeWidget(parser,options);\n\tvar container = $tw.fakeDocument.createElement(\"div\");\n\twidgetNode.render(container,null);\n\treturn outputType === \"text/html\" ? container.innerHTML : (outputType === \"text/plain-formatted\" ? container.formattedTextContent : container.textContent);\n};\n\n/*\nReturn an array of tiddler titles that match a search string\n\ttext: The text string to search for\n\toptions: see below\nOptions available:\n\tsource: an iterator function for the source tiddlers, called source(iterator), where iterator is called as iterator(tiddler,title)\n\texclude: An array of tiddler titles to exclude from the search\n\tinvert: If true returns tiddlers that do not contain the specified string\n\tcaseSensitive: If true forces a case sensitive search\n\tfield: If specified, restricts the search to the specified field, or an array of field names\n\tanchored: If true, forces all but regexp searches to be anchored to the start of text\n\texcludeField: If true, the field options are inverted to specify the fields that are not to be searched\n\tThe search mode is determined by the first of these boolean flags to be true\n\t\tliteral: searches for literal string\n\t\twhitespace: same as literal except runs of whitespace are treated as a single space\n\t\tregexp: treats the search term as a regular expression\n\t\twords: (default) treats search string as a list of tokens, and matches if all tokens are found, regardless of adjacency or ordering\n*/\nexports.search = function(text,options) {\n\toptions = options || {};\n\tvar self = this,\n\t\tt,\n\t\tinvert = !!options.invert;\n\t// Convert the search string into a regexp for each term\n\tvar terms, searchTermsRegExps,\n\t\tflags = options.caseSensitive ? \"\" : \"i\",\n\t\tanchor = options.anchored ? \"^\" : \"\";\n\tif(options.literal) {\n\t\tif(text.length === 0) {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(text) + \")\",flags)];\n\t\t}\n\t} else if(options.whitespace) {\n\t\tterms = [];\n\t\t$tw.utils.each(text.split(/\\s+/g),function(term) {\n\t\t\tif(term) {\n\t\t\t\tterms.push($tw.utils.escapeRegExp(term));\n\t\t\t}\n\t\t});\n\t\tsearchTermsRegExps = [new RegExp(\"(\" + anchor + terms.join(\"\\\\s+\") + \")\",flags)];\n\t} else if(options.regexp) {\n\t\ttry {\n\t\t\tsearchTermsRegExps = [new RegExp(\"(\" + text + \")\",flags)];\t\t\t\n\t\t} catch(e) {\n\t\t\tsearchTermsRegExps = null;\n\t\t\tconsole.log(\"Regexp error parsing /(\" + text + \")/\" + flags + \": \",e);\n\t\t}\n\t} else {\n\t\tterms = text.split(/ +/);\n\t\tif(terms.length === 1 && terms[0] === \"\") {\n\t\t\tsearchTermsRegExps = null;\n\t\t} else {\n\t\t\tsearchTermsRegExps = [];\n\t\t\tfor(t=0; t<terms.length; t++) {\n\t\t\t\tsearchTermsRegExps.push(new RegExp(\"(\" + anchor + $tw.utils.escapeRegExp(terms[t]) + \")\",flags));\n\t\t\t}\n\t\t}\n\t}\n\t// Accumulate the array of fields to be searched or excluded from the search\n\tvar fields = [];\n\tif(options.field) {\n\t\tif($tw.utils.isArray(options.field)) {\n\t\t\t$tw.utils.each(options.field,function(fieldName) {\n\t\t\t\tif(fieldName) {\n\t\t\t\t\tfields.push(fieldName);\t\t\t\t\t\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tfields.push(options.field);\n\t\t}\n\t}\n\t// Use default fields if none specified and we're not excluding fields (excluding fields with an empty field array is the same as searching all fields)\n\tif(fields.length === 0 && !options.excludeField) {\n\t\tfields.push(\"title\");\n\t\tfields.push(\"tags\");\n\t\tfields.push(\"text\");\n\t}\n\t// Function to check a given tiddler for the search term\n\tvar searchTiddler = function(title) {\n\t\tif(!searchTermsRegExps) {\n\t\t\treturn true;\n\t\t}\n\t\tvar notYetFound = searchTermsRegExps.slice();\n\n\t\tvar tiddler = self.getTiddler(title);\n\t\tif(!tiddler) {\n\t\t\ttiddler = new $tw.Tiddler({title: title, text: \"\", type: \"text/vnd.tiddlywiki\"});\n\t\t}\n\t\tvar contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type] || $tw.config.contentTypeInfo[\"text/vnd.tiddlywiki\"],\n\t\t\tsearchFields;\n\t\t// Get the list of fields we're searching\n\t\tif(options.excludeField) {\n\t\t\tsearchFields = Object.keys(tiddler.fields);\n\t\t\t$tw.utils.each(fields,function(fieldName) {\n\t\t\t\tvar p = searchFields.indexOf(fieldName);\n\t\t\t\tif(p !== -1) {\n\t\t\t\t\tsearchFields.splice(p,1);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\tsearchFields = fields;\n\t\t}\n\t\tfor(var fieldIndex=0; notYetFound.length>0 && fieldIndex<searchFields.length; fieldIndex++) {\n\t\t\t// Don't search the text field if the content type is binary\n\t\t\tvar fieldName = searchFields[fieldIndex];\n\t\t\tif(fieldName === \"text\" && contentTypeInfo.encoding !== \"utf8\") {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tvar str = tiddler.fields[fieldName],\n\t\t\t\tt;\n\t\t\tif(str) {\n\t\t\t\tif($tw.utils.isArray(str)) {\n\t\t\t\t\t// If the field value is an array, test each regexp against each field array entry and fail if each regexp doesn't match at least one field array entry\n\t\t\t\t\tfor(var s=0; s<str.length; s++) {\n\t\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\t\tif(notYetFound[t].test(str[s])) {\n\t\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\t// If the field isn't an array, force it to a string and test each regexp against it and fail if any do not match\n\t\t\t\t\tstr = tiddler.getFieldString(fieldName);\n\t\t\t\t\tfor(t=0; t<notYetFound.length;) {\n\t\t\t\t\t\tif(notYetFound[t].test(str)) {\n\t\t\t\t\t\t\tnotYetFound.splice(t, 1);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tt++;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t\treturn notYetFound.length == 0;\n\t};\n\t// Loop through all the tiddlers doing the search\n\tvar results = [],\n\t\tsource = options.source || this.each;\n\tsource(function(tiddler,title) {\n\t\tif(searchTiddler(title) !== options.invert) {\n\t\t\tresults.push(title);\n\t\t}\n\t});\n\t// Remove any of the results we have to exclude\n\tif(options.exclude) {\n\t\tfor(t=0; t<options.exclude.length; t++) {\n\t\t\tvar p = results.indexOf(options.exclude[t]);\n\t\t\tif(p !== -1) {\n\t\t\t\tresults.splice(p,1);\n\t\t\t}\n\t\t}\n\t}\n\treturn results;\n};\n\n/*\nTrigger a load for a tiddler if it is skinny. Returns the text, or undefined if the tiddler is missing, null if the tiddler is being lazily loaded.\n*/\nexports.getTiddlerText = function(title,defaultText) {\n\tvar tiddler = this.getTiddler(title);\n\t// Return undefined if the tiddler isn't found\n\tif(!tiddler) {\n\t\treturn defaultText;\n\t}\n\tif(!tiddler.hasField(\"_is_skinny\")) {\n\t\t// Just return the text if we've got it\n\t\treturn tiddler.fields.text || \"\";\n\t} else {\n\t\t// Tell any listeners about the need to lazily load this tiddler\n\t\tthis.dispatchEvent(\"lazyLoad\",title);\n\t\t// Indicate that the text is being loaded\n\t\treturn null;\n\t}\n};\n\n/*\nCheck whether the text of a tiddler matches a given value. By default, the comparison is case insensitive, and any spaces at either end of the tiddler text is trimmed\n*/\nexports.checkTiddlerText = function(title,targetText,options) {\n\toptions = options || {};\n\tvar text = this.getTiddlerText(title,\"\");\n\tif(!options.noTrim) {\n\t\ttext = text.trim();\n\t}\n\tif(!options.caseSensitive) {\n\t\ttext = text.toLowerCase();\n\t\ttargetText = targetText.toLowerCase();\n\t}\n\treturn text === targetText;\n}\n\n/*\nRead an array of browser File objects, invoking callback(tiddlerFieldsArray) once they're all read\n*/\nexports.readFiles = function(files,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\tvar result = [],\n\t\toutstanding = files.length,\n\t\treadFileCallback = function(tiddlerFieldsArray) {\n\t\t\tresult.push.apply(result,tiddlerFieldsArray);\n\t\t\tif(--outstanding === 0) {\n\t\t\t\tcallback(result);\n\t\t\t}\n\t\t};\n\tfor(var f=0; f<files.length; f++) {\n\t\tthis.readFile(files[f],$tw.utils.extend({},options,{callback: readFileCallback}));\n\t}\n\treturn files.length;\n};\n\n/*\nRead a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFile = function(file,options) {\n\tvar callback;\n\tif(typeof options === \"function\") {\n\t\tcallback = options;\n\t\toptions = {};\n\t} else {\n\t\tcallback = options.callback;\n\t}\n\t// Get the type, falling back to the filename extension\n\tvar self = this,\n\t\ttype = file.type;\n\tif(type === \"\" || !type) {\n\t\tvar dotPos = file.name.lastIndexOf(\".\");\n\t\tif(dotPos !== -1) {\n\t\t\tvar fileExtensionInfo = $tw.utils.getFileExtensionInfo(file.name.substr(dotPos));\n\t\t\tif(fileExtensionInfo) {\n\t\t\t\ttype = fileExtensionInfo.type;\n\t\t\t}\n\t\t}\n\t}\n\t// Figure out if we're reading a binary file\n\tvar contentTypeInfo = $tw.config.contentTypeInfo[type],\n\t\tisBinary = contentTypeInfo ? contentTypeInfo.encoding === \"base64\" : false;\n\t// Log some debugging information\n\tif($tw.log.IMPORT) {\n\t\tconsole.log(\"Importing file '\" + file.name + \"', type: '\" + type + \"', isBinary: \" + isBinary);\n\t}\n\t// Give the hook a chance to process the drag\n\tif($tw.hooks.invokeHook(\"th-importing-file\",{\n\t\tfile: file,\n\t\ttype: type,\n\t\tisBinary: isBinary,\n\t\tcallback: callback\n\t}) !== true) {\n\t\tthis.readFileContent(file,type,isBinary,options.deserializer,callback);\n\t}\n};\n\n/*\nLower level utility to read the content of a browser File object, invoking callback(tiddlerFieldsArray) with an array of tiddler fields objects\n*/\nexports.readFileContent = function(file,type,isBinary,deserializer,callback) {\n\tvar self = this;\n\t// Create the FileReader\n\tvar reader = new FileReader();\n\t// Onload\n\treader.onload = function(event) {\n\t\tvar text = event.target.result,\n\t\t\ttiddlerFields = {title: file.name || \"Untitled\", type: type};\n\t\tif(isBinary) {\n\t\t\tvar commaPos = text.indexOf(\",\");\n\t\t\tif(commaPos !== -1) {\n\t\t\t\ttext = text.substr(commaPos + 1);\n\t\t\t}\n\t\t}\n\t\t// Check whether this is an encrypted TiddlyWiki file\n\t\tvar encryptedJson = $tw.utils.extractEncryptedStoreArea(text);\n\t\tif(encryptedJson) {\n\t\t\t// If so, attempt to decrypt it with the current password\n\t\t\t$tw.utils.decryptStoreAreaInteractive(encryptedJson,function(tiddlers) {\n\t\t\t\tcallback(tiddlers);\n\t\t\t});\n\t\t} else {\n\t\t\t// Otherwise, just try to deserialise any tiddlers in the file\n\t\t\tcallback(self.deserializeTiddlers(type,text,tiddlerFields,{deserializer: deserializer}));\n\t\t}\n\t};\n\t// Kick off the read\n\tif(isBinary) {\n\t\treader.readAsDataURL(file);\n\t} else {\n\t\treader.readAsText(file);\n\t}\n};\n\n/*\nFind any existing draft of a specified tiddler\n*/\nexports.findDraft = function(targetTitle) {\n\tvar draftTitle = undefined;\n\tthis.forEachTiddler({includeSystem: true},function(title,tiddler) {\n\t\tif(tiddler.fields[\"draft.title\"] && tiddler.fields[\"draft.of\"] === targetTitle) {\n\t\t\tdraftTitle = title;\n\t\t}\n\t});\n\treturn draftTitle;\n}\n\n/*\nCheck whether the specified draft tiddler has been modified.\nIf the original tiddler doesn't exist, create  a vanilla tiddler variable,\nto check if additional fields have been added.\n*/\nexports.isDraftModified = function(title) {\n\tvar tiddler = this.getTiddler(title);\n\tif(!tiddler.isDraft()) {\n\t\treturn false;\n\t}\n\tvar ignoredFields = [\"created\", \"modified\", \"title\", \"draft.title\", \"draft.of\"],\n\t\torigTiddler = this.getTiddler(tiddler.fields[\"draft.of\"]) || new $tw.Tiddler({text:\"\", tags:[]}),\n\t\ttitleModified = tiddler.fields[\"draft.title\"] !== tiddler.fields[\"draft.of\"];\n\treturn titleModified || !tiddler.isEqual(origTiddler,ignoredFields);\n};\n\n/*\nAdd a new record to the top of the history stack\ntitle: a title string or an array of title strings\nfromPageRect: page coordinates of the origin of the navigation\nhistoryTitle: title of history tiddler (defaults to $:/HistoryList)\n*/\nexports.addToHistory = function(title,fromPageRect,historyTitle) {\n\tvar story = new $tw.Story({wiki: this, historyTitle: historyTitle});\n\tstory.addToHistory(title,fromPageRect);\t\t\n};\n\n/*\nAdd a new tiddler to the story river\ntitle: a title string or an array of title strings\nfromTitle: the title of the tiddler from which the navigation originated\nstoryTitle: title of story tiddler (defaults to $:/StoryList)\noptions: see story.js\n*/\nexports.addToStory = function(title,fromTitle,storyTitle,options) {\n\tvar story = new $tw.Story({wiki: this, storyTitle: storyTitle});\n\tstory.addToStory(title,fromTitle,options);\t\t\n};\n\n/*\nGenerate a title for the draft of a given tiddler\n*/\nexports.generateDraftTitle = function(title) {\n\tvar c = 0,\n\t\tdraftTitle,\n\t\tusername = this.getTiddlerText(\"$:/status/UserName\"),\n\t\tattribution = username ? \" by \" + username : \"\";\n\tdo {\n\t\tdraftTitle = \"Draft \" + (c ? (c + 1) + \" \" : \"\") + \"of '\" + title + \"'\" + attribution;\n\t\tc++;\n\t} while(this.tiddlerExists(draftTitle));\n\treturn draftTitle;\n};\n\n/*\nInvoke the available upgrader modules\ntitles: array of tiddler titles to be processed\ntiddlers: hashmap by title of tiddler fields of pending import tiddlers. These can be modified by the upgraders. An entry with no fields indicates a tiddler that was pending import has been suppressed. When entries are added to the pending import the tiddlers hashmap may have entries that are not present in the titles array\nReturns a hashmap of messages keyed by tiddler title.\n*/\nexports.invokeUpgraders = function(titles,tiddlers) {\n\t// Collect up the available upgrader modules\n\tvar self = this;\n\tif(!this.upgraderModules) {\n\t\tthis.upgraderModules = [];\n\t\t$tw.modules.forEachModuleOfType(\"upgrader\",function(title,module) {\n\t\t\tif(module.upgrade) {\n\t\t\t\tself.upgraderModules.push(module);\n\t\t\t}\n\t\t});\n\t}\n\t// Invoke each upgrader in turn\n\tvar messages = {};\n\tfor(var t=0; t<this.upgraderModules.length; t++) {\n\t\tvar upgrader = this.upgraderModules[t],\n\t\t\tupgraderMessages = upgrader.upgrade(this,titles,tiddlers);\n\t\t$tw.utils.extend(messages,upgraderMessages);\n\t}\n\treturn messages;\n};\n\n// Determine whether a plugin by title is dynamically loadable\nexports.doesPluginRequireReload = function(title) {\n\treturn this.doesPluginInfoRequireReload(this.getPluginInfo(title) || this.getTiddlerDataCached(title));\n};\n\n// Determine whether a plugin info structure is dynamically loadable\nexports.doesPluginInfoRequireReload = function(pluginInfo) {\n\tif(pluginInfo) {\n\t\tvar foundModule = false;\n\t\t$tw.utils.each(pluginInfo.tiddlers,function(tiddler) {\n\t\t\tif(tiddler.type === \"application/javascript\" && $tw.utils.hop(tiddler,\"module-type\")) {\n\t\t\t\tfoundModule = true;\n\t\t\t}\n\t\t});\n\t\treturn foundModule;\n\t} else {\n\t\treturn null;\n\t}\n};\n\n})();\n\n",
            "type": "application/javascript",
            "module-type": "wikimethod"
        },
        "$:/palettes/Blanca": {
            "title": "$:/palettes/Blanca",
            "name": "Blanca",
            "description": "A clean white palette to let you focus",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #66cccc\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ffffff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #7897f3\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ccc\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #ffffff\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #7897f3\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #eeeeee\ntab-border-selected: #cccccc\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffeedd\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: #eee\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #ff9900\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Blue": {
            "title": "$:/palettes/Blue",
            "name": "Blue",
            "description": "A blue theme",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333353\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #ddddff\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #5959c0\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: #ccccdd\ntab-border-selected: #ccccdd\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #eeeeff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #666666\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #ffffff\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #ffffff\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #5959c0\ntoolbar-new-button: #5eb95e\ntoolbar-options-button: rgb(128, 88, 165)\ntoolbar-save-button: #0e90d2\ntoolbar-info-button: #0e90d2\ntoolbar-edit-button: rgb(243, 123, 29)\ntoolbar-close-button: #dd514c\ntoolbar-delete-button: #dd514c\ntoolbar-cancel-button: rgb(243, 123, 29)\ntoolbar-done-button: #5eb95e\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/Muted": {
            "title": "$:/palettes/Muted",
            "name": "Muted",
            "description": "Bright tiddlers on a muted background",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #6f6f70\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #29a6ee\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #c2c1c2\nsidebar-foreground-shadow: rgba(255,255,255,0)\nsidebar-foreground: #d3d2d4\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #6f6f70\nsidebar-tab-background: #666667\nsidebar-tab-border-selected: #999\nsidebar-tab-border: #515151\nsidebar-tab-divider: #999\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: #999\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #d1d0d2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #d5ad34\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/ContrastLight": {
            "title": "$:/palettes/ContrastLight",
            "name": "Contrast (Light)",
            "description": "High contrast and unambiguous (light version)",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #fff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #000\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #000\ntag-foreground: #fff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/ContrastDark": {
            "title": "$:/palettes/ContrastDark",
            "name": "Contrast (Dark)",
            "description": "High contrast and unambiguous (dark version)",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #f00\nalert-border: <<colour background>>\nalert-highlight: <<colour foreground>>\nalert-muted-foreground: #800\nbackground: #000\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: <<colour background>>\nbutton-foreground: <<colour foreground>>\nbutton-border: <<colour foreground>>\ncode-background: <<colour background>>\ncode-border: <<colour foreground>>\ncode-foreground: <<colour foreground>>\ndirty-indicator: #f00\ndownload-background: #080\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: <<colour foreground>>\ndropdown-tab-background: <<colour foreground>>\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #00a\nexternal-link-foreground: #00e\nforeground: #fff\nmessage-background: <<colour foreground>>\nmessage-border: <<colour background>>\nmessage-foreground: <<colour background>>\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour foreground>>\nmodal-header-border: <<colour foreground>>\nmuted-foreground: <<colour foreground>>\nnotification-background: <<colour background>>\nnotification-border: <<colour foreground>>\npage-background: <<colour background>>\npre-background: <<colour background>>\npre-border: <<colour foreground>>\nprimary: #00f\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: <<colour background>>\nsidebar-controls-foreground: <<colour foreground>>\nsidebar-foreground-shadow: rgba(0,0,0, 0)\nsidebar-foreground: <<colour foreground>>\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: <<colour foreground>>\nsidebar-tab-background-selected: <<colour background>>\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: <<colour foreground>>\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: <<colour foreground>>\nsidebar-tiddler-link-foreground: <<colour primary>>\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: <<colour foreground>>\ntab-border-selected: <<colour foreground>>\ntab-border: <<colour foreground>>\ntab-divider: <<colour foreground>>\ntab-foreground-selected: <<colour foreground>>\ntab-foreground: <<colour background>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #fff\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour foreground>>\ntiddler-controls-foreground-hover: #ddd\ntiddler-controls-foreground-selected: #fdd\ntiddler-controls-foreground: <<colour foreground>>\ntiddler-editor-background: <<colour background>>\ntiddler-editor-border-image: <<colour foreground>>\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: <<colour background>>\ntiddler-editor-fields-odd: <<colour background>>\ntiddler-info-background: <<colour background>>\ntiddler-info-border: <<colour foreground>>\ntiddler-info-tab-background: <<colour background>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour foreground>>\ntiddler-title-foreground: <<colour foreground>>\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour foreground>>\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/DarkPhotos": {
            "title": "$:/palettes/DarkPhotos",
            "created": "20150402111612188",
            "description": "Good with dark photo backgrounds",
            "modified": "20150402112344080",
            "name": "DarkPhotos",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: \nbutton-foreground: \nbutton-border: \ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #ddd\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #336438\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #ccf\nsidebar-controls-foreground: #fff\nsidebar-foreground-shadow: rgba(0,0,0, 0.5)\nsidebar-foreground: #fff\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #eee\nsidebar-tab-background-selected: rgba(255,255,255, 0.8)\nsidebar-tab-background: rgba(255,255,255, 0.4)\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: rgba(255,255,255, 0.2)\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #aaf\nsidebar-tiddler-link-foreground: #ddf\nsite-title-foreground: #fff\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/GruvboxDark": {
            "title": "$:/palettes/GruvboxDark",
            "name": "Gruvbox Dark",
            "description": "Retro groove color scheme",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "license": "https://github.com/morhetz/gruvbox",
            "text": "alert-background: #cc241d\nalert-border: #cc241d\nalert-highlight: #d79921\nalert-muted-foreground: #504945\nbackground: #3c3836\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: #504945\nbutton-foreground: #fbf1c7\nbutton-border: transparent\ncode-background: #504945\ncode-border: #504945\ncode-foreground: #fb4934\ndiff-delete-background: #fb4934\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #b8bb26\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #fb4934\ndownload-background: #b8bb26\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #665c54\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ebdbb2\ndropdown-tab-background: #665c54\ndropzone-background: #98971a\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #d3869b\nexternal-link-foreground: #8ec07c\nforeground: #fbf1c7\nmenubar-background: #504945\nmenubar-foreground: <<colour foreground>>\nmessage-background: #83a598\nmessage-border: #83a598\nmessage-foreground: #3c3836\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #504945\nmodal-footer-background: #3c3836\nmodal-footer-border: #3c3836\nmodal-header-border: #3c3836\nmuted-foreground: #d5c4a1\nnotification-background: <<colour primary>>\nnotification-border: <<colour primary>>\npage-background: #282828\npre-background: #504945\npre-border: #504945\nprimary: #d79921\nselect-tag-background: #665c54\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #7c6f64\nsidebar-controls-foreground: #504945\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #fbf1c7\nsidebar-muted-foreground-hover: #7c6f64\nsidebar-muted-foreground: #504945\nsidebar-tab-background-selected: #bdae93\nsidebar-tab-background: #3c3836\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #bdae93\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #282828\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #458588\nsidebar-tiddler-link-foreground: #98971a\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ebdbb2\ntab-background: #665c54\ntab-border-selected: #665c54\ntab-border: #665c54\ntab-divider: #bdae93\ntab-foreground-selected: #282828\ntab-foreground: #ebdbb2\ntable-border: #7c6f64\ntable-footer-background: #665c54\ntable-header-background: #504945\ntag-background: #d3869b\ntag-foreground: #282828\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #7c6f64\ntiddler-controls-foreground-selected: #7c6f64\ntiddler-controls-foreground: #665c54\ntiddler-editor-background: #282828\ntiddler-editor-border-image: #282828\ntiddler-editor-border: #282828\ntiddler-editor-fields-even: #504945\ntiddler-editor-fields-odd: #7c6f64\ntiddler-info-background: #32302f\ntiddler-info-border: #ebdbb2\ntiddler-info-tab-background: #ebdbb2\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #7c6f64\ntiddler-title-foreground: #a89984\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #504945\nvery-muted-foreground: #bdae93\nwikilist-background: <<colour page-background>>\nwikilist-button-background: <<colour button-background>>\nwikilist-button-foreground: <<colour button-foreground>>\nwikilist-item: <<colour background>>\nwikilist-toolbar-background: <<colour background>>\nwikilist-toolbar-foreground: <<colour foreground>>\nwikilist-title: <<colour foreground>>\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: <<colour muted-foreground>>\nwikilist-button-open-hover: <<colour primary>>\nwikilist-button-open: <<colour dropzone-background>>\nwikilist-button-remove: <<colour dirty-indicator>>\nwikilist-button-remove-hover: <<colour alert-background>>\nwikilist-droplink-dragover: <<colour dropzone-background>>\nwikilist-button-reveal: <<colour sidebar-tiddler-link-foreground-hover>>\nwikilist-button-reveal-hover: <<colour message-background>>"
        },
        "$:/palettes/Nord": {
            "title": "$:/palettes/Nord",
            "name": "Nord",
            "description": "An arctic, north-bluish color palette.",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "license": "MIT, arcticicestudio, https://github.com/arcticicestudio/nord/blob/develop/LICENSE.md",
            "text": "alert-background: #D08770\nalert-border: #D08770\nalert-highlight: #B48EAD\nalert-muted-foreground: #4C566A\nbackground: #3b4252\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: #4C566A\nbutton-foreground: #D8DEE9\nbutton-border: transparent\ncode-background: #2E3440\ncode-border: #2E3440\ncode-foreground: #BF616A\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #A3BE8C\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #BF616A\ndownload-background: #A3BE8C\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #ECEFF4\ndropdown-tab-background: #4C566A\ndropzone-background: #A3BE8C\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #5E81AC\nexternal-link-foreground: #8FBCBB\nforeground: #d8dee9\nmenubar-background: #2E3440\nmenubar-foreground: #d8dee9\nmessage-background: #2E3440\nmessage-border: #2E3440\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #3b4252\nmodal-footer-background: #3b4252\nmodal-footer-border: #3b4252\nmodal-header-border: #3b4252\nmuted-foreground: #4C566A\nnotification-background: <<colour primary>>\nnotification-border: #EBCB8B\npage-background: #2e3440\npre-background: #2E3440\npre-border: #2E3440\nprimary: #5E81AC\nselect-tag-background: #3b4252\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #D8DEE9\nsidebar-controls-foreground: #4C566A\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #D8DEE9\nsidebar-muted-foreground-hover: #4C566A\nsidebar-muted-foreground: #4C566A\nsidebar-tab-background-selected: #ECEFF4\nsidebar-tab-background: #4C566A\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #4C566A\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #4C566A\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #A3BE8C\nsidebar-tiddler-link-foreground: #81A1C1\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #B48EAD\ntab-background-selected: #ECEFF4\ntab-background: #4C566A\ntab-border-selected: #4C566A\ntab-border: #4C566A\ntab-divider: #4C566A\ntab-foreground-selected: #4C566A\ntab-foreground: #D8DEE9\ntable-border: #4C566A\ntable-footer-background: #2e3440\ntable-header-background: #2e3440\ntag-background: #A3BE8C\ntag-foreground: #4C566A\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: \ntiddler-controls-foreground-selected: #EBCB8B\ntiddler-controls-foreground: #4C566A\ntiddler-editor-background: #2e3440\ntiddler-editor-border-image: #2e3440\ntiddler-editor-border: #2e3440\ntiddler-editor-fields-even: #2e3440\ntiddler-editor-fields-odd: #2e3440\ntiddler-info-background: #2e3440\ntiddler-info-border: #2e3440\ntiddler-info-tab-background: #2e3440\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #4C566A\ntiddler-title-foreground: #81A1C1\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #2d3038\nvery-muted-foreground: #2d3038\n"
        },
        "$:/palettes/Rocker": {
            "title": "$:/palettes/Rocker",
            "name": "Rocker",
            "description": "A dark theme",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #999999\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #000\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #cc0000\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #ffffff\nsidebar-foreground-shadow: rgba(255,255,255, 0.0)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #000\nsidebar-tab-background: <<colour tab-background>>\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: <<colour tab-divider>>\nsidebar-tab-foreground-selected: \nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #ffbb99\nsidebar-tiddler-link-foreground: #cc0000\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ffbb99\ntag-foreground: #000\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #cc0000\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/SolarFlare": {
            "title": "$:/palettes/SolarFlare",
            "name": "Solar Flare",
            "description": "Warm, relaxing earth colours",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": ": Background Tones\n\nbase03: #002b36\nbase02: #073642\n\n: Content Tones\n\nbase01: #586e75\nbase00: #657b83\nbase0: #839496\nbase1: #93a1a1\n\n: Background Tones\n\nbase2: #eee8d5\nbase3: #fdf6e3\n\n: Accent Colors\n\nyellow: #b58900\norange: #cb4b16\nred: #dc322f\nmagenta: #d33682\nviolet: #6c71c4\nblue: #268bd2\ncyan: #2aa198\ngreen: #859900\n\n: Additional Tones (RA)\n\nbase10: #c0c4bb\nviolet-muted: #7c81b0\nblue-muted: #4e7baa\n\nyellow-hot: #ffcc44\norange-hot: #eb6d20\nred-hot: #ff2222\nblue-hot: #2298ee\ngreen-hot: #98ee22\n\n: Palette\n\n: Do not use colour macro for background and foreground\nbackground: #fdf6e3\n    download-foreground: <<colour background>>\n    dragger-foreground: <<colour background>>\n    dropdown-background: <<colour background>>\n    modal-background: <<colour background>>\n    sidebar-foreground-shadow: <<colour background>>\n    tiddler-background: <<colour background>>\n    tiddler-border: <<colour background>>\n    tiddler-link-background: <<colour background>>\n    tab-background-selected: <<colour background>>\n        dropdown-tab-background-selected: <<colour tab-background-selected>>\nforeground: #657b83\n    dragger-background: <<colour foreground>>\n    tab-foreground: <<colour foreground>>\n        tab-foreground-selected: <<colour tab-foreground>>\n            sidebar-tab-foreground-selected: <<colour tab-foreground-selected>>\n        sidebar-tab-foreground: <<colour tab-foreground>>\n    sidebar-button-foreground: <<colour foreground>>\n    sidebar-controls-foreground: <<colour foreground>>\n    sidebar-foreground: <<colour foreground>>\n: base03\n: base02\n: base01\n    alert-muted-foreground: <<colour base01>>\n: base00\n    code-foreground: <<colour base00>>\n    message-foreground: <<colour base00>>\n    tag-foreground: <<colour base00>>\n: base0\n    sidebar-tiddler-link-foreground: <<colour base0>>\n: base1\n    muted-foreground: <<colour base1>>\n        blockquote-bar: <<colour muted-foreground>>\n        dropdown-border: <<colour muted-foreground>>\n        sidebar-muted-foreground: <<colour muted-foreground>>\n        tiddler-title-foreground: <<colour muted-foreground>>\n            site-title-foreground: <<colour tiddler-title-foreground>>\n: base2\n    modal-footer-background: <<colour base2>>\n    page-background: <<colour base2>>\n        modal-backdrop: <<colour page-background>>\n        notification-background: <<colour page-background>>\n        code-background: <<colour page-background>>\n            code-border: <<colour code-background>>\n        pre-background: <<colour page-background>>\n            pre-border: <<colour pre-background>>\n        sidebar-tab-background-selected: <<colour page-background>>\n    table-header-background: <<colour base2>>\n    tag-background: <<colour base2>>\n    tiddler-editor-background: <<colour base2>>\n    tiddler-info-background: <<colour base2>>\n    tiddler-info-tab-background: <<colour base2>>\n    tab-background: <<colour base2>>\n        dropdown-tab-background: <<colour tab-background>>\n: base3\n    alert-background: <<colour base3>>\n    message-background: <<colour base3>>\n: yellow\n: orange\n: red\n: magenta\n    alert-highlight: <<colour magenta>>\n: violet\n    external-link-foreground: <<colour violet>>\n: blue\n: cyan\n: green\n: base10\n    tiddler-controls-foreground: <<colour base10>>\n: violet-muted\n    external-link-foreground-visited: <<colour violet-muted>>\n: blue-muted\n    primary: <<colour blue-muted>>\n        download-background: <<colour primary>>\n        tiddler-link-foreground: <<colour primary>>\n\nalert-border: #b99e2f\ndirty-indicator: #ff0000\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nmessage-border: #cfd6e6\nmodal-border: #999999\nselect-tag-background:\nselect-tag-foreground:\nsidebar-controls-foreground-hover:\nsidebar-muted-foreground-hover:\nsidebar-tab-background: #ded8c5\nsidebar-tiddler-link-foreground-hover:\nstatic-alert-foreground: #aaaaaa\ntab-border: #cccccc\n    modal-footer-border: <<colour tab-border>>\n    modal-header-border: <<colour tab-border>>\n    notification-border: <<colour tab-border>>\n    sidebar-tab-border: <<colour tab-border>>\n    tab-border-selected: <<colour tab-border>>\n        sidebar-tab-border-selected: <<colour tab-border-selected>>\ntab-divider: #d8d8d8\n    sidebar-tab-divider: <<colour tab-divider>>\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-border: #dddddd\ntiddler-subtitle-foreground: #c0c0c0\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\n"
        },
        "$:/palettes/SolarizedLight": {
            "title": "$:/palettes/SolarizedLight",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "description": "Precision colors for machines and people",
            "license": "MIT, Ethan Schoonover, https://github.com/altercation/solarized/blob/master/LICENSE",
            "name": "SolarizedLight",
            "text": "alert-background: #eee8d5\nalert-border: #073642\nalert-highlight: #cb4b16\nalert-muted-foreground: #586e75\nbackground: #fdf6e3\nblockquote-bar: <<colour muted-foreground>>\nbutton-background: #cb4b16\nbutton-foreground: #fdf6e3\nbutton-border: transparent\ncode-background: #eee8d5\ncode-border: #93a1a1\ncode-foreground: #d33682\ndiff-delete-background: #BF616A\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #859900\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #D08770\ndownload-background: #859900\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour background>>\ndropdown-tab-background-selected: #fdf6e3\ndropdown-tab-background: #93a1a1\ndropzone-background: #859900\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: #d33682\nexternal-link-foreground-visited: #b58900\nexternal-link-foreground: #cb4b16\nforeground: #839496\nmessage-background: #586e75\nmessage-border: #586e75\nmessage-foreground: #eee8d5\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #eee8d5\nmodal-footer-background: #eee8d5\nmodal-footer-border: #eee8d5\nmodal-header-border: #eee8d5\nmuted-foreground: #93a1a1\nnotification-background: #EBCB8B\nnotification-border: #D08770\npage-background: #eee8d5\npre-background: #eee8d5\npre-border: #93a1a1\nprimary: #2aa198\nselect-tag-background: #eee8d5\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: #eee8d5\nsidebar-controls-foreground-hover: #268bd2\nsidebar-controls-foreground: #586e75\nsidebar-foreground-shadow: transparent\nsidebar-foreground: #839496\nsidebar-muted-foreground-hover: #657b83\nsidebar-muted-foreground: #93a1a1\nsidebar-tab-background-selected: #eee8d5\nsidebar-tab-background: #839496\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: #657b83\nsidebar-tab-divider: <<colour page-background>>\nsidebar-tab-foreground-selected: #839496\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #859900\nsidebar-tiddler-link-foreground: #268bd2\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #dc322f\ntab-background-selected: #fdf6e3\ntab-background: #839496\ntab-border-selected: #93a1a1\ntab-border: #93a1a1\ntab-divider: #fdf6e3\ntab-foreground-selected: #839496\ntab-foreground: #eee8d5\ntable-border: #657b83\ntable-footer-background: #657b83\ntable-header-background: #93a1a1\ntag-background: #6c71c4\ntag-foreground: #eee8d5\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #b58900\ntiddler-controls-foreground-selected: #b58900\ntiddler-controls-foreground: #073642\ntiddler-editor-background: #eee8d5\ntiddler-editor-border-image: #eee8d5\ntiddler-editor-border: #eee8d5\ntiddler-editor-fields-even: #eee8d5\ntiddler-editor-fields-odd: #fdf6e3\ntiddler-info-background: #eee8d5\ntiddler-info-border: #eee8d5\ntiddler-info-tab-background: #586e75\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #586e75\ntiddler-title-foreground: #073642\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: #839496\nvery-muted-foreground: #93a1a1\n"
        },
        "$:/palettes/SpartanDay": {
            "title": "$:/palettes/SpartanDay",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "description": "Cold, spartan day colors",
            "name": "Spartan Day",
            "text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #FAFAFA\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: #ececec\ncode-border: #ececec\ncode-foreground: \ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #FFFFFF\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #F5F5F5\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: \nexternal-link-foreground: \nforeground: rgba(0, 0, 0, 0.87)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(0, 0, 0, 0.54)\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour very-muted-foreground>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(0, 0, 0, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #f4f4f4\npre-background: #ececec\npre-border: #ececec\nprimary: #3949ab\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #aeaeae\nsidebar-controls-foreground: #c6c6c6\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground-hover: rgba(0, 0, 0, 0.54)\nsidebar-muted-foreground: rgba(0, 0, 0, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(0, 0, 0, 0.87)\nsidebar-tab-foreground: rgba(0, 0, 0, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(0, 0, 0, 0.87)\nsidebar-tiddler-link-foreground: rgba(0, 0, 0, 0.54)\nsite-title-foreground: rgba(0, 0, 0, 0.87)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(0, 0, 0, 0.87)\ntab-foreground: rgba(0, 0, 0, 0.54)\ntable-border: #d8d8d8\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: #f9f9f9\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: #e8e7e7\ntiddler-editor-fields-even: rgba(0, 0, 0, 0.1)\ntiddler-editor-fields-odd: rgba(0, 0, 0, 0.04)\ntiddler-info-background: #F5F5F5\ntiddler-info-border: #F5F5F5\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #000000\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(0, 0, 0, 0.12)\n"
        },
        "$:/palettes/SpartanNight": {
            "title": "$:/palettes/SpartanNight",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "description": "Dark spartan colors",
            "name": "Spartan Night",
            "text": "alert-background: <<colour background>>\nalert-border: <<colour very-muted-foreground>>\nalert-highlight: <<colour very-muted-foreground>>\nalert-muted-foreground: <<colour muted-foreground>>\nbackground: #303030\nblockquote-bar: <<colour page-background>>\nbutton-background: transparent\nbutton-foreground: inherit\nbutton-border: <<colour tag-background>>\ncode-background: <<colour pre-background>>\ncode-border: <<colour pre-border>>\ncode-foreground: rgba(255, 255, 255, 0.54)\ndirty-indicator: #c80000\ndownload-background: <<colour primary>>\ndownload-foreground: <<colour foreground>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: #424242\ndropdown-border: <<colour dropdown-background>>\ndropdown-tab-background-selected: <<colour dropdown-background>>\ndropdown-tab-background: #050505\ndropzone-background: <<colour tag-background>>\nexternal-link-background-hover: transparent\nexternal-link-background-visited: transparent\nexternal-link-background: transparent\nexternal-link-foreground-hover: \nexternal-link-foreground-visited: #7c318c\nexternal-link-foreground: #9e3eb3\nforeground: rgba(255, 255, 255, 0.7)\nmessage-background: <<colour background>>\nmessage-border: <<colour very-muted-foreground>>\nmessage-foreground: rgba(255, 255, 255, 0.54)\nmodal-backdrop: <<colour page-background>>\nmodal-background: <<colour background>>\nmodal-border: <<colour very-muted-foreground>>\nmodal-footer-background: <<colour background>>\nmodal-footer-border: <<colour background>>\nmodal-header-border: <<colour very-muted-foreground>>\nmuted-foreground: rgba(255, 255, 255, 0.54)\nnotification-background: <<colour dropdown-background>>\nnotification-border: <<colour dropdown-background>>\npage-background: #212121\npre-background: #2a2a2a\npre-border: transparent\nprimary: #5656f3\nselect-tag-background: <<colour background>>\nselect-tag-foreground: <<colour foreground>>\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #494949\nsidebar-controls-foreground: #5d5d5d\nsidebar-foreground-shadow: transparent\nsidebar-foreground: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground-hover: rgba(255, 255, 255, 0.54)\nsidebar-muted-foreground: rgba(255, 255, 255, 0.38)\nsidebar-tab-background-selected: <<colour page-background>>\nsidebar-tab-background: transparent\nsidebar-tab-border-selected: <<colour table-border>>\nsidebar-tab-border: transparent\nsidebar-tab-divider: <<colour table-border>>\nsidebar-tab-foreground-selected: rgba(255, 255, 255, 0.87)\nsidebar-tab-foreground: rgba(255, 255, 255, 0.54)\nsidebar-tiddler-link-foreground-hover: rgba(255, 255, 255, 0.7)\nsidebar-tiddler-link-foreground: rgba(255, 255, 255, 0.54)\nsite-title-foreground: rgba(255, 255, 255, 0.7)\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: <<colour background>>\ntab-background: transparent\ntab-border-selected: <<colour table-border>>\ntab-border: transparent\ntab-divider: <<colour table-border>>\ntab-foreground-selected: rgba(255, 255, 255, 0.87)\ntab-foreground: rgba(255, 255, 255, 0.54)\ntable-border: #3a3a3a\ntable-footer-background: <<colour tiddler-editor-fields-odd>>\ntable-header-background: <<colour tiddler-editor-fields-even>>\ntag-background: #ec6\ntag-foreground: <<colour button-foreground>>\ntiddler-background: <<colour background>>\ntiddler-border: rgb(55,55,55)\ntiddler-controls-foreground-hover: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground-selected: <<colour sidebar-controls-foreground-hover>>\ntiddler-controls-foreground: <<colour sidebar-controls-foreground>>\ntiddler-editor-background: transparent\ntiddler-editor-border-image: \ntiddler-editor-border: rgba(255, 255, 255, 0.08)\ntiddler-editor-fields-even: rgba(255, 255, 255, 0.1)\ntiddler-editor-fields-odd: rgba(255, 255, 255, 0.04)\ntiddler-info-background: #454545\ntiddler-info-border: #454545\ntiddler-info-tab-background: <<colour tiddler-editor-fields-odd>>\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: <<colour muted-foreground>>\ntiddler-title-foreground: #FFFFFF\ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \ntoolbar-info-button: \ntoolbar-edit-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-cancel-button: \ntoolbar-done-button: \nuntagged-background: <<colour very-muted-foreground>>\nvery-muted-foreground: rgba(255, 255, 255, 0.12)\n"
        },
        "$:/palettes/Twilight": {
            "title": "$:/palettes/Twilight",
            "tags": "$:/tags/Palette",
            "author": "Thomas Elmiger",
            "type": "application/x-tiddler-dictionary",
            "name": "Twilight",
            "description": "Delightful, soft darkness.",
            "text": "alert-background: rgb(255, 255, 102)\nalert-border: rgb(232, 232, 125)\nalert-highlight: rgb(255, 51, 51)\nalert-muted-foreground: rgb(224, 82, 82)\nbackground: rgb(38, 38, 38)\nblockquote-bar: rgba(240, 196, 117, 0.7)\nbutton-background: rgb(63, 63, 63)\nbutton-border: rgb(127, 127, 127)\nbutton-foreground: rgb(179, 179, 179)\ncode-background: rgba(0,0,0,0.03)\ncode-border: rgba(0,0,0,0.08)\ncode-foreground: rgb(255, 94, 94)\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: rgb(255, 94, 94)\ndownload-background: #19a974\ndownload-foreground: rgb(38, 38, 38)\ndragger-background: rgb(179, 179, 179)\ndragger-foreground: rgb(38, 38, 38)\ndropdown-background: rgb(38, 38, 38)\ndropdown-border: rgb(255, 255, 255)\ndropdown-tab-background: rgba(0,0,0,.1)\ndropdown-tab-background-selected: rgba(255,255,255,1)\ndropzone-background: #9eebcf\nexternal-link-background: inherit\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-foreground: rgb(179, 179, 255)\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: rgb(153, 153, 255)\nforeground: rgb(179, 179, 179)\nmessage-background: <<colour tag-foreground>>\nmessage-border: #96ccff\nmessage-foreground: <<colour tag-background>>\nmodal-backdrop: rgb(179, 179, 179)\nmodal-background: rgb(38, 38, 38)\nmodal-border: rgba(0,0,0,.5)\nmodal-footer-background: #f4f4f4\nmodal-footer-border: rgba(0,0,0,.1)\nmodal-header-border: rgba(0,0,0,.2)\nmuted-foreground: rgb(255, 255, 255)\nnotification-background: <<colour tag-foreground>>\nnotification-border: <<colour tag-background>>\npage-background: rgb(26, 26, 26)\npre-background: rgb(25, 25, 25)\npre-border: rgba(0,0,0,.2)\nprimary: rgb(255, 201, 102)\nselect-tag-background: \nselect-tag-foreground: \nsidebar-button-foreground: rgb(179, 179, 179)\nsidebar-controls-foreground: rgb(153, 153, 153)\nsidebar-controls-foreground-hover: <<colour tiddler-controls-foreground-hover>>\nsidebar-foreground: rgb(141, 141, 141)\nsidebar-foreground-shadow: transparent\nsidebar-muted-foreground: rgba(0, 0, 0, 0.5)\nsidebar-muted-foreground-hover: rgb(141, 141, 141)\nsidebar-tab-background: rgba(141, 141, 141, 0.2)\nsidebar-tab-background-selected: rgb(26, 26, 26)\nsidebar-tab-border: rgb(127, 127, 127)\nsidebar-tab-border-selected: rgb(127, 127, 127)\nsidebar-tab-divider: rgb(127, 127, 127)\nsidebar-tab-foreground: rgb(179, 179, 179)\nsidebar-tab-foreground-selected: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground: rgb(179, 179, 179)\nsidebar-tiddler-link-foreground-hover: rgb(115, 115, 115)\nsite-title-foreground: rgb(255, 201, 102)\nstatic-alert-foreground: rgba(0,0,0,.3)\ntab-background: rgba(0,0,0,0.125)\ntab-background-selected: rgb(38, 38, 38)\ntab-border: rgb(255, 201, 102)\ntab-border-selected: rgb(255, 201, 102)\ntab-divider: rgb(255, 201, 102)\ntab-foreground: rgb(179, 179, 179)\ntab-foreground-selected: rgb(179, 179, 179)\ntable-border: rgba(255,255,255,.3)\ntable-footer-background: rgba(0,0,0,.4)\ntable-header-background: rgba(0,0,0,.1)\ntag-background: rgb(255, 201, 102)\ntag-foreground: rgb(25, 25, 25)\ntiddler-background: rgb(38, 38, 38)\ntiddler-border: rgba(240, 196, 117, 0.7)\ntiddler-controls-foreground: rgb(128, 128, 128)\ntiddler-controls-foreground-hover: rgba(255, 255, 255, 0.8)\ntiddler-controls-foreground-selected: rgba(255, 255, 255, 0.9)\ntiddler-editor-background: rgb(33, 33, 33)\ntiddler-editor-border: rgb(63, 63, 63)\ntiddler-editor-border-image: rgb(25, 25, 25)\ntiddler-editor-fields-even: rgb(33, 33, 33)\ntiddler-editor-fields-odd: rgb(28, 28, 28)\ntiddler-info-background: rgb(43, 43, 43)\ntiddler-info-border: rgb(25, 25, 25)\ntiddler-info-tab-background: rgb(43, 43, 43)\ntiddler-link-background: rgb(38, 38, 38)\ntiddler-link-foreground: rgb(204, 204, 255)\ntiddler-subtitle-foreground: rgb(255, 255, 255)\ntiddler-title-foreground: rgb(255, 192, 76)\ntoolbar-cancel-button: \ntoolbar-close-button: \ntoolbar-delete-button: \ntoolbar-done-button: \ntoolbar-edit-button: \ntoolbar-info-button: \ntoolbar-new-button: \ntoolbar-options-button: \ntoolbar-save-button: \nuntagged-background: rgb(255, 255, 255)\nvery-muted-foreground: rgba(240, 196, 117, 0.7)\n"
        },
        "$:/palettes/Vanilla": {
            "title": "$:/palettes/Vanilla",
            "name": "Vanilla",
            "description": "Pale and unobtrusive",
            "tags": "$:/tags/Palette",
            "type": "application/x-tiddler-dictionary",
            "text": "alert-background: #ffe476\nalert-border: #b99e2f\nalert-highlight: #881122\nalert-muted-foreground: #b99e2f\nbackground: #ffffff\nblockquote-bar: <<colour muted-foreground>>\nbutton-background:\nbutton-foreground:\nbutton-border:\ncode-background: #f7f7f9\ncode-border: #e1e1e8\ncode-foreground: #dd1144\ndiff-delete-background: #ffc9c9\ndiff-delete-foreground: <<colour foreground>>\ndiff-equal-background: \ndiff-equal-foreground: <<colour foreground>>\ndiff-insert-background: #aaefad\ndiff-insert-foreground: <<colour foreground>>\ndiff-invisible-background: \ndiff-invisible-foreground: <<colour muted-foreground>>\ndirty-indicator: #ff0000\ndownload-background: #34c734\ndownload-foreground: <<colour background>>\ndragger-background: <<colour foreground>>\ndragger-foreground: <<colour background>>\ndropdown-background: <<colour background>>\ndropdown-border: <<colour muted-foreground>>\ndropdown-tab-background-selected: #fff\ndropdown-tab-background: #ececec\ndropzone-background: rgba(0,200,0,0.7)\nexternal-link-background-hover: inherit\nexternal-link-background-visited: inherit\nexternal-link-background: inherit\nexternal-link-foreground-hover: inherit\nexternal-link-foreground-visited: #0000aa\nexternal-link-foreground: #0000ee\nforeground: #333333\nmessage-background: #ecf2ff\nmessage-border: #cfd6e6\nmessage-foreground: #547599\nmodal-backdrop: <<colour foreground>>\nmodal-background: <<colour background>>\nmodal-border: #999999\nmodal-footer-background: #f5f5f5\nmodal-footer-border: #dddddd\nmodal-header-border: #eeeeee\nmuted-foreground: #bbb\nnotification-background: #ffffdd\nnotification-border: #999999\npage-background: #f4f4f4\npre-background: #f5f5f5\npre-border: #cccccc\nprimary: #5778d8\nselect-tag-background:\nselect-tag-foreground:\nsidebar-button-foreground: <<colour foreground>>\nsidebar-controls-foreground-hover: #000000\nsidebar-controls-foreground: #aaaaaa\nsidebar-foreground-shadow: rgba(255,255,255, 0.8)\nsidebar-foreground: #acacac\nsidebar-muted-foreground-hover: #444444\nsidebar-muted-foreground: #c0c0c0\nsidebar-tab-background-selected: #f4f4f4\nsidebar-tab-background: #e0e0e0\nsidebar-tab-border-selected: <<colour tab-border-selected>>\nsidebar-tab-border: <<colour tab-border>>\nsidebar-tab-divider: #e4e4e4\nsidebar-tab-foreground-selected:\nsidebar-tab-foreground: <<colour tab-foreground>>\nsidebar-tiddler-link-foreground-hover: #444444\nsidebar-tiddler-link-foreground: #999999\nsite-title-foreground: <<colour tiddler-title-foreground>>\nstatic-alert-foreground: #aaaaaa\ntab-background-selected: #ffffff\ntab-background: #d8d8d8\ntab-border-selected: #d8d8d8\ntab-border: #cccccc\ntab-divider: #d8d8d8\ntab-foreground-selected: <<colour tab-foreground>>\ntab-foreground: #666666\ntable-border: #dddddd\ntable-footer-background: #a8a8a8\ntable-header-background: #f0f0f0\ntag-background: #ec6\ntag-foreground: #ffffff\ntiddler-background: <<colour background>>\ntiddler-border: <<colour background>>\ntiddler-controls-foreground-hover: #888888\ntiddler-controls-foreground-selected: #444444\ntiddler-controls-foreground: #cccccc\ntiddler-editor-background: #f8f8f8\ntiddler-editor-border-image: #ffffff\ntiddler-editor-border: #cccccc\ntiddler-editor-fields-even: #e0e8e0\ntiddler-editor-fields-odd: #f0f4f0\ntiddler-info-background: #f8f8f8\ntiddler-info-border: #dddddd\ntiddler-info-tab-background: #f8f8f8\ntiddler-link-background: <<colour background>>\ntiddler-link-foreground: <<colour primary>>\ntiddler-subtitle-foreground: #c0c0c0\ntiddler-title-foreground: #182955\ntoolbar-new-button:\ntoolbar-options-button:\ntoolbar-save-button:\ntoolbar-info-button:\ntoolbar-edit-button:\ntoolbar-close-button:\ntoolbar-delete-button:\ntoolbar-cancel-button:\ntoolbar-done-button:\nuntagged-background: #999999\nvery-muted-foreground: #888888\nwikilist-background: #e5e5e5\nwikilist-item: #fff\nwikilist-info: #000\nwikilist-title: #666\nwikilist-title-svg: <<colour wikilist-title>>\nwikilist-url: #aaa\nwikilist-button-open: #4fb82b\nwikilist-button-open-hover: green\nwikilist-button-reveal: #5778d8\nwikilist-button-reveal-hover: blue\nwikilist-button-remove: #d85778\nwikilist-button-remove-hover: red\nwikilist-toolbar-background: #d3d3d3\nwikilist-toolbar-foreground: #888\nwikilist-droplink-dragover: rgba(255,192,192,0.5)\nwikilist-button-background: #acacac\nwikilist-button-foreground: #000\n"
        },
        "$:/core/readme": {
            "title": "$:/core/readme",
            "text": "This plugin contains TiddlyWiki's core components, comprising:\n\n* JavaScript code modules\n* Icons\n* Templates needed to create TiddlyWiki's user interface\n* British English (''en-GB'') translations of the localisable strings used by the core\n"
        },
        "$:/library/sjcl.js/license": {
            "title": "$:/library/sjcl.js/license",
            "type": "text/plain",
            "text": "SJCL is open. You can use, modify and redistribute it under a BSD\nlicense or under the GNU GPL, version 2.0.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/BSD-2-Clause\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University. All rights reserved.\n\nRedistribution and use in source and binary forms, with or without\nmodification, are permitted provided that the following conditions are\nmet:\n\n1. Redistributions of source code must retain the above copyright\nnotice, this list of conditions and the following disclaimer.\n\n2. Redistributions in binary form must reproduce the above copyright\nnotice, this list of conditions and the following disclaimer in the\ndocumentation and/or other materials provided with the distribution.\n\nTHIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS \"AS\nIS\" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED\nTO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A\nPARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT\nHOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,\nSPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED\nTO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR\nPROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\nLIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\nNEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\nSOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\n\n---------------------------------------------------------------------\n\nhttp://opensource.org/licenses/GPL-2.0\n\nThe Stanford Javascript Crypto Library (hosted here on GitHub) is a\nproject by the Stanford Computer Security Lab to build a secure,\npowerful, fast, small, easy-to-use, cross-browser library for\ncryptography in Javascript.\n\nCopyright (c) 2009-2015, Emily Stark, Mike Hamburg and Dan Boneh at\nStanford University.\n\nThis program is free software; you can redistribute it and/or modify it\nunder the terms of the GNU General Public License as published by the\nFree Software Foundation; either version 2 of the License, or (at your\noption) any later version.\n\nThis program is distributed in the hope that it will be useful, but\nWITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General\nPublic License for more details.\n\nYou should have received a copy of the GNU General Public License along\nwith this program; if not, write to the Free Software Foundation, Inc.,\n59 Temple Place, Suite 330, Boston, MA 02111-1307 USA"
        },
        "$:/core/templates/MOTW.html": {
            "title": "$:/core/templates/MOTW.html",
            "text": "\\rules only filteredtranscludeinline transcludeinline entity\n<!-- The following comment is called a MOTW comment and is necessary for the TiddlyIE Internet Explorer extension -->\n<!-- saved from url=(0021)https://tiddlywiki.com -->&#13;&#10;"
        },
        "$:/core/templates/alltiddlers.template.html": {
            "title": "$:/core/templates/alltiddlers.template.html",
            "type": "text/vnd.tiddlywiki-html",
            "text": "<!-- This template is provided for backwards compatibility with older versions of TiddlyWiki -->\n\n<$set name=\"exportFilter\" value=\"[!is[system]sort[title]]\">\n\n{{$:/core/templates/exporters/StaticRiver}}\n\n</$set>\n"
        },
        "$:/core/templates/canonical-uri-external-image": {
            "title": "$:/core/templates/canonical-uri-external-image",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external images.\n\nChange the `./images/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./images/<$view field=\"title\" format=\"doubleurlencoded\"/>"
        },
        "$:/core/templates/canonical-uri-external-raw": {
            "title": "$:/core/templates/canonical-uri-external-raw",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external raw files that are stored in the same directory\n\n-->\n<$view field=\"title\" format=\"doubleurlencoded\"/>"
        },
        "$:/core/templates/canonical-uri-external-text": {
            "title": "$:/core/templates/canonical-uri-external-text",
            "text": "<!--\n\nThis template is used to assign the ''_canonical_uri'' field to external text files.\n\nChange the `./text/` part to a different base URI. The URI can be relative or absolute.\n\n-->\n./text/<$view field=\"title\" format=\"doubleurlencoded\"/>.tid"
        },
        "$:/core/templates/css-tiddler": {
            "title": "$:/core/templates/css-tiddler",
            "text": "<!--\n\nThis template is used for saving CSS tiddlers as a style tag with data attributes representing the tiddler fields.\n\n-->`<style`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/css\">`<$view field=\"text\" format=\"text\" />`</style>`"
        },
        "$:/core/templates/exporters/CsvFile": {
            "title": "$:/core/templates/exporters/CsvFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/CsvFile}}",
            "extension": ".csv",
            "text": "\\define renderContent()\n<$text text=<<csvtiddlers filter:\"\"\"$(exportFilter)$\"\"\" format:\"quoted-comma-sep\">>/>\n\\end\n<<renderContent>>\n"
        },
        "$:/core/templates/exporters/JsonFile": {
            "title": "$:/core/templates/exporters/JsonFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/JsonFile}}",
            "extension": ".json",
            "text": "\\define renderContent()\n<$text text=<<jsontiddlers filter:\"\"\"$(exportFilter)$\"\"\">>/>\n\\end\n<<renderContent>>\n"
        },
        "$:/core/templates/exporters/StaticRiver": {
            "title": "$:/core/templates/exporters/StaticRiver",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/StaticRiver}}",
            "extension": ".html",
            "text": "\\define tv-wikilink-template() #$uri_encoded$\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n<section class=\"tc-story-river\">\n{{$:/core/templates/exporters/StaticRiver/Content||$:/core/templates/html-tiddler}}\n</section>\n</body>\n</html>\n"
        },
        "$:/core/templates/exporters/StaticRiver/Content": {
            "title": "$:/core/templates/exporters/StaticRiver/Content",
            "text": "\\define renderContent()\n{{{ $(exportFilter)$ ||$:/core/templates/static-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>\n"
        },
        "$:/core/templates/exporters/TidFile": {
            "title": "$:/core/templates/exporters/TidFile",
            "tags": "$:/tags/Exporter",
            "description": "{{$:/language/Exporters/TidFile}}",
            "extension": ".tid",
            "text": "\\define renderContent()\n{{{ $(exportFilter)$ +[limit[1]] ||$:/core/templates/tid-tiddler}}}\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<<renderContent>>"
        },
        "$:/core/save/all-external-js": {
            "title": "$:/core/save/all-external-js",
            "text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/core]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5-external-js.html}}\n"
        },
        "$:/core/templates/tiddlywiki5.js": {
            "title": "$:/core/templates/tiddlywiki5.js",
            "text": "\\rules only filteredtranscludeinline transcludeinline codeinline\n\n/*\n{{ $:/core/copyright.txt ||$:/core/templates/plain-text-tiddler}}\n`*/\n`<!--~~ Library modules ~~-->\n{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/plain-text-tiddler}}}\n<!--~~ Boot prefix ~~-->\n{{ $:/boot/bootprefix.js ||$:/core/templates/plain-text-tiddler}}\n<!--~~ Core plugin ~~-->\n{{$:/core/templates/tiddlywiki5.js/tiddlers}}\n<!--~~ Boot kernel ~~-->\n{{ $:/boot/boot.js ||$:/core/templates/plain-text-tiddler}}\n"
        },
        "$:/core/templates/tiddlywiki5.js/tiddlers": {
            "title": "$:/core/templates/tiddlywiki5.js/tiddlers",
            "text": "`\n$tw.preloadTiddlerArray(`<$text text=<<jsontiddlers \"[[$:/core]]\">>/>`);\n$tw.preloadTiddlerArray([{\n\ttitle: \"$:/config/SaveWikiButton/Template\",\n\ttext: \"$:/core/save/all-external-js\"\n}]);\n`\n"
        },
        "$:/core/templates/tiddlywiki5-external-js.html": {
            "title": "$:/core/templates/tiddlywiki5-external-js.html",
            "text": "\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n{{$:/core/templates/MOTW.html}}<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"{{$:/core/copyright.txt}}\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/core/wiki/rawmarkup]] [all[shadows+tiddlers]tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n{{$:/core/templates/static.area}}\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n{{$:/core/templates/store.area.template.html}}\n<!--~~ Raw markup for the bottom of the body section ~~-->\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}\n</body>\n<script src=\"%24%3A%2Fcore%2Ftemplates%2Ftiddlywiki5.js\" onerror=\"alert('Error: Cannot load tiddlywiki.js');\"></script>\n</html>\n"
        },
        "$:/core/templates/html-div-skinny-tiddler": {
            "title": "$:/core/templates/html-div-skinny-tiddler",
            "text": "<!--\n\nThis template is a variant of $:/core/templates/html-div-tiddler used for saving skinny tiddlers (with no text field)\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre></pre>\n</div>`\n"
        },
        "$:/core/templates/html-div-tiddler": {
            "title": "$:/core/templates/html-div-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as an HTML DIV tag with attributes representing the tiddler fields.\n\n-->`<div`<$fields template=' $name$=\"$encoded_value$\"'></$fields>`>\n<pre>`<$view field=\"text\" format=\"htmlencoded\" />`</pre>\n</div>`\n"
        },
        "$:/core/templates/html-tiddler": {
            "title": "$:/core/templates/html-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as raw HTML\n\n--><$view field=\"text\" format=\"htmlwikified\" />"
        },
        "$:/core/templates/javascript-tiddler": {
            "title": "$:/core/templates/javascript-tiddler",
            "text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields.\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\">`<$view field=\"text\" format=\"text\" />`</script>`"
        },
        "$:/core/templates/json-tiddler": {
            "title": "$:/core/templates/json-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as raw JSON\n\n--><$text text=<<jsontiddler>>/>"
        },
        "$:/core/templates/module-tiddler": {
            "title": "$:/core/templates/module-tiddler",
            "text": "<!--\n\nThis template is used for saving JavaScript tiddlers as a script tag with data attributes representing the tiddler fields. The body of the tiddler is wrapped in a call to the `$tw.modules.define` function in order to define the body of the tiddler as a module\n\n-->`<script`<$fields template=' data-tiddler-$name$=\"$encoded_value$\"'></$fields>` type=\"text/javascript\" data-module=\"yes\">$tw.modules.define(\"`<$view field=\"title\" format=\"jsencoded\" />`\",\"`<$view field=\"module-type\" format=\"jsencoded\" />`\",function(module,exports,require) {`<$view field=\"text\" format=\"text\" />`});\n</script>`"
        },
        "$:/core/templates/plain-text-tiddler": {
            "title": "$:/core/templates/plain-text-tiddler",
            "text": "<$view field=\"text\" format=\"text\" />"
        },
        "$:/core/templates/raw-static-tiddler": {
            "title": "$:/core/templates/raw-static-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers as static HTML\n\n--><$view field=\"text\" format=\"plainwikified\" />"
        },
        "$:/core/save/all": {
            "title": "$:/core/save/all",
            "text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/empty": {
            "title": "$:/core/save/empty",
            "text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/lazy-all": {
            "title": "$:/core/save/lazy-all",
            "text": "\\define saveTiddlerFilter()\n[is[system]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[!is[system]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/save/lazy-images": {
            "title": "$:/core/save/lazy-images",
            "text": "\\define saveTiddlerFilter()\n[is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[!is[system]is[image]] +[sort[title]] \n\\end\n\\define skinnySaveTiddlerFilter()\n[is[image]]\n\\end\n{{$:/core/templates/tiddlywiki5.html}}\n"
        },
        "$:/core/templates/server/static.sidebar.wikitext": {
            "title": "$:/core/templates/server/static.sidebar.wikitext",
            "text": "\\whitespace trim\n<div class=\"tc-sidebar-scrollable\" style=\"overflow: auto;\">\n<div class=\"tc-sidebar-header\">\n<h1 class=\"tc-site-title\">\n<$transclude tiddler=\"$:/SiteTitle\"/>\n</h1>\n<div class=\"tc-site-subtitle\">\n<$transclude tiddler=\"$:/SiteSubtitle\"/>\n</div>\n<h2>\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$list filter={{$:/DefaultTiddlers}}>\n<div class=\"tc-menu-list-subitem\">\n<$link><$text text=<<currentTiddler>>/></$link>\n</div>\n</$list>\n</div>\n<!-- Currently disabled the recent list as it is unweildy when the responsive narrow view kicks in\n<h2>\n{{$:/language/SideBar/Recent/Caption}}\n</h2>\n<div class=\"tc-sidebar-lists\">\n<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n</div>\n</div>\n</div>\n-->\n"
        },
        "$:/core/templates/server/static.tiddler.html": {
            "title": "$:/core/templates/server/static.tiddler.html",
            "text": "\\whitespace trim\n\\define tv-wikilink-template() $uri_encoded$\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content={{$:/core/templates/version}} />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"%24%3A%2Fcore%2Ftemplates%2Fstatic.template.css\">\n<title><$view field=\"caption\" format=\"plainwikified\"><$view field=\"title\"/></$view>: <$view tiddler=\"$:/core/wiki/title\" format=\"plainwikified\"/></title>\n</head>\n<body class=\"tc-body\">\n<$transclude tiddler=\"$:/core/templates/server/static.sidebar.wikitext\" mode=\"inline\"/>\n<section class=\"tc-story-river\">\n<div class=\"tc-tiddler-frame\">\n<$transclude tiddler=\"$:/core/templates/server/static.tiddler.wikitext\" mode=\"inline\"/>\n</div>\n</section>\n</body>\n</html>"
        },
        "$:/core/templates/server/static.tiddler.wikitext": {
            "title": "$:/core/templates/server/static.tiddler.wikitext",
            "text": "\\whitespace trim\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<h2><$text text=<<currentTiddler>>/></h2>\n</div>\n</div>\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}}>\n<$view field=\"modifier\"/>\n</$link> <$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n<div class=\"tc-tags-wrapper\">\n<$list filter=\"[all[current]tags[]sort[title]]\">\n<a href={{{ [<currentTiddler>encodeuricomponent[]] }}}>\n<$macrocall $name=\"tag-pill\" tag=<<currentTiddler>>/>\n</a>\n</$list>\n</div>\n<div class=\"tc-tiddler-body\">\n<$transclude mode=\"block\"/>\n</div>\n"
        },
        "$:/core/templates/single.tiddler.window": {
            "title": "$:/core/templates/single.tiddler.window",
            "text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"tv-config-toolbar-icons\" value={{$:/config/Toolbar/Icons}}>\n\n<$set name=\"tv-config-toolbar-text\" value={{$:/config/Toolbar/Text}}>\n\n<$set name=\"tv-config-toolbar-class\" value={{$:/config/Toolbar/ButtonClass}}>\n\n<$set name=\"tv-show-missing-links\" value={{$:/config/MissingLinks}}>\n\n<$set name=\"storyviewTitle\" value={{$:/view}}>\n\n<$set name=\"languageTitle\" value={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n\n<$transclude mode=\"block\"/>\n\n</$navigator>\n\n</div>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/templates/split-recipe": {
            "title": "$:/core/templates/split-recipe",
            "text": "<$list filter=\"[!is[system]]\">\ntiddler: <$view field=\"title\" format=\"urlencoded\"/>.tid\n</$list>\n"
        },
        "$:/core/templates/static-tiddler": {
            "title": "$:/core/templates/static-tiddler",
            "text": "<a name=<<currentTiddler>>>\n<$transclude tiddler=\"$:/core/ui/ViewTemplate\"/>\n</a>"
        },
        "$:/core/templates/static.area": {
            "title": "$:/core/templates/static.area",
            "text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n{{{ [all[shadows+tiddlers]tag[$:/tags/RawStaticContent]!has[draft.of]] ||$:/core/templates/raw-static-tiddler}}}\n{{$:/core/templates/static.content||$:/core/templates/html-tiddler}}\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\nThis file contains an encrypted ~TiddlyWiki. Enable ~JavaScript and enter the decryption password when prompted.\n</$reveal>\n<!-- ensure splash screen isn't shown when JS is disabled -->\n`<style>\n.tc-remove-when-wiki-loaded {display: none;}\n</style>`\n"
        },
        "$:/core/templates/static.content": {
            "title": "$:/core/templates/static.content",
            "text": "<!-- For Google, and people without JavaScript-->\nThis [[TiddlyWiki|https://tiddlywiki.com]] contains the following tiddlers:\n\n<ul>\n<$list filter=<<saveTiddlerFilter>>>\n<li><$view field=\"title\" format=\"text\"></$view></li>\n</$list>\n</ul>\n"
        },
        "$:/core/templates/static.template.css": {
            "title": "$:/core/templates/static.template.css",
            "text": "{{$:/boot/boot.css||$:/core/templates/plain-text-tiddler}}\n\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n"
        },
        "$:/core/templates/static.template.html": {
            "title": "$:/core/templates/static.template.html",
            "type": "text/vnd.tiddlywiki-html",
            "text": "\\define tv-wikilink-template() static/$uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\rules only filteredtranscludeinline transcludeinline\n<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"{{$:/core/templates/version}}\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>{{$:/core/wiki/title}}</title>\n<div id=\"styleArea\">\n{{$:/boot/boot.css||$:/core/templates/css-tiddler}}\n</div>\n<style type=\"text/css\">\n{{$:/core/ui/PageStylesheet||$:/core/templates/wikified-tiddler}}\n</style>\n</head>\n<body class=\"tc-body\">\n{{$:/StaticBanner||$:/core/templates/html-tiddler}}\n{{$:/core/ui/PageTemplate||$:/core/templates/html-tiddler}}\n</body>\n</html>\n"
        },
        "$:/core/templates/static.tiddler.html": {
            "title": "$:/core/templates/static.tiddler.html",
            "text": "\\define tv-wikilink-template() $uri_doubleencoded$.html\n\\define tv-config-toolbar-icons() no\n\\define tv-config-toolbar-text() no\n\\define tv-config-toolbar-class() tc-btn-invisible\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n`<!doctype html>\n<html>\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\">\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<link rel=\"stylesheet\" href=\"static.css\">\n<title>`<$view field=\"caption\"><$view field=\"title\"/></$view>: {{$:/core/wiki/title}}`</title>\n</head>\n<body class=\"tc-body\">\n`{{$:/StaticBanner||$:/core/templates/html-tiddler}}`\n<section class=\"tc-story-river\">\n`<$view tiddler=\"$:/core/ui/ViewTemplate\" format=\"htmlwikified\"/>`\n</section>\n</body>\n</html>\n`"
        },
        "$:/core/templates/store.area.template.html": {
            "title": "$:/core/templates/store.area.template.html",
            "text": "<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n`<div id=\"storeArea\" style=\"display:none;\">`\n<$list filter=<<saveTiddlerFilter>> template=\"$:/core/templates/html-div-tiddler\"/>\n<$list filter={{{ [<skinnySaveTiddlerFilter>] }}} template=\"$:/core/templates/html-div-skinny-tiddler\"/>\n`</div>`\n</$reveal>\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n`<!--~~ Encrypted tiddlers ~~-->`\n`<pre id=\"encryptedStoreArea\" type=\"text/plain\" style=\"display:none;\">`\n<$encrypt filter=<<saveTiddlerFilter>>/>\n`</pre>`\n</$reveal>"
        },
        "$:/core/templates/tid-tiddler": {
            "title": "$:/core/templates/tid-tiddler",
            "text": "<!--\n\nThis template is used for saving tiddlers in TiddlyWeb *.tid format\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>`\n`<$view field=\"text\" format=\"text\" />"
        },
        "$:/core/templates/tiddler-metadata": {
            "title": "$:/core/templates/tiddler-metadata",
            "text": "<!--\n\nThis template is used for saving tiddler metadata *.meta files\n\n--><$fields exclude='text bag' template='$name$: $value$\n'></$fields>"
        },
        "$:/core/templates/tiddlywiki5.html": {
            "title": "$:/core/templates/tiddlywiki5.html",
            "text": "<$set name=\"saveTiddlerAndShadowsFilter\" filter=\"[subfilter<saveTiddlerFilter>] [subfilter<saveTiddlerFilter>plugintiddlers[]]\">\n`<!doctype html>\n`{{$:/core/templates/MOTW.html}}`<html lang=\"`<$text text={{{ [{$:/language}get[name]] }}}/>`\">\n<head>\n<meta http-equiv=\"Content-Type\" content=\"text/html;charset=utf-8\" />\n<!--~~ Raw markup for the top of the head section ~~-->\n`{{{ [<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopHead]] ||$:/core/templates/raw-static-tiddler}}}`\n<meta http-equiv=\"X-UA-Compatible\" content=\"IE=Edge\"/>\n<meta name=\"application-name\" content=\"TiddlyWiki\" />\n<meta name=\"generator\" content=\"TiddlyWiki\" />\n<meta name=\"tiddlywiki-version\" content=\"`{{$:/core/templates/version}}`\" />\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\" />\n<meta name=\"apple-mobile-web-app-capable\" content=\"yes\" />\n<meta name=\"apple-mobile-web-app-status-bar-style\" content=\"black-translucent\" />\n<meta name=\"mobile-web-app-capable\" content=\"yes\"/>\n<meta name=\"format-detection\" content=\"telephone=no\" />\n<meta name=\"copyright\" content=\"`{{$:/core/copyright.txt}}`\" />\n<link id=\"faviconLink\" rel=\"shortcut icon\" href=\"favicon.ico\">\n<title>`{{$:/core/wiki/title}}`</title>\n<!--~~ This is a Tiddlywiki file. The points of interest in the file are marked with this pattern ~~-->\n\n<!--~~ Raw markup ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/core/wiki/rawmarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkup]] ||$:/core/templates/plain-text-tiddler}}}\n{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified]] ||$:/core/templates/raw-static-tiddler}}}`\n</head>\n<body class=\"tc-body\">\n<!--~~ Raw markup for the top of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/TopBody]] ||$:/core/templates/raw-static-tiddler}}}`\n<!--~~ Static styles ~~-->\n<div id=\"styleArea\">\n`{{$:/boot/boot.css||$:/core/templates/css-tiddler}}`\n</div>\n<!--~~ Static content for Google and browsers without JavaScript ~~-->\n<noscript>\n<div id=\"splashArea\">\n`{{$:/core/templates/static.area}}`\n</div>\n</noscript>\n<!--~~ Ordinary tiddlers ~~-->\n`{{$:/core/templates/store.area.template.html}}`\n<!--~~ Library modules ~~-->\n<div id=\"libraryModules\" style=\"display:none;\">\n`{{{ [is[system]type[application/javascript]library[yes]] ||$:/core/templates/javascript-tiddler}}}`\n</div>\n<!--~~ Boot kernel prologue ~~-->\n<div id=\"bootKernelPrefix\" style=\"display:none;\">\n`{{ $:/boot/bootprefix.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Boot kernel ~~-->\n<div id=\"bootKernel\" style=\"display:none;\">\n`{{ $:/boot/boot.js ||$:/core/templates/javascript-tiddler}}`\n</div>\n<!--~~ Raw markup for the bottom of the body section ~~-->\n`{{{ [enlist<saveTiddlerAndShadowsFilter>tag[$:/tags/RawMarkupWikified/BottomBody]] ||$:/core/templates/raw-static-tiddler}}}`\n</body>\n</html>`\n"
        },
        "$:/core/templates/version": {
            "title": "$:/core/templates/version",
            "text": "<<version>>"
        },
        "$:/core/templates/wikified-tiddler": {
            "title": "$:/core/templates/wikified-tiddler",
            "text": "<$transclude />"
        },
        "$:/core/ui/AboveStory/tw2-plugin-check": {
            "title": "$:/core/ui/AboveStory/tw2-plugin-check",
            "tags": "$:/tags/AboveStory",
            "text": "\\define lingo-base() $:/language/AboveStory/ClassicPlugin/\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]limit[1]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n<ul>\n\n<$list filter=\"[all[system+tiddlers]tag[systemConfig]]\">\n\n<li>\n\n<$link><$view field=\"title\"/></$link>\n\n</li>\n\n</$list>\n\n</ul>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/Actions/new-image": {
            "title": "$:/core/ui/Actions/new-image",
            "tags": "$:/tags/Actions",
            "description": "create a new image tiddler",
            "text": "\\define get-type()\nimage/$(imageType)$\n\\end\n<$vars imageType={{$:/config/NewImageType}}>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=<<get-type>> tags={{$:/config/NewTiddler/Tags!!tags}}/>\n</$vars>\n"
        },
        "$:/core/ui/Actions/new-journal": {
            "title": "$:/core/ui/Actions/new-journal",
            "tags": "$:/tags/Actions",
            "description": "create a new journal tiddler",
            "text": "<$vars journalTitleTemplate={{$:/config/NewJournal/Title}} journalTags={{$:/config/NewJournal/Tags!!tags}} journalText={{$:/config/NewJournal/Text}}>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$reveal type=\"nomatch\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalTags>> text={{{ [<journalTitle>get[]] }}}/>\n</$reveal>\n<$reveal type=\"match\" state=<<journalTitle>> text=\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalTags>> text=<<journalText>>/>\n</$reveal>\n</$wikify>\n</$vars>\n"
        },
        "$:/core/ui/Actions/new-tiddler": {
            "title": "$:/core/ui/Actions/new-tiddler",
            "tags": "$:/tags/Actions",
            "description": "create a new empty tiddler",
            "text": "<$action-sendmessage $message=\"tm-new-tiddler\" tags={{$:/config/NewTiddler/Tags!!tags}}/>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter": {
            "title": "$:/core/ui/AdvancedSearch/Filter",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Filter/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n<<lingo Filter/Hint>>\n\n<div class=\"tc-search tc-advanced-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch/FilterButton]!has[draft.of]]\"><$transclude/></$list>\n</div>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/advancedsearch}} template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$set>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/clear",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/delete",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button popup=<<qualify \"$:/state/filterDeleteDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/delete-button}}\n</$button>\n</$reveal>\n\n<$reveal state=<<qualify \"$:/state/filterDeleteDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<div class=\"tc-dropdown-item-plain\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/advancedsearch}}/>\"\"\">\nAre you sure you wish to delete <<resultCount>> tiddler(s)?\n</$set>\n</div>\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn\">\n<$action-deletetiddler $filter={{$:/temp/advancedsearch}}/>\nDelete these tiddlers\n</$button>\n</div>\n</div>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</span>\n\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</div>\n</$linkcatcher>\n</$set>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export": {
            "title": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/export",
            "tags": "$:/tags/AdvancedSearch/FilterButton",
            "text": "<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$macrocall $name=\"exportButton\" exportFilter={{$:/temp/advancedsearch}} lingoBase=\"$:/language/Buttons/ExportTiddlers/\"/>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Shadows": {
            "title": "$:/core/ui/AdvancedSearch/Shadows",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Shadows/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Shadows/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[all[shadows]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo Shadows/Matches>>\n\n<$list filter=\"[all[shadows]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/Standard": {
            "title": "$:/core/ui/AdvancedSearch/Standard",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/Standard/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo Standard/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$set name=\"searchTiddler\" value=\"$:/temp/advancedsearch\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude/>\n</$list>\n\"\"\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n</$list>\n</$set>\n</$list>\n</$reveal>\n"
        },
        "$:/core/ui/AdvancedSearch/System": {
            "title": "$:/core/ui/AdvancedSearch/System",
            "tags": "$:/tags/AdvancedSearch",
            "caption": "{{$:/language/Search/System/Caption}}",
            "text": "\\define lingo-base() $:/language/Search/\n<$linkcatcher to=\"$:/temp/advancedsearch\">\n\n<<lingo System/Hint>>\n\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/advancedsearch\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}}/>\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"nomatch\" text=\"\">\n\n<$list filter=\"[{$:/temp/advancedsearch}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[is[system]search{$:/temp/advancedsearch}] -[[$:/temp/advancedsearch]]\"/>\"\"\">\n\n<div class=\"tc-search-results\">\n\n<<lingo System/Matches>>\n\n<$list filter=\"[is[system]search{$:/temp/advancedsearch}sort[title]limit[250]] -[[$:/temp/advancedsearch]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n</div>\n\n</$set>\n\n</$list>\n\n</$reveal>\n\n<$reveal state=\"$:/temp/advancedsearch\" type=\"match\" text=\"\">\n\n</$reveal>\n"
        },
        "$:/AdvancedSearch": {
            "title": "$:/AdvancedSearch",
            "icon": "$:/core/images/advanced-search-button",
            "color": "#bbb",
            "text": "<div class=\"tc-advanced-search\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/AdvancedSearch]!has[draft.of]]\" \"$:/core/ui/AdvancedSearch/System\">>\n</div>\n"
        },
        "$:/core/ui/AlertTemplate": {
            "title": "$:/core/ui/AlertTemplate",
            "text": "<div class=\"tc-alert\">\n<div class=\"tc-alert-toolbar\">\n<$button class=\"tc-btn-invisible\"><$action-deletetiddler $tiddler=<<currentTiddler>>/>{{$:/core/images/cancel-button}}</$button>\n</div>\n<div class=\"tc-alert-subtitle\">\n<$wikify name=\"format\" text=<<lingo Tiddler/DateFormat>>>\n<$view field=\"component\"/> - <$view field=\"modified\" format=\"date\" template=<<format>>/> <$reveal type=\"nomatch\" state=\"!!count\" text=\"\"><span class=\"tc-alert-highlight\">({{$:/language/Count}}: <$view field=\"count\"/>)</span></$reveal>\n</$wikify>\n</div>\n<div class=\"tc-alert-body\">\n\n<$transclude/>\n\n</div>\n</div>\n"
        },
        "$:/core/ui/BinaryWarning": {
            "title": "$:/core/ui/BinaryWarning",
            "text": "\\define lingo-base() $:/language/BinaryWarning/\n<<lingo Prompt>>\n"
        },
        "$:/core/ui/Components/plugin-info": {
            "title": "$:/core/ui/Components/plugin-info",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define popup-state-macro()\n$(qualified-state)$-$(currentTiddler)$\n\\end\n\n\\define tabs-state-macro()\n$(popup-state)$-$(pluginInfoType)$\n\\end\n\n\\define plugin-icon-title()\n$(currentTiddler)$/icon\n\\end\n\n\\define plugin-disable-title()\n$:/config/Plugins/Disabled/$(currentTiddler)$\n\\end\n\n\\define plugin-table-body(type,disabledMessage,default-popup-state)\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\" default=\"\"\"$default-popup-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<plugin-icon-title>>>\n<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\n</$transclude>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1>\n''<$text text={{{ [<currentTiddler>get[name]] ~[<currentTiddler>split[/]last[1]] }}}/>'': <$view field=\"description\"><$view field=\"title\"/></$view> $disabledMessage$\n</h1>\n<h2>\n<$view field=\"title\"/>\n</h2>\n<h2>\n<div><em><$view field=\"version\"/></em></div>\n</h2>\n</div>\n\\end\n\n\\define plugin-info(type,default-popup-state)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$link to={{!!title}} class=\"tc-plugin-info tc-plugin-info-disabled\">\n<<plugin-table-body type:\"$type$\" default-popup-state:\"\"\"$default-popup-state$\"\"\" disabledMessage:\"<$macrocall $name='lingo' title='Disabled/Status'/>\">>\n</$link>\n</$reveal>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>> default=\"\"\"$default-popup-state$\"\"\">\n<div class=\"tc-plugin-info-dropdown\">\n<div class=\"tc-plugin-info-dropdown-body\">\n<$list filter=\"[all[current]] -[[$:/core]]\">\n<div style=\"float:right;\">\n<$reveal type=\"nomatch\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"yes\" tooltip={{$:/language/ControlPanel/Plugins/Disable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Disable/Caption}}>\n<<lingo Disable/Caption>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<plugin-disable-title>> text=\"yes\">\n<$button set=<<plugin-disable-title>> setTo=\"no\" tooltip={{$:/language/ControlPanel/Plugins/Enable/Hint}} aria-label={{$:/language/ControlPanel/Plugins/Enable/Caption}}>\n<<lingo Enable/Caption>>\n</$button>\n</$reveal>\n</div>\n</$list>\n<$set name=\"tabsList\" filter=\"[<currentTiddler>list[]] contents\">\n<$macrocall $name=\"tabs\" state=<<tabs-state-macro>> tabsList=<<tabsList>> default={{{ [enlist<tabsList>] }}} template=\"$:/core/ui/PluginInfo\"/>\n</$set>\n</div>\n</div>\n</$reveal>\n</$set>\n\\end\n\n<$macrocall $name=\"plugin-info\" type=<<plugin-type>> default-popup-state=<<default-popup-state>>/>\n"
        },
        "$:/core/ui/Components/tag-link": {
            "title": "$:/core/ui/Components/tag-link",
            "text": "<$link>\n<$set name=\"backgroundColor\" value={{!!color}}>\n<span style=<<tag-styles>> class=\"tc-tag-label\">\n<$view field=\"title\" format=\"text\"/>\n</span>\n</$set>\n</$link>"
        },
        "$:/core/ui/ControlPanel/Advanced": {
            "title": "$:/core/ui/ControlPanel/Advanced",
            "tags": "$:/tags/ControlPanel/Info",
            "caption": "{{$:/language/ControlPanel/Advanced/Caption}}",
            "text": "{{$:/language/ControlPanel/Advanced/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Advanced]!has[draft.of]]\" \"$:/core/ui/ControlPanel/TiddlerFields\">>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Appearance": {
            "title": "$:/core/ui/ControlPanel/Appearance",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Appearance/Caption}}",
            "text": "{{$:/language/ControlPanel/Appearance/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Appearance]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Theme\">>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Basics": {
            "title": "$:/core/ui/ControlPanel/Basics",
            "tags": "$:/tags/ControlPanel/Info",
            "caption": "{{$:/language/ControlPanel/Basics/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n\n\\define show-filter-count(filter)\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" $value=\"\"\"$filter$\"\"\"/>\n<$action-setfield $tiddler=\"$:/state/tab--1498284803\" $value=\"$:/core/ui/AdvancedSearch/Filter\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n''<$count filter=\"\"\"$filter$\"\"\"/>''\n{{$:/core/images/advanced-search-button}}\n</$button>\n\\end\n\n|<<lingo Version/Prompt>> |''<<version>>'' |\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/status/UserName\"><<lingo Username/Prompt>></$link> |<$edit-text tiddler=\"$:/status/UserName\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/AnimationDuration\"><<lingo AnimDuration/Prompt>></$link> |<$edit-text tiddler=\"$:/config/AnimationDuration\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\" class=\"tc-edit-texteditor\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n|<$link to=\"$:/language/DefaultNewTiddlerTitle\"><<lingo NewTiddler/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/language/DefaultNewTiddlerTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Title\"><<lingo NewJournal/Title/Prompt>></$link> |<$edit-text tiddler=\"$:/config/NewJournal/Title\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/config/NewJournal/Text\"><<lingo NewJournal/Text/Prompt>></$link> |<$edit tiddler=\"$:/config/NewJournal/Text\" tag=\"textarea\" class=\"tc-edit-texteditor\" default=\"\"/> |\n|<$link to=\"$:/config/NewTiddler/Tags\"><<lingo NewTiddler/Tags/Prompt>></$link> |<$list filter=\"[[$:/config/NewTiddler/Tags]]\" template=\"$:/core/ui/EditTemplate/tags\"/> |\n|<$link to=\"$:/config/NewJournal/Tags\"><<lingo NewJournal/Tags/Prompt>></$link> |<$list filter=\"[[$:/config/NewJournal/Tags]]\" template=\"$:/core/ui/EditTemplate/tags\"/> |\n|<$link to=\"$:/config/AutoFocus\"><<lingo AutoFocus/Prompt>></$link> |{{$:/snippets/minifocusswitcher}} |\n|<<lingo Language/Prompt>> |{{$:/snippets/minilanguageswitcher}} |\n|<<lingo Tiddlers/Prompt>> |<<show-filter-count \"[!is[system]sort[title]]\">> |\n|<<lingo Tags/Prompt>> |<<show-filter-count \"[tags[]sort[title]]\">> |\n|<<lingo SystemTiddlers/Prompt>> |<<show-filter-count \"[is[system]sort[title]]\">> |\n|<<lingo ShadowTiddlers/Prompt>> |<<show-filter-count \"[all[shadows]sort[title]]\">> |\n|<<lingo OverriddenShadowTiddlers/Prompt>> |<<show-filter-count \"[is[tiddler]is[shadow]sort[title]]\">> |\n"
        },
        "$:/core/ui/ControlPanel/EditorTypes": {
            "title": "$:/core/ui/ControlPanel/EditorTypes",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/EditorTypes/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/EditorTypes/\n\n<<lingo Hint>>\n\n<table>\n<tbody>\n<tr>\n<th><<lingo Type/Caption>></th>\n<th><<lingo Editor/Caption>></th>\n</tr>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/config/EditorTypeMappings/]sort[title]]\">\n<tr>\n<td>\n<$link>\n<$list filter=\"[all[current]removeprefix[$:/config/EditorTypeMappings/]]\">\n<$text text={{!!title}}/>\n</$list>\n</$link>\n</td>\n<td>\n<$view field=\"text\"/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ControlPanel/Info": {
            "title": "$:/core/ui/ControlPanel/Info",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Info/Caption}}",
            "text": "{{$:/language/ControlPanel/Info/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Info]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Basics\">>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/KeyboardShortcuts": {
            "title": "$:/core/ui/ControlPanel/KeyboardShortcuts",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/KeyboardShortcuts/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/KeyboardShortcuts/\n\n\\define new-shortcut(title)\n<div class=\"tc-dropdown-item-plain\">\n<$edit-shortcut tiddler=\"$title$\" placeholder={{$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt}} focus=\"true\" style=\"width:auto;\"/> <$button>\n<<lingo Add/Caption>>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"[{$title$}]\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"$title$\"\n/>\n</$button>\n</div>\n\\end\n\n\\define shortcut-list-item(caption)\n<td>\n</td>\n<td style=\"text-align:right;font-size:0.7em;\">\n<<lingo Platform/$caption$>>\n</td>\n<td>\n<div style=\"position:relative;\">\n<$button popup=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> class=\"tc-btn-invisible\">\n{{$:/core/images/edit-button}}\n</$button>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutTitle)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\n<$reveal state=<<qualify \"$:/state/dropdown/$(shortcutTitle)$\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-block-dropdown-wrapper\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown tc-popup-keep\">\n<$list filter=\"[list[$(shortcutTitle)$!!text]sort[title]]\" variable=\"shortcut\" emptyMessage=\"\"\"\n<div class=\"tc-dropdown-item-plain\">\n//<<lingo NoShortcuts/Caption>>//\n</div>\n\"\"\">\n<div class=\"tc-dropdown-item-plain\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint}}>\n<$action-listops\n\t$tiddler=\"$(shortcutTitle)$\"\n\t$field=\"text\"\n\t$subfilter=\"+[remove<shortcut>]\"\n/>\n<small>{{$:/core/images/close-button}}</small>\n</$button>\n<kbd>\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts=<<shortcut>>/>\n</kbd>\n</div>\n</$list>\n<hr/>\n<$macrocall $name=\"new-shortcut\" title=<<qualify \"$:/state/new-shortcut/$(shortcutTitle)$\">>/>\n</div>\n</div>\n</$reveal>\n</div>\n</td>\n\\end\n\n\\define shortcut-list(caption,prefix)\n<tr>\n<$list filter=\"[[$prefix$$(shortcutName)$]]\" variable=\"shortcutTitle\">\n<<shortcut-list-item \"$caption$\">>\n</$list>\n</tr>\n\\end\n\n\\define shortcut-editor()\n<<shortcut-list \"All\" \"$:/config/shortcuts/\">>\n<<shortcut-list \"Mac\" \"$:/config/shortcuts-mac/\">>\n<<shortcut-list \"NonMac\" \"$:/config/shortcuts-not-mac/\">>\n<<shortcut-list \"Linux\" \"$:/config/shortcuts-linux/\">>\n<<shortcut-list \"NonLinux\" \"$:/config/shortcuts-not-linux/\">>\n<<shortcut-list \"Windows\" \"$:/config/shortcuts-windows/\">>\n<<shortcut-list \"NonWindows\" \"$:/config/shortcuts-not-windows/\">>\n\\end\n\n\\define shortcut-preview()\n<$macrocall $name=\"displayshortcuts\" $output=\"text/html\" shortcuts={{$(shortcutPrefix)$$(shortcutName)$}} prefix=\"<kbd>\" separator=\"</kbd> <kbd>\" suffix=\"</kbd>\"/>\n\\end\n\n\\define shortcut-item-inner()\n<tr>\n<td>\n<$reveal type=\"nomatch\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"open\"\n/>\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<dropdownStateTitle>> text=\"open\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield\n\t$tiddler=<<dropdownStateTitle>>\n\t$value=\"close\"\n/>\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n''<$text text=<<shortcutName>>/>''\n</td>\n<td>\n<$transclude tiddler=\"$:/config/ShortcutInfo/$(shortcutName)$\"/>\n</td>\n<td>\n<$list filter=\"$:/config/shortcuts/ $:/config/shortcuts-mac/ $:/config/shortcuts-not-mac/ $:/config/shortcuts-linux/ $:/config/shortcuts-not-linux/ $:/config/shortcuts-windows/ $:/config/shortcuts-not-windows/\" variable=\"shortcutPrefix\">\n<<shortcut-preview>>\n</$list>\n</td>\n</tr>\n<$set name=\"dropdownState\" value={{$(dropdownStateTitle)$}}>\n<$list filter=\"[<dropdownState>match[open]]\" variable=\"listItem\">\n<<shortcut-editor>>\n</$list>\n</$set>\n\\end\n\n\\define shortcut-item()\n<$set name=\"dropdownStateTitle\" value=<<qualify \"$:/state/dropdown/keyboardshortcut/$(shortcutName)$\">>>\n<<shortcut-item-inner>>\n</$set>\n\\end\n\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]removeprefix[$:/config/ShortcutInfo/]]\" variable=\"shortcutName\">\n<<shortcut-item>>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ControlPanel/LoadedModules": {
            "title": "$:/core/ui/ControlPanel/LoadedModules",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/LoadedModules/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n<<lingo LoadedModules/Hint>>\n\n{{$:/snippets/modules}}\n"
        },
        "$:/core/ui/ControlPanel/Modals/AddPlugins": {
            "title": "$:/core/ui/ControlPanel/Modals/AddPlugins",
            "subtitle": "{{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}}",
            "text": "\\define install-plugin-actions()\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url={{!!url}} title={{$(assetInfo)$!!original-title}}/>\n<$set name=\"url\" value={{!!url}}>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[title]]\" variable=\"dependency\">\n<$action-sendmessage $message=\"tm-load-plugin-from-library\" url=<<url>> title=<<dependency>>/>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define install-plugin-button()\n<div>\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$set name=\"reinstall-type\" value={{{ [<libraryVersion>compare:version:eq<installedVersion>then[tc-reinstall]] [<libraryVersion>compare:version:gt<installedVersion>then[tc-reinstall-upgrade]] [<libraryVersion>compare:version:lt<installedVersion>then[tc-reinstall-downgrade]] }}}>\n<$button actions=<<install-plugin-actions>> class={{{ [<assetInfo>get[original-title]has[version]then<reinstall-type>] tc-btn-invisible tc-install-plugin +[join[ ]] }}}>\n{{$:/core/images/download-button}}\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Install/Caption}}\">\n<$list filter=\"[<libraryVersion>compare:version:gt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[<libraryVersion>compare:version:lt<installedVersion>]\" variable=\"ignore\" emptyMessage=\"{{$:/language/ControlPanel/Plugins/Reinstall/Caption}}\">\n{{$:/language/ControlPanel/Plugins/Downgrade/Caption}}\n</$list>\n\"\"\">\n{{$:/language/ControlPanel/Plugins/Update/Caption}}\n</$list>\n</$list>\n</$button>\n<div>\n</div>\n<$reveal stateTitle=<<assetInfo>> stateField=\"requires-reload\" type=\"match\" text=\"yes\">{{$:/language/ControlPanel/Plugins/PluginWillRequireReload}}</$reveal>\n</$set>\n</$set>\n</$set>\n</div>\n\\end\n\n\\define popup-state-macro()\n$:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$\n\\end\n\n\\define display-plugin-info(type)\n<$set name=\"popup-state\" value=<<popup-state-macro>>>\n<div class=\"tc-plugin-info\">\n<div class=\"tc-plugin-info-chunk tc-plugin-info-toggle\">\n<$reveal type=\"nomatch\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"yes\">\n{{$:/core/images/chevron-right}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<popup-state>> text=\"yes\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<popup-state>> setTo=\"no\">\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-icon\">\n<$list filter=\"[<assetInfo>has[icon]]\" emptyMessage=\"\"\"<$transclude tiddler=\"$:/core/images/plugin-generic-$type$\"/>\"\"\">\n<img src={{$(assetInfo)$!!icon}}/>\n</$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-description\">\n<h1><strong><$text text={{{ [<assetInfo>get[name]] ~[<assetInfo>get[original-title]split[/]last[1]] }}}/></strong>: <$view tiddler=<<assetInfo>> field=\"description\"/></h1>\n<h2><$view tiddler=<<assetInfo>> field=\"original-title\"/></h2>\n<div><em><$view tiddler=<<assetInfo>> field=\"version\"/></em></div>\n<$list filter=\"[<assetInfo>get[original-title]get[version]]\" variable=\"installedVersion\"><div><em>{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}</em></div></$list>\n</div>\n<div class=\"tc-plugin-info-chunk tc-plugin-info-buttons\">\n<<install-plugin-button>>\n</div>\n</div>\n<$set name=\"original-title\" value={{{ [<assetInfo>get[original-title]] }}}>\n<$reveal type=\"match\" text=\"yes\" state=<<popup-state>>>\n<div class=\"tc-plugin-info-dropdown\">\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]] ~[<assetInfo>get[original-title]!is[tiddler]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-dropdown-message\">\n<$list filter=\"[<assetInfo>get[original-title]!is[tiddler]]\">\n{{$:/language/ControlPanel/Plugins/NotInstalled/Hint}}\n</$list>\n<$set name=\"currentTiddler\" value=<<assetInfo>>>\n<$list filter=\"[enlist{!!dependents}] [<currentTiddler>get[parent-plugin]] +[limit[1]]\" variable=\"ignore\">\n<div>\n{{$:/language/ControlPanel/Plugins/AlsoRequires}}\n<$list filter=\"[enlist{!!dependents}] [{!!parent-plugin}] +[sort[title]]\" variable=\"dependency\">\n<$text text=<<dependency>>/>\n</$list>\n</div>\n</$list>\n</$set>\n</div>\n</$list>\n<div class=\"tc-plugin-info-dropdown-body\">\n<$transclude tiddler=<<assetInfo>> field=\"readme\" mode=\"block\"/>\n</div>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<div class=\"tc-plugin-info-sub-plugins\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>sort[title]]\" variable=\"assetInfo\">\n<<display-plugin-info \"$type$\">>\n</$list>\n</div>\n</$list>\n</div>\n</$reveal>\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>limit[1]]\" variable=\"ignore\">\n<$reveal type=\"nomatch\" text=\"yes\" state=<<popup-state>> tag=\"div\" class=\"tc-plugin-info-sub-plugin-indicator\">\n<$wikify name=\"count\" text=\"\"\"<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]has[parent-plugin]parent-plugin<original-title>]\"/>\"\"\">\n<$button class=\"tc-btn-invisible\" set=<<popup-state>> setTo=\"yes\">\n{{$:/language/ControlPanel/Plugins/SubPluginPrompt}}\n</$button>\n</$wikify>\n</$reveal>\n</$list>\n</$set>\n</$set>\n\\end\n\n\\define load-plugin-library-button()\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-load-plugin-library\" url={{!!url}} infoTitlePrefix=\"$:/temp/RemoteAssetInfo/\"/>\n{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Plugins/OpenPluginLibrary}}\n</$button>\n\\end\n\n\\define display-server-assets(type)\n{{$:/language/Search/Search}}: <$edit-text tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" default=\"\" type=\"search\" tag=\"input\"/>\n<$reveal state=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"\"\"$:/temp/RemoteAssetSearch/$(currentTiddler)$\"\"\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n<div class=\"tc-plugin-library-listing\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search:author,description,original-title,readme,title{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[title]]\" variable=\"assetInfo\">\n<$list filter=\"[[$:/temp/RemoteAssetSearch/$(currentTiddler)$]has[text]] ~[<assetInfo>!has[parent-plugin]]\" variable=\"ignore\"><!-- Hide sub-plugins if we're not searching -->\n<<display-plugin-info \"$type$\">>\n</$list>\n</$list>\n</div>\n\\end\n\n\\define display-server-connection()\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/ServerConnection]suffix{!!url}]\" variable=\"connectionTiddler\" emptyMessage=<<load-plugin-library-button>>>\n\n<$set name=\"transclusion\" value=<<connectionTiddler>>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Add/Updates]] [[$:/core/ui/ControlPanel/Plugins/Add/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Add/Themes]] [[$:/core/ui/ControlPanel/Plugins/Add/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Add/Plugins\">>\n\n</$set>\n\n</$list>\n\\end\n\n\\define close-library-button()\n<$reveal type='nomatch' state='$:/temp/ServerConnection/$(PluginLibraryURL)$' text=''>\n<$button class='tc-btn-big-green'>\n<$action-sendmessage $message=\"tm-unload-plugin-library\" url={{!!url}}/>\n{{$:/core/images/chevron-left}} {{$:/language/ControlPanel/Plugins/ClosePluginLibrary}}\n<$action-deletetiddler $filter=\"[prefix[$:/temp/ServerConnection/$(PluginLibraryURL)$]][prefix[$:/temp/RemoteAssetInfo/$(PluginLibraryURL)$]]\"/>\n</$button>\n</$reveal>\n\\end\n\n\\define plugin-library-listing()\n<div class=\"tc-tab-set\">\n<$set name=\"defaultTab\" value={{{ [all[tiddlers+shadows]tag[$:/tags/PluginLibrary]] }}}>\n<div class=\"tc-tab-buttons\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$button set=<<qualify \"$:/state/addplugins/tab\">> setTo=<<currentTiddler>> default=<<defaultTab>> selectedClass=\"tc-tab-selected\">\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude field=\"caption\"/>\n</$set>\n</$button>\n</$list>\n</div>\n<div class=\"tc-tab-divider\"/>\n<div class=\"tc-tab-content\">\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/PluginLibrary]]\">\n<$reveal type=\"match\" state=<<qualify \"$:/state/addplugins/tab\">> text=<<currentTiddler>> default=<<defaultTab>>>\n<h2><$link><$transclude field=\"caption\"><$view field=\"title\"/></$transclude></$link></h2>\n//<$view field=\"url\"/>//\n<$transclude mode=\"block\"/>\n<$set name=PluginLibraryURL value={{!!url}}>\n<<close-library-button>>\n</$set>\n<<display-server-connection>>\n</$reveal>\n</$list>\n</div>\n</$set>\n</div>\n\\end\n\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<div>\n<<plugin-library-listing>>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Palette": {
            "title": "$:/core/ui/ControlPanel/Palette",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Palette/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Palette/\n\n{{$:/snippets/paletteswitcher}}\n\n<$reveal type=\"nomatch\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"yes\"><<lingo ShowEditor/Caption>></$button>\n\n</$reveal>\n\n<$reveal type=\"match\" state=\"$:/state/ShowPaletteEditor\" text=\"yes\">\n\n<$button set=\"$:/state/ShowPaletteEditor\" setTo=\"no\"><<lingo HideEditor/Caption>></$button>\n{{$:/PaletteManager}}\n\n</$reveal>\n\n"
        },
        "$:/core/ui/ControlPanel/Parsing": {
            "title": "$:/core/ui/ControlPanel/Parsing",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/Parsing/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Parsing/\n\n\\define toggle(Type)\n<$checkbox\ntiddler=\"\"\"$:/config/WikiParserRules/$Type$/$(rule)$\"\"\"\nfield=\"text\"\nchecked=\"enable\"\nunchecked=\"disable\"\ndefault=\"enable\">\n<<rule>>\n</$checkbox>\n\\end\n\n\\define rules(type,Type)\n<$list filter=\"[wikiparserrules[$type$]]\" variable=\"rule\">\n<dd><<toggle $Type$>></dd>\n</$list>\n\\end\n\n<<lingo Hint>>\n\n<dl>\n<dt><<lingo Pragma/Caption>></dt>\n<<rules pragma Pragma>>\n<dt><<lingo Inline/Caption>></dt>\n<<rules inline Inline>>\n<dt><<lingo Block/Caption>></dt>\n<<rules block Block>>\n</dl>"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Languages": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Languages",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[language]]\"/>)",
            "text": "<<display-server-assets language>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}  (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[plugin]]\"/>)",
            "text": "<<display-server-assets plugin>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Themes": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Themes",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}  (<$count filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[theme]]\"/>)",
            "text": "<<display-server-assets theme>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Add/Updates": {
            "title": "$:/core/ui/ControlPanel/Plugins/Add/Updates",
            "caption": "<$importvariables filter=\"$:/core/ui/ControlPanel/Plugins/Add/Updates\">{{$:/language/ControlPanel/Plugins/Updates/Caption}} (<<update-count>>)</$importvariables>",
            "text": "\\define each-updateable-plugin(body)\n<$list filter=\"[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}sort[title]]\" variable=\"assetInfo\">\n<$set name=\"libraryVersion\" value={{{ [<assetInfo>get[version]] }}}>\n<$list filter=\"[<assetInfo>get[original-title]has[version]!version<libraryVersion>]\" variable=\"ignore\">\n<$set name=\"installedVersion\" value={{{ [<assetInfo>get[original-title]get[version]] }}}>\n<$list filter=\"[<installedversion>!match<libraryVersion>]\" variable=\"ignore\">\n$body$\n</$list>\n</$set>\n</$list>\n</$set>\n</$list>\n\\end\n\n\\define update-all-actions()\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<<install-plugin-actions>>\n\"\"\"/>\n\\end\n\n\\define update-count()\n<$wikify name=\"count-filter\" text=<<each-updateable-plugin \"&#91;&#91;<$text text=<<assetInfo>>/>]]\">>><$count filter=<<count-filter>>/></$wikify>\n\\end\n\n<$button actions=<<update-all-actions>> class=\"tc-btn-invisible tc-install-plugin tc-reinstall-upgrade\">\n{{$:/core/images/download-button}} {{||$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption}}\n</$button>\n\n<div class=\"tc-plugin-library-listing\">\n<$macrocall $name=\"each-updateable-plugin\" body=\"\"\"\n<$macrocall $name=\"display-plugin-info\" type={{{ [<assetInfo>get[original-plugin-type]] }}}/>\n\"\"\"/>\n</div>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/AddPlugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/AddPlugins",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n<$button message=\"tm-modal\" param=\"$:/core/ui/ControlPanel/Modals/AddPlugins\" tooltip={{$:/language/ControlPanel/Plugins/Add/Hint}} class=\"tc-btn-big-green tc-primary-btn\">\n{{$:/core/images/download-button}} <<lingo Add/Caption>>\n</$button>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Languages": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Languages",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[language]]\"/>)",
            "text": "<<plugin-table language>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[plugin]]\"/>)",
            "text": "<<plugin-table plugin>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins/Installed/Themes": {
            "title": "$:/core/ui/ControlPanel/Plugins/Installed/Themes",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}} (<$count filter=\"[!has[draft.of]plugin-type[theme]]\"/>)",
            "text": "<<plugin-table theme>>\n"
        },
        "$:/core/ui/ControlPanel/Plugins": {
            "title": "$:/core/ui/ControlPanel/Plugins",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Plugins/\n\n\\define plugin-table(type)\n<$set name=\"plugin-type\" value=\"\"\"$type$\"\"\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n<$list filter=\"[!has[draft.of]plugin-type[$type$]sort[title]]\" emptyMessage=<<lingo \"Empty/Hint\">> template=\"$:/core/ui/Components/plugin-info\"/>\n</$set>\n</$set>\n\\end\n\n{{$:/core/ui/ControlPanel/Plugins/AddPlugins}}\n\n<<lingo Installed/Hint>>\n\n<<tabs \"[[$:/core/ui/ControlPanel/Plugins/Installed/Plugins]] [[$:/core/ui/ControlPanel/Plugins/Installed/Themes]] [[$:/core/ui/ControlPanel/Plugins/Installed/Languages]]\" \"$:/core/ui/ControlPanel/Plugins/Installed/Plugins\">>\n"
        },
        "$:/core/ui/ControlPanel/Saving/DownloadSaver": {
            "title": "$:/core/ui/ControlPanel/Saving/DownloadSaver",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/DownloadSaver/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/DownloadSaver/\n\n<<lingo Hint>>\n\n!! <$link to=\"$:/config/DownloadSaver/AutoSave\"><<lingo AutoSave/Hint>></$link>\n\n<$checkbox tiddler=\"$:/config/DownloadSaver/AutoSave\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <<lingo AutoSave/Description>> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Saving/General": {
            "title": "$:/core/ui/ControlPanel/Saving/General",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/General/Caption}}",
            "list-before": "",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n{{$:/language/ControlPanel/Saving/General/Hint}}\n\n!! <$link to=\"$:/config/AutoSave\"><<lingo AutoSave/Caption>></$link>\n\n<<lingo AutoSave/Hint>>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"yes\"> <<lingo AutoSave/Enabled/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/AutoSave\" value=\"no\"> <<lingo AutoSave/Disabled/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Saving/GitHub": {
            "title": "$:/core/ui/ControlPanel/Saving/GitHub",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/GitService/GitHub/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitHub\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitHub/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitHub/Password>> |<$password name=\"github\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitHub/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitHub/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitHub/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitHub/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitHub/ServerURL\" default=\"https://api.github.com\" tag=\"input\"/> |"
        },
        "$:/core/ui/ControlPanel/Saving/GitLab": {
            "title": "$:/core/ui/ControlPanel/Saving/GitLab",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/GitService/GitLab/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~GitLab\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/GitLab/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo GitLab/Password>> |<$password name=\"gitlab\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/GitLab/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/GitLab/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/GitLab/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/GitLab/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/GitLab/ServerURL\" default=\"https://gitlab.com/api/v4\" tag=\"input\"/> |"
        },
        "$:/core/ui/ControlPanel/Saving/TiddlySpot": {
            "title": "$:/core/ui/ControlPanel/Saving/TiddlySpot",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/TiddlySpot/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/TiddlySpot/\n\n\\define backupURL()\nhttp://$(userName)$.tiddlyspot.com/backup/\n\\end\n\\define backupLink()\n<$reveal type=\"nomatch\" state=\"$:/UploadName\" text=\"\">\n<$set name=\"userName\" value={{$:/UploadName}}>\n<$reveal type=\"match\" state=\"$:/UploadURL\" text=\"\">\n<<backupURL>>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/UploadURL\" text=\"\">\n<$macrocall $name=resolvePath source={{$:/UploadBackupDir}} root={{$:/UploadURL}}>>\n</$reveal>\n</$set>\n</$reveal>\n\\end\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/UploadName\" default=\"\" tag=\"input\"/> |\n|<<lingo Password>> |<$password name=\"upload\"/> |\n|<<lingo Backups>> |<<backupLink>> |\n\n''<<lingo Advanced/Heading>>''\n\n|<<lingo ServerURL>>  |<$edit-text tiddler=\"$:/UploadURL\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/UploadFilename\" default=\"index.html\" tag=\"input\"/> |\n|<<lingo UploadDir>> |<$edit-text tiddler=\"$:/UploadDir\" default=\".\" tag=\"input\"/> |\n|<<lingo BackupDir>> |<$edit-text tiddler=\"$:/UploadBackupDir\" default=\".\" tag=\"input\"/> |\n\n<<lingo TiddlySpot/Hint>>"
        },
        "$:/core/ui/ControlPanel/Saving/Gitea": {
            "title": "$:/core/ui/ControlPanel/Saving/Gitea",
            "tags": "$:/tags/ControlPanel/Saving",
            "caption": "{{$:/language/ControlPanel/Saving/GitService/Gitea/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Saving/GitService/\n\\define service-name() ~Gitea\n\n<<lingo Description>>\n\n|<<lingo UserName>> |<$edit-text tiddler=\"$:/Gitea/Username\" default=\"\" tag=\"input\"/> |\n|<<lingo Gitea/Password>> |<$password name=\"Gitea\"/> |\n|<<lingo Repo>> |<$edit-text tiddler=\"$:/Gitea/Repo\" default=\"\" tag=\"input\"/> |\n|<<lingo Branch>> |<$edit-text tiddler=\"$:/Gitea/Branch\" default=\"master\" tag=\"input\"/> |\n|<<lingo Path>> |<$edit-text tiddler=\"$:/Gitea/Path\" default=\"\" tag=\"input\"/> |\n|<<lingo Filename>> |<$edit-text tiddler=\"$:/Gitea/Filename\" default=\"\" tag=\"input\"/> |\n|<<lingo ServerURL>> |<$edit-text tiddler=\"$:/Gitea/ServerURL\" default=\"https://gitea/api/v1\" tag=\"input\"/> |\n"
        },
        "$:/core/ui/ControlPanel/Saving": {
            "title": "$:/core/ui/ControlPanel/Saving",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Saving/Caption}}",
            "text": "{{$:/language/ControlPanel/Saving/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Saving]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Saving/General\">>\n</div>\n"
        },
        "$:/core/buttonstyles/Borderless": {
            "title": "$:/core/buttonstyles/Borderless",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless}}",
            "text": "tc-btn-invisible"
        },
        "$:/core/buttonstyles/Boxed": {
            "title": "$:/core/buttonstyles/Boxed",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed}}",
            "text": "tc-btn-boxed"
        },
        "$:/core/buttonstyles/Rounded": {
            "title": "$:/core/buttonstyles/Rounded",
            "tags": "$:/tags/ToolbarButtonStyle",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded}}",
            "text": "tc-btn-rounded"
        },
        "$:/core/ui/ControlPanel/Settings/CamelCase": {
            "title": "$:/core/ui/ControlPanel/Settings/CamelCase",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/CamelCase/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/CamelCase/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/WikiParserRules/Inline/wikilink\" field=\"text\" checked=\"enable\" unchecked=\"disable\" default=\"enable\"> <$link to=\"$:/config/WikiParserRules/Inline/wikilink\"><<lingo Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab": {
            "title": "$:/core/ui/ControlPanel/Settings/DefaultMoreSidebarTab",
            "caption": "{{$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption}}",
            "tags": "$:/tags/ControlPanel/Settings",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultMoreSidebarTab/\n\n<$link to=\"$:/config/DefaultMoreSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultMoreSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab": {
            "title": "$:/core/ui/ControlPanel/Settings/DefaultSidebarTab",
            "caption": "{{$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption}}",
            "tags": "$:/tags/ControlPanel/Settings",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/DefaultSidebarTab/\n\n<$link to=\"$:/config/DefaultSidebarTab\"><<lingo Hint>></$link>\n\n<$select tiddler=\"$:/config/DefaultSidebarTab\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\">\n<option value=<<currentTiddler>>><$transclude field=\"caption\"><$text text=<<currentTiddler>>/></$transclude></option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/EditorToolbar": {
            "title": "$:/core/ui/ControlPanel/Settings/EditorToolbar",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/EditorToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/EditorToolbar/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/TextEditor/EnableToolbar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/TextEditor/EnableToolbar\"><<lingo Description>></$link> </$checkbox>\n\n"
        },
        "$:/core/ui/ControlPanel/Settings/InfoPanelMode": {
            "title": "$:/core/ui/ControlPanel/Settings/InfoPanelMode",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/InfoPanelMode/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/InfoPanelMode/\n<$link to=\"$:/config/TiddlerInfo/Mode\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"popup\"> <<lingo Popup/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/TiddlerInfo/Mode\" value=\"sticky\"> <<lingo Sticky/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/LinkToBehaviour": {
            "title": "$:/core/ui/ControlPanel/Settings/LinkToBehaviour",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/LinkToBehaviour/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/LinkToBehaviour/\n\n<$link to=\"$:/config/Navigation/openLinkFromInsideRiver\"><<lingo \"InsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromInsideRiver\">\n  <option value=\"above\"><<lingo \"OpenAbove\">></option>\n  <option value=\"below\"><<lingo \"OpenBelow\">></option>\n  <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n  <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n\n<$link to=\"$:/config/Navigation/openLinkFromOutsideRiver\"><<lingo \"OutsideRiver/Hint\">></$link>\n\n<$select tiddler=\"$:/config/Navigation/openLinkFromOutsideRiver\">\n  <option value=\"top\"><<lingo \"OpenAtTop\">></option>\n  <option value=\"bottom\"><<lingo \"OpenAtBottom\">></option>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/MissingLinks": {
            "title": "$:/core/ui/ControlPanel/Settings/MissingLinks",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/MissingLinks/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/MissingLinks/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/MissingLinks\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/MissingLinks\"><<lingo Description>></$link> </$checkbox>\n\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationAddressBar": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationAddressBar",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationAddressBar/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationAddressBar/\n\n<$link to=\"$:/config/Navigation/UpdateAddressBar\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permaview\"> <<lingo Permaview/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"permalink\"> <<lingo Permalink/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateAddressBar\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationHistory": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationHistory",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationHistory/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationHistory/\n<$link to=\"$:/config/Navigation/UpdateHistory\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Navigation/UpdateHistory\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode": {
            "title": "$:/core/ui/ControlPanel/Settings/NavigationPermalinkviewMode",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/NavigationPermalinkviewMode/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/CopyToClipboard\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/CopyToClipboard\"><<lingo CopyToClipboard/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Navigation/Permalinkview/UpdateAddressBar\"><<lingo UpdateAddressBar/Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation": {
            "title": "$:/core/ui/ControlPanel/Settings/PerformanceInstrumentation",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/PerformanceInstrumentation/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Performance/Instrumentation\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Performance/Instrumentation\"><<lingo Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings/TitleLinks": {
            "title": "$:/core/ui/ControlPanel/Settings/TitleLinks",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/TitleLinks/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/TitleLinks/\n<$link to=\"$:/config/Tiddlers/TitleLinks\"><<lingo Hint>></$link>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"yes\"> <<lingo Yes/Description>> </$radio>\n\n<$radio tiddler=\"$:/config/Tiddlers/TitleLinks\" value=\"no\"> <<lingo No/Description>> </$radio>\n"
        },
        "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle": {
            "title": "$:/core/ui/ControlPanel/Settings/ToolbarButtonStyle",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtonStyle/\n<$link to=\"$:/config/Toolbar/ButtonClass\"><<lingo \"Hint\">></$link>\n\n<$select tiddler=\"$:/config/Toolbar/ButtonClass\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ToolbarButtonStyle]]\">\n<option value={{!!text}}>{{!!caption}}</option>\n</$list>\n</$select>\n"
        },
        "$:/core/ui/ControlPanel/Settings/ToolbarButtons": {
            "title": "$:/core/ui/ControlPanel/Settings/ToolbarButtons",
            "tags": "$:/tags/ControlPanel/Settings",
            "caption": "{{$:/language/ControlPanel/Settings/ToolbarButtons/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/ToolbarButtons/\n<<lingo Hint>>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Icons\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"yes\"> <$link to=\"$:/config/Toolbar/Icons\"><<lingo Icons/Description>></$link> </$checkbox>\n\n<$checkbox tiddler=\"$:/config/Toolbar/Text\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> <$link to=\"$:/config/Toolbar/Text\"><<lingo Text/Description>></$link> </$checkbox>\n"
        },
        "$:/core/ui/ControlPanel/Settings": {
            "title": "$:/core/ui/ControlPanel/Settings",
            "tags": "$:/tags/ControlPanel",
            "caption": "{{$:/language/ControlPanel/Settings/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/Settings/\n\n<<lingo Hint>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Settings]]\">\n\n<div style=\"border-top:1px solid #eee;\">\n\n!! <$link><$transclude field=\"caption\"/></$link>\n\n<$transclude/>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/ControlPanel/StoryView": {
            "title": "$:/core/ui/ControlPanel/StoryView",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/StoryView/Caption}}",
            "text": "{{$:/snippets/viewswitcher}}\n"
        },
        "$:/core/ui/ControlPanel/Stylesheets": {
            "title": "$:/core/ui/ControlPanel/Stylesheets",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/Stylesheets/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo Stylesheets/Hint>>\n\n{{$:/snippets/peek-stylesheets}}\n"
        },
        "$:/core/ui/ControlPanel/Theme": {
            "title": "$:/core/ui/ControlPanel/Theme",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Theme/Caption}}",
            "text": "{{$:/snippets/themeswitcher}}\n"
        },
        "$:/core/ui/ControlPanel/TiddlerFields": {
            "title": "$:/core/ui/ControlPanel/TiddlerFields",
            "tags": "$:/tags/ControlPanel/Advanced",
            "caption": "{{$:/language/ControlPanel/TiddlerFields/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\n<<lingo TiddlerFields/Hint>>\n\n{{$:/snippets/allfields}}"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/EditToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate",
            "text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"><$transclude tiddler={{!!icon}}/></span> <$transclude field=\"caption\"/> -- <i class=\"tc-muted\"><$transclude field=\"description\"/></i>\n</$draggable>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/EditorToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/EditorToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/EditorToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/EditorToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/EditorToolbar/Hint}}\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/EditorToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/EditorItemTemplate\"/>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/ItemTemplate": {
            "title": "$:/core/ui/ControlPanel/Toolbars/ItemTemplate",
            "text": "\\define config-title()\n$(config-base)$$(currentTiddler)$\n\\end\n\n<$draggable tiddler=<<currentTiddler>>>\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <span class=\"tc-icon-wrapper\"> <$transclude field=\"caption\"/> <i class=\"tc-muted\">-- <$transclude field=\"description\"/></i></span>\n</$draggable>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/PageControls": {
            "title": "$:/core/ui/ControlPanel/Toolbars/PageControls",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/PageControls/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/PageControlButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/PageControls/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/PageControls\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars/ViewToolbar": {
            "title": "$:/core/ui/ControlPanel/Toolbars/ViewToolbar",
            "tags": "$:/tags/ControlPanel/Toolbars",
            "caption": "{{$:/language/ControlPanel/Toolbars/ViewToolbar/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\n\\define config-base() $:/config/ViewToolbarButtons/Visibility/\n\n{{$:/language/ControlPanel/Toolbars/ViewToolbar/Hint}}\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$macrocall $name=\"list-tagged-draggable\" tag=\"$:/tags/ViewToolbar\" itemTemplate=\"$:/core/ui/ControlPanel/Toolbars/ItemTemplate\"/>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/ControlPanel/Toolbars": {
            "title": "$:/core/ui/ControlPanel/Toolbars",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ControlPanel/Toolbars/Caption}}",
            "text": "{{$:/language/ControlPanel/Toolbars/Hint}}\n\n<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel/Toolbars]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Toolbars/ViewToolbar\" \"$:/state/tabs/controlpanel/toolbars\" \"tc-vertical\">>\n</div>\n"
        },
        "$:/ControlPanel": {
            "title": "$:/ControlPanel",
            "icon": "$:/core/images/options-button",
            "color": "#bbb",
            "text": "<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/ControlPanel]!has[draft.of]]\" \"$:/core/ui/ControlPanel/Info\">>\n</div>\n"
        },
        "$:/core/ui/DefaultSearchResultList": {
            "title": "$:/core/ui/DefaultSearchResultList",
            "tags": "$:/tags/SearchResults",
            "caption": "{{$:/language/Search/DefaultResults/Caption}}",
            "text": "\\define searchResultList()\n//<small>{{$:/language/Search/Matches/Title}}</small>//\n\n<$list filter=\"[!is[system]search:title{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n//<small>{{$:/language/Search/Matches/All}}</small>//\n\n<$list filter=\"[!is[system]search{$(searchTiddler)$}sort[title]limit[250]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n\n\\end\n<<searchResultList>>\n"
        },
        "$:/core/ui/EditTemplate/body/preview/diffs-current": {
            "title": "$:/core/ui/EditTemplate/body/preview/diffs-current",
            "tags": "$:/tags/EditPreview",
            "caption": "differences from current",
            "list-after": "$:/core/ui/EditTemplate/body/preview/output",
            "text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
        },
        "$:/core/ui/EditTemplate/body/preview/diffs-shadow": {
            "title": "$:/core/ui/EditTemplate/body/preview/diffs-shadow",
            "tags": "$:/tags/EditPreview",
            "caption": "differences from shadow (if any)",
            "list-after": "$:/core/ui/EditTemplate/body/preview/output",
            "text": "<$list filter=\"[<currentTiddler>!is[image]]\" emptyMessage={{$:/core/ui/EditTemplate/body/preview/output}}>\n\n<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle={{{ [{!!draft.of}shadowsource[]] }}} sourceSubTiddlerTitle={{!!draft.of}} destTiddlerTitle=<<currentTiddler>>/>\n\n</$list>\n\n"
        },
        "$:/core/ui/EditTemplate/body/preview/output": {
            "title": "$:/core/ui/EditTemplate/body/preview/output",
            "tags": "$:/tags/EditPreview",
            "caption": "{{$:/language/EditTemplate/Body/Preview/Type/Output}}",
            "text": "\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$set name=\"tv-tiddler-preview\" value=\"yes\">\n\n<$transclude />\n\n</$set>\n"
        },
        "$:/state/showeditpreview": {
            "title": "$:/state/showeditpreview",
            "text": "no"
        },
        "$:/core/ui/EditTemplate/body/editor": {
            "title": "$:/core/ui/EditTemplate/body/editor",
            "text": "<$edit\n\n  field=\"text\"\n  class=\"tc-edit-texteditor tc-edit-texteditor-body\"\n  placeholder={{$:/language/EditTemplate/Body/Placeholder}}\n  tabindex={{$:/config/EditTabIndex}}\n  focus={{{ [{$:/config/AutoFocus}match[text]then[true]] ~[[false]] }}}\n\n><$set\n\n  name=\"targetTiddler\"\n  value=<<currentTiddler>>\n\n><$list\n\n  filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]]\"\n\n><$reveal\n\n  type=\"nomatch\"\n  state=<<config-visibility-title>>\n  text=\"hide\"\n  class=\"tc-text-editor-toolbar-item-wrapper\"\n\n><$transclude\n\n  tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\"\n  mode=\"inline\"\n\n/></$reveal></$list></$set></$edit>\n"
        },
        "$:/core/ui/EditTemplate/body/toolbar/button": {
            "title": "$:/core/ui/EditTemplate/body/toolbar/button",
            "text": "\\define toolbar-button-icon()\n<$list\n\n  filter=\"[all[current]!has[custom-icon]]\"\n  variable=\"no-custom-icon\"\n\n><$transclude\n\n  tiddler={{!!icon}}\n\n/></$list>\n\\end\n\n\\define toolbar-button-tooltip()\n{{!!description}}<$macrocall $name=\"displayshortcuts\" $output=\"text/plain\" shortcuts={{!!shortcuts}} prefix=\"` - [\" separator=\"] [\" suffix=\"]`\"/>\n\\end\n\n\\define toolbar-button()\n<$list\n\n  filter={{!!condition}}\n  variable=\"list-condition\"\n\n><$wikify\n\n  name=\"tooltip-text\"\n  text=<<toolbar-button-tooltip>>\n  mode=\"inline\"\n  output=\"text\"\n\n><$list\n\n  filter=\"[all[current]!has[dropdown]]\"\n  variable=\"no-dropdown\"\n\n><$button\n\n  class=\"tc-btn-invisible $(buttonClasses)$\"\n  tooltip=<<tooltip-text>>\n  actions={{!!actions}}\n\n><span\n\n  data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n  tiddler=<<currentTiddler>>\n  field=\"text\"\n\n/></$button></$list><$list\n\n  filter=\"[all[current]has[dropdown]]\"\n  variable=\"dropdown\"\n\n><$set\n\n  name=\"dropdown-state\"\n  value=<<qualify \"$:/state/EditorToolbarDropdown\">>\n\n><$button\n\n  popup=<<dropdown-state>>\n  class=\"tc-popup-keep tc-btn-invisible $(buttonClasses)$\"\n  selectedClass=\"tc-selected\"\n  tooltip=<<tooltip-text>>\n  actions={{!!actions}}\n\n><span\n\n  data-tw-keyboard-shortcut={{!!shortcuts}}\n\n/><<toolbar-button-icon>><$transclude\n\n  tiddler=<<currentTiddler>>\n  field=\"text\"\n\n/></$button><$reveal\n\n  state=<<dropdown-state>>\n  type=\"popup\"\n  position=\"below\"\n  animate=\"yes\"\n  tag=\"span\"\n\n><div\n\n  class=\"tc-drop-down tc-popup-keep\"\n\n><$transclude\n\n  tiddler={{!!dropdown}}\n  mode=\"block\"\n\n/></div></$reveal></$set></$list></$wikify></$list>\n\\end\n\n\\define toolbar-button-outer()\n<$set\n\n  name=\"buttonClasses\"\n  value={{!!button-classes}}\n\n><<toolbar-button>></$set>\n\\end\n\n<<toolbar-button-outer>>"
        },
        "$:/core/ui/EditTemplate/body": {
            "title": "$:/core/ui/EditTemplate/body",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/Body/\n\\define config-visibility-title()\n$:/config/EditorToolbarButtons/Visibility/$(currentTiddler)$\n\\end\n<$list filter=\"[all[current]has[_canonical_uri]]\">\n\n<div class=\"tc-message-box\">\n\n<<lingo External/Hint>>\n\n<a href={{!!_canonical_uri}}><$text text={{!!_canonical_uri}}/></a>\n\n<$edit-text field=\"_canonical_uri\" class=\"tc-edit-fields\" tabindex={{$:/config/EditTabIndex}}></$edit-text>\n\n</div>\n\n</$list>\n\n<$list filter=\"[all[current]!has[_canonical_uri]]\">\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\">\n\n<div class=\"tc-tiddler-preview\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n<div class=\"tc-tiddler-preview-preview\">\n\n<$transclude tiddler={{$:/state/editpreviewtype}} mode=\"inline\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/preview/output\" mode=\"inline\"/>\n\n</$transclude>\n\n</div>\n\n</div>\n\n</$reveal>\n\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\">\n\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/editor\" mode=\"inline\"/>\n\n</$reveal>\n\n</$list>\n"
        },
        "$:/core/ui/EditTemplate/controls": {
            "title": "$:/core/ui/EditTemplate/controls",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define config-title()\n$:/config/EditToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title tc-tiddler-edit-title\">\n<$view field=\"title\"/>\n<span class=\"tc-tiddler-controls tc-titlebar\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$transclude tiddler=<<listItem>>/></$reveal></$list></span>\n<div style=\"clear: both;\"></div>\n</div>\n"
        },
        "$:/core/ui/EditTemplate/fields": {
            "title": "$:/core/ui/EditTemplate/fields",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/\n\\define config-title()\n$:/config/EditTemplateFields/Visibility/$(currentField)$\n\\end\n\n\\define config-filter()\n[[hide]] -[title{$(config-title)$}]\n\\end\n\n\\define current-tiddler-new-field-selector()\n[data-tiddler-title=\"$(currentTiddlerCSSescaped)$\"] .tc-edit-field-add-name input\n\\end\n\n\\define new-field-actions()\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newFieldNameTiddler>>/>\n<$action-deletetiddler $tiddler=<<newFieldValueTiddler>>/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=<<current-tiddler-new-field-selector>>/>\n\\end\n\n\\define new-field()\n<$vars name={{{ [<newFieldNameTiddler>get[text]] }}}>\n<$reveal type=\"nomatch\" text=\"\" default=<<name>>>\n<$button tooltip=<<lingo Fields/Add/Button/Hint>>>\n<$action-sendmessage $message=\"tm-add-field\"\n$name=<<name>>\n$value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newFieldNameTiddler>>/>\n<$action-deletetiddler $tiddler=<<newFieldValueTiddler>>/>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n<$reveal type=\"match\" text=\"\" default=<<name>>>\n<$button>\n<<lingo Fields/Add/Button>>\n</$button>\n</$reveal>\n</$vars>\n\\end\n\\whitespace trim\n\n<div class=\"tc-edit-fields\">\n<table class=\"tc-edit-fields\">\n<tbody>\n<$list filter=\"[all[current]fields[]] +[sort[title]]\" variable=\"currentField\" storyview=\"pop\">\n<$list filter=<<config-filter>> variable=\"temp\">\n<tr class=\"tc-edit-field\">\n<td class=\"tc-edit-field-name\">\n<$text text=<<currentField>>/>:</td>\n<td class=\"tc-edit-field-value\">\n<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} tabindex={{$:/config/EditTabIndex}}/>\n</td>\n<td class=\"tc-edit-field-remove\">\n<$button class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>\n<$action-deletefield $field=<<currentField>>/>\n{{$:/core/images/delete-button}}\n</$button>\n</td>\n</tr>\n</$list>\n</$list>\n</tbody>\n</table>\n</div>\n\n<$fieldmangler>\n<div class=\"tc-edit-field-add\">\n<em class=\"tc-edit\">\n<<lingo Fields/Add/Prompt>>&nbsp;&nbsp;\n</em>\n<span class=\"tc-edit-field-add-name\">\n<$edit-text tiddler=<<newFieldNameTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[fields]then[true]] ~[[false]] }}}/>\n</span>&nbsp;\n<$button popup=<<qualify \"$:/state/popup/field-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>&nbsp;\n<$reveal state=<<qualify \"$:/state/popup/field-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$linkcatcher to=<<newFieldNameTiddler>>>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/User>>\n</div>\n<$set name=\"newFieldName\" value={{{ [<newFieldNameTiddler>get[text]] }}}>\n<$list filter=\"[!is[shadow]!is[system]fields[]search:title<newFieldName>sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type\"  variable=\"currentField\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n<div class=\"tc-dropdown-item\">\n<<lingo Fields/Add/Dropdown/System>>\n</div>\n<$list filter=\"[fields[]search:title<newFieldName>sort[]] -[!is[shadow]!is[system]fields[]]\" variable=\"currentField\">\n<$link to=<<currentField>>>\n<$text text=<<currentField>>/>\n</$link>\n</$list>\n</$set>\n</$linkcatcher>\n</$set>\n</div>\n</$reveal>\n<span class=\"tc-edit-field-add-value\">\n<$set name=\"currentTiddlerCSSescaped\" value={{{ [<currentTiddler>escapecss[]] }}}>\n<$keyboard key=\"((add-field))\" actions=<<new-field-actions>>>\n<$edit-text tiddler=<<newFieldValueTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class=\"tc-edit-texteditor\" tabindex={{$:/config/EditTabIndex}}/>\n</$keyboard>\n</$set>\n</span>&nbsp;\n<span class=\"tc-edit-field-add-button\">\n<$macrocall $name=\"new-field\"/>\n</span>\n</div>\n</$fieldmangler>\n"
        },
        "$:/core/ui/EditTemplate/shadow": {
            "title": "$:/core/ui/EditTemplate/shadow",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/Shadow/\n\\define pluginLinkBody()\n<$link to=\"\"\"$(pluginTitle)$\"\"\">\n<$text text=\"\"\"$(pluginTitle)$\"\"\"/>\n</$link>\n\\end\n<$list filter=\"[all[current]get[draft.of]is[shadow]!is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo Warning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>\n\n<$list filter=\"[all[current]get[draft.of]is[shadow]is[tiddler]]\">\n\n<$list filter=\"[all[current]shadowsource[]]\" variable=\"pluginTitle\">\n\n<$set name=\"pluginLink\" value=<<pluginLinkBody>>>\n<div class=\"tc-message-box\">\n\n<<lingo OverriddenWarning>>\n\n</div>\n</$set>\n</$list>\n\n</$list>"
        },
        "$:/core/ui/EditTemplate/tags": {
            "title": "$:/core/ui/EditTemplate/tags",
            "tags": "$:/tags/EditTemplate",
            "text": "\\whitespace trim\n\n\\define lingo-base() $:/language/EditTemplate/\n\n\\define tag-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-body-inner(colour,fallbackTarget,colourA,colourB,icon)\n\\whitespace trim\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<span style=<<tag-styles>> class=\"tc-tag-label tc-tag-list-item\">\n<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view field=\"title\" format=\"text\" />\n<$button message=\"tm-remove-tag\" param={{!!title}} class=\"tc-btn-invisible tc-remove-tag-button\">{{$:/core/images/close-button}}</$button>\n</span>\n</$vars>\n\\end\n\n\\define tag-body(colour,palette,icon)\n<$macrocall $name=\"tag-body-inner\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} icon=\"\"\"$icon$\"\"\"/>\n\\end\n\n<div class=\"tc-edit-tags\">\n<$fieldmangler>\n<$list filter=\"[all[current]tags[]sort[title]]\" storyview=\"pop\">\n<$macrocall $name=\"tag-body\" colour={{!!color}} palette={{$:/palette}} icon={{!!icon}}/>\n</$list>\n<$set name=\"tabIndex\" value={{$:/config/EditTabIndex}}>\n<$macrocall $name=\"tag-picker\"/>\n</$set>\n</$fieldmangler>\n</div>\n"
        },
        "$:/core/ui/EditTemplate/title": {
            "title": "$:/core/ui/EditTemplate/title",
            "tags": "$:/tags/EditTemplate",
            "text": "<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus={{{ [{$:/config/AutoFocus}match[title]then[true]] ~[[false]] }}} tabindex={{$:/config/EditTabIndex}}/>\n\n<$vars pattern=\"\"\"[\\|\\[\\]{}]\"\"\" bad-chars=\"\"\"`| [ ] { }`\"\"\">\n\n<$list filter=\"[all[current]regexp:draft.title<pattern>]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/BadCharacterWarning}}\n\n</div>\n\n</$list>\n\n</$vars>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<$list filter=\"[title<fromTitle>backlinks[]limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/references\">> >\n\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}} \n<<lingo EditTemplate/Title/References/Prompt>></$button>\n</$reveal>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$tiddler tiddler=<<fromTitle>> >\n<$transclude tiddler=\"$:/core/ui/TiddlerInfo/References\"/>\n</$tiddler>\n</$reveal>\n\n</$vars>\n\n</$list>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"
        },
        "$:/core/ui/EditTemplate/type": {
            "title": "$:/core/ui/EditTemplate/type",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/EditTemplate/\n\\whitespace trim\n<div class=\"tc-type-selector\"><$fieldmangler>\n<em class=\"tc-edit\"><<lingo Type/Prompt>></em>&nbsp;&nbsp;<$edit-text field=\"type\" tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Type/Placeholder}} focusPopup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-edit-typeeditor tc-edit-texteditor tc-popup-handle\" tabindex={{$:/config/EditTabIndex}} focus={{{ [{$:/config/AutoFocus}match[type]then[true]] ~[[false]] }}}/>&nbsp;<$button popup=<<qualify \"$:/state/popup/type-dropdown\">> class=\"tc-btn-invisible tc-btn-dropdown\" tooltip={{$:/language/EditTemplate/Type/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Type/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>&nbsp;<$button message=\"tm-remove-field\" param=\"type\" class=\"tc-btn-invisible tc-btn-icon\" tooltip={{$:/language/EditTemplate/Type/Delete/Hint}} aria-label={{$:/language/EditTemplate/Type/Delete/Caption}}>{{$:/core/images/delete-button}}</$button>\n</$fieldmangler></div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$reveal state=<<qualify \"$:/state/popup/type-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$linkcatcher to=\"!!type\">\n<$list filter='[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]each[group]sort[group-sort]]'>\n<div class=\"tc-dropdown-item\">\n<$text text={{!!group}}/>\n</div>\n<$list filter=\"[all[shadows+tiddlers]prefix[$:/language/Docs/Types/]group{!!group}] +[sort[description]]\"><$link to={{!!name}}><$view field=\"description\"/> (<$view field=\"name\"/>)</$link>\n</$list>\n</$list>\n</$linkcatcher>\n</div>\n</$reveal>\n</$set>\n</div>\n"
        },
        "$:/core/ui/EditTemplate": {
            "title": "$:/core/ui/EditTemplate",
            "text": "\\define save-tiddler-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n<$action-sendmessage $message=\"tm-add-field\" $name={{{ [<newFieldNameTiddler>get[text]] }}} $value={{{ [<newFieldValueTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newFieldNameTiddler>>/>\n<$action-deletetiddler $tiddler=<<newFieldValueTiddler>>/>\n<$action-sendmessage $message=\"tm-save-tiddler\"/>\n\\end\n<div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-edit-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}>\n<$fieldmangler>\n<$vars storyTiddler=<<currentTiddler>> newTagNameTiddler=<<qualify \"$:/temp/NewTagName\">> newFieldNameTiddler=<<qualify \"$:/temp/NewFieldName\">> newFieldValueTiddler=<<qualify \"$:/temp/NewFieldValue\">>>\n<$keyboard key=\"((cancel-edit-tiddler))\" message=\"tm-cancel-tiddler\">\n<$keyboard key=\"((save-tiddler))\" actions=<<save-tiddler-actions>>>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditTemplate]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>>/>\n</$set>\n</$list>\n</$keyboard>\n</$keyboard>\n</$vars>\n</$fieldmangler>\n</div>\n"
        },
        "$:/core/ui/Buttons/cancel": {
            "title": "$:/core/ui/Buttons/cancel",
            "tags": "$:/tags/EditToolbar",
            "caption": "{{$:/core/images/cancel-button}} {{$:/language/Buttons/Cancel/Caption}}",
            "description": "{{$:/language/Buttons/Cancel/Hint}}",
            "text": "<$button message=\"tm-cancel-tiddler\" tooltip={{$:/language/Buttons/Cancel/Hint}} aria-label={{$:/language/Buttons/Cancel/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/cancel-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Cancel/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/delete": {
            "title": "$:/core/ui/Buttons/delete",
            "tags": "$:/tags/EditToolbar $:/tags/ViewToolbar",
            "caption": "{{$:/core/images/delete-button}} {{$:/language/Buttons/Delete/Caption}}",
            "description": "{{$:/language/Buttons/Delete/Hint}}",
            "text": "<$button message=\"tm-delete-tiddler\" tooltip={{$:/language/Buttons/Delete/Hint}} aria-label={{$:/language/Buttons/Delete/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/delete-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Delete/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/save": {
            "title": "$:/core/ui/Buttons/save",
            "tags": "$:/tags/EditToolbar",
            "caption": "{{$:/core/images/done-button}} {{$:/language/Buttons/Save/Caption}}",
            "description": "{{$:/language/Buttons/Save/Hint}}",
            "text": "\\define save-tiddler-button()\n<$fieldmangler><$button tooltip={{$:/language/Buttons/Save/Hint}} aria-label={{$:/language/Buttons/Save/Caption}} class=<<tv-config-toolbar-class>>>\n<<save-tiddler-actions>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/done-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Save/Caption}}/></span>\n</$list>\n</$button></$fieldmangler>\n\\end\n<<save-tiddler-button>>\n"
        },
        "$:/core/ui/EditorToolbar/bold": {
            "title": "$:/core/ui/EditorToolbar/bold",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/bold",
            "caption": "{{$:/language/Buttons/Bold/Caption}}",
            "description": "{{$:/language/Buttons/Bold/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((bold))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"''\"\n\tsuffix=\"''\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/clear-dropdown": {
            "title": "$:/core/ui/EditorToolbar/clear-dropdown",
            "text": "''{{$:/language/Buttons/Clear/Hint}}''\n\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"clear\"\n\tcolour=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n\n</div>\n"
        },
        "$:/core/ui/EditorToolbar/clear": {
            "title": "$:/core/ui/EditorToolbar/clear",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/erase",
            "caption": "{{$:/language/Buttons/Clear/Caption}}",
            "description": "{{$:/language/Buttons/Clear/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/clear-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/editor-height-dropdown": {
            "title": "$:/core/ui/EditorToolbar/editor-height-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/EditorHeight/\n''<<lingo Hint>>''\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"auto\"> {{$:/core/images/auto-height}} <<lingo Caption/Auto>></$radio>\n\n<$radio tiddler=\"$:/config/TextEditor/EditorHeight/Mode\" value=\"fixed\"> {{$:/core/images/fixed-height}} <<lingo Caption/Fixed>> <$edit-text tag=\"input\" tiddler=\"$:/config/TextEditor/EditorHeight/Height\" default=\"100px\"/></$radio>\n"
        },
        "$:/core/ui/EditorToolbar/editor-height": {
            "title": "$:/core/ui/EditorToolbar/editor-height",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/fixed-height",
            "custom-icon": "yes",
            "caption": "{{$:/language/Buttons/EditorHeight/Caption}}",
            "description": "{{$:/language/Buttons/EditorHeight/Hint}}",
            "condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] +[first[]]",
            "dropdown": "$:/core/ui/EditorToolbar/editor-height-dropdown",
            "text": "<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n{{$:/core/images/fixed-height}}\n</$reveal>\n<$reveal tag=\"span\" state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n{{$:/core/images/auto-height}}\n</$reveal>\n"
        },
        "$:/core/ui/EditorToolbar/excise-dropdown": {
            "title": "$:/core/ui/EditorToolbar/excise-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Excise/\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<<lingo Caption/NewTitle>> <$edit-text tag=\"input\" tiddler=\"$config-title$/new-title\" default=\"\" focus=\"true\"/>\n\n<$set name=\"new-title\" value={{$config-title$/new-title}}>\n<$list filter=\"\"\"[<new-title>is[tiddler]]\"\"\">\n<div class=\"tc-error\">\n<<lingo Caption/TiddlerExists>>\n</div>\n</$list>\n</$set>\n\n<$checkbox tiddler=\"\"\"$config-title$/tagnew\"\"\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"false\"> <<lingo Caption/Tag>></$checkbox>\n\n<<lingo Caption/Replace>> <$select tiddler=\"\"\"$config-title$/type\"\"\" default=\"transclude\">\n<option value=\"link\"><<lingo Caption/Replace/Link>></option>\n<option value=\"transclude\"><<lingo Caption/Replace/Transclusion>></option>\n<option value=\"macro\"><<lingo Caption/Replace/Macro>></option>\n</$select>\n\n<$reveal state=\"\"\"$config-title$/type\"\"\" type=\"match\" text=\"macro\">\n<<lingo Caption/MacroName>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/macro-title\"\"\" default=\"translink\"/>\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"excise\"\n\ttitle={{$config-title$/new-title}}\n\ttype={{$config-title$/type}}\n\tmacro={{$config-title$/macro-title}}\n\ttagnew={{$config-title$/tagnew}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"$config-title$/new-title\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Excise>>\n</$button>\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Excise/\">>/>\n"
        },
        "$:/core/ui/EditorToolbar/excise": {
            "title": "$:/core/ui/EditorToolbar/excise",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/excise",
            "caption": "{{$:/language/Buttons/Excise/Caption}}",
            "description": "{{$:/language/Buttons/Excise/Hint}}",
            "condition": "[<targetTiddler>type[]] [<targetTiddler>type[text/vnd.tiddlywiki]] +[first[]]",
            "shortcuts": "((excise))",
            "dropdown": "$:/core/ui/EditorToolbar/excise-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/heading-1": {
            "title": "$:/core/ui/EditorToolbar/heading-1",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-1",
            "caption": "{{$:/language/Buttons/Heading1/Caption}}",
            "description": "{{$:/language/Buttons/Heading1/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((heading-1))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-2": {
            "title": "$:/core/ui/EditorToolbar/heading-2",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-2",
            "caption": "{{$:/language/Buttons/Heading2/Caption}}",
            "description": "{{$:/language/Buttons/Heading2/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-2))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"2\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-3": {
            "title": "$:/core/ui/EditorToolbar/heading-3",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-3",
            "caption": "{{$:/language/Buttons/Heading3/Caption}}",
            "description": "{{$:/language/Buttons/Heading3/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-3))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"3\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-4": {
            "title": "$:/core/ui/EditorToolbar/heading-4",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-4",
            "caption": "{{$:/language/Buttons/Heading4/Caption}}",
            "description": "{{$:/language/Buttons/Heading4/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-4))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"4\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-5": {
            "title": "$:/core/ui/EditorToolbar/heading-5",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-5",
            "caption": "{{$:/language/Buttons/Heading5/Caption}}",
            "description": "{{$:/language/Buttons/Heading5/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-5))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"5\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/heading-6": {
            "title": "$:/core/ui/EditorToolbar/heading-6",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-6",
            "caption": "{{$:/language/Buttons/Heading6/Caption}}",
            "description": "{{$:/language/Buttons/Heading6/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((heading-6))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"!\"\n\tcount=\"6\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/italic": {
            "title": "$:/core/ui/EditorToolbar/italic",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/italic",
            "caption": "{{$:/language/Buttons/Italic/Caption}}",
            "description": "{{$:/language/Buttons/Italic/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((italic))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"//\"\n\tsuffix=\"//\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/line-width-dropdown": {
            "title": "$:/core/ui/EditorToolbar/line-width-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/LineWidth/\n\n\\define toolbar-line-width-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(line-width)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/LineWidth\"\n\t$value=\"$(line-width)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; margin: 4px calc(80px - $(line-width)$); background-color: #000; width: calc(100px + $(line-width)$ * 2); height: $(line-width)$; border-radius: 120px; vertical-align: middle;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(line-width)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/LineWidth\" type=\"match\" text=\"\"\"$(line-width)$\"\"\" tag=\"span\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/LineWidths}} variable=\"line-width\">\n\n<<toolbar-line-width-inner>>\n\n</$list>\n"
        },
        "$:/core/ui/EditorToolbar/line-width": {
            "title": "$:/core/ui/EditorToolbar/line-width",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/line-width",
            "caption": "{{$:/language/Buttons/LineWidth/Caption}}",
            "description": "{{$:/language/Buttons/LineWidth/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/line-width-dropdown",
            "text": "<$text text={{$:/config/BitmapEditor/LineWidth}}/>"
        },
        "$:/core/ui/EditorToolbar/link-dropdown": {
            "title": "$:/core/ui/EditorToolbar/link-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Link/\n\n\\define add-link-actions()\n<$action-sendmessage $message=\"tm-edit-text-operation\" $param=\"make-link\" text={{$(linkTiddler)$}} />\n<$action-deletetiddler $tiddler=<<dropdown-state>> />\n<$action-deletetiddler $tiddler=<<searchTiddler>> />\n<$action-deletetiddler $tiddler=<<linkTiddler>> />\n\\end\n\n\\define external-link()\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\" actions=<<add-link-actions>>>\n{{$:/core/images/chevron-right}}\n</$button>\n\\end\n\n\\define body(config-title)\n''<<lingo Hint>>''\n\n<$vars searchTiddler=\"\"\"$config-title$/search\"\"\" linkTiddler=\"\"\"$config-title$/link\"\"\" linktext=\"\" >\n\n<$vars linkTiddler=<<searchTiddler>>>\n<$keyboard key=\"ENTER\" actions=<<add-link-actions>>>\n<$edit-text tiddler=<<searchTiddler>> type=\"search\" tag=\"input\" focus=\"true\" placeholder={{$:/language/Search/Search}} default=\"\"/>\n<$reveal tag=\"span\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n<<external-link>>\n<$button class=\"tc-btn-invisible\" style=\"width: auto; display: inline-block; background-colour: inherit;\">\n<$action-setfield $tiddler=<<searchTiddler>> text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</$keyboard>\n</$vars>\n\n<$reveal tag=\"div\" state=<<searchTiddler>> type=\"nomatch\" text=\"\">\n\n<$linkcatcher actions=<<add-link-actions>> to=<<linkTiddler>>>\n\n{{$:/core/ui/SearchResults}}\n\n</$linkcatcher>\n\n</$reveal>\n\n</$vars>\n\n\\end\n\n<$macrocall $name=\"body\" config-title=<<qualify \"$:/state/Link/\">>/>"
        },
        "$:/core/ui/EditorToolbar/link": {
            "title": "$:/core/ui/EditorToolbar/link",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/link",
            "caption": "{{$:/language/Buttons/Link/Caption}}",
            "description": "{{$:/language/Buttons/Link/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((link))",
            "dropdown": "$:/core/ui/EditorToolbar/link-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/linkify": {
            "title": "$:/core/ui/EditorToolbar/linkify",
            "caption": "{{$:/language/Buttons/Linkify/Caption}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "description": "{{$:/language/Buttons/Linkify/Hint}}",
            "icon": "$:/core/images/linkify",
            "list-before": "$:/core/ui/EditorToolbar/mono-block",
            "shortcuts": "((linkify))",
            "tags": "$:/tags/EditorToolbar",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"[[\"\n\tsuffix=\"]]\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/list-bullet": {
            "title": "$:/core/ui/EditorToolbar/list-bullet",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-bullet",
            "caption": "{{$:/language/Buttons/ListBullet/Caption}}",
            "description": "{{$:/language/Buttons/ListBullet/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((list-bullet))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/list-number": {
            "title": "$:/core/ui/EditorToolbar/list-number",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-number",
            "caption": "{{$:/language/Buttons/ListNumber/Caption}}",
            "description": "{{$:/language/Buttons/ListNumber/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((list-number))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/mono-block": {
            "title": "$:/core/ui/EditorToolbar/mono-block",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/mono-block",
            "caption": "{{$:/language/Buttons/MonoBlock/Caption}}",
            "description": "{{$:/language/Buttons/MonoBlock/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((mono-block))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n```\"\n\tsuffix=\"```\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/mono-line": {
            "title": "$:/core/ui/EditorToolbar/mono-line",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/mono-line",
            "caption": "{{$:/language/Buttons/MonoLine/Caption}}",
            "description": "{{$:/language/Buttons/MonoLine/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((mono-line))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/more-dropdown": {
            "title": "$:/core/ui/EditorToolbar/more-dropdown",
            "text": "\\define config-title()\n$:/config/EditorToolbarButtons/Visibility/$(toolbarItem)$\n\\end\n\n\\define conditional-button()\n<$list filter={{$(toolbarItem)$!!condition}} variable=\"condition\">\n<$transclude tiddler=\"$:/core/ui/EditTemplate/body/toolbar/button\" mode=\"inline\"/> <$transclude tiddler=<<toolbarItem>> field=\"description\"/>\n</$list>\n\\end\n\n<div class=\"tc-text-editor-toolbar-more\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditorToolbar]!has[draft.of]] -[[$:/core/ui/EditorToolbar/more]]\">\n<$reveal type=\"match\" state=<<config-visibility-title>> text=\"hide\" tag=\"div\">\n<<conditional-button>>\n</$reveal>\n</$list>\n</div>\n"
        },
        "$:/core/ui/EditorToolbar/more": {
            "title": "$:/core/ui/EditorToolbar/more",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/down-arrow",
            "caption": "{{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "condition": "[<targetTiddler>]",
            "dropdown": "$:/core/ui/EditorToolbar/more-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/opacity-dropdown": {
            "title": "$:/core/ui/EditorToolbar/opacity-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Opacity/\n\n\\define toolbar-opacity-inner()\n<$button tag=\"a\" tooltip=\"\"\"$(opacity)$\"\"\">\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Opacity\"\n\t$value=\"$(opacity)$\"\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(current-paint-colour)$; opacity: $(opacity)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\n<span style=\"margin-left: 8px;\">\n\n<$text text=\"\"\"$(opacity)$\"\"\"/>\n\n<$reveal state=\"$:/config/BitmapEditor/Opacity\" type=\"match\" text=\"\"\"$(opacity)$\"\"\" tag=\"span\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</span>\n\n</$button>\n\\end\n\n\\define toolbar-opacity()\n''<<lingo Hint>>''\n\n<$list filter={{$:/config/BitmapEditor/Opacities}} variable=\"opacity\">\n\n<<toolbar-opacity-inner>>\n\n</$list>\n\\end\n\n<$set name=\"current-paint-colour\" value={{$:/config/BitmapEditor/Colour}}>\n\n<$set name=\"current-opacity\" value={{$:/config/BitmapEditor/Opacity}}>\n\n<<toolbar-opacity>>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/EditorToolbar/opacity": {
            "title": "$:/core/ui/EditorToolbar/opacity",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/opacity",
            "caption": "{{$:/language/Buttons/Opacity/Caption}}",
            "description": "{{$:/language/Buttons/Opacity/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/opacity-dropdown",
            "text": "<$text text={{$:/config/BitmapEditor/Opacity}}/>\n"
        },
        "$:/core/ui/EditorToolbar/paint-dropdown": {
            "title": "$:/core/ui/EditorToolbar/paint-dropdown",
            "text": "''{{$:/language/Buttons/Paint/Hint}}''\n\n<$macrocall $name=\"colour-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/config/BitmapEditor/Colour\"\n\t$value=<<colour-picker-value>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
        },
        "$:/core/ui/EditorToolbar/paint": {
            "title": "$:/core/ui/EditorToolbar/paint",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/paint",
            "caption": "{{$:/language/Buttons/Paint/Caption}}",
            "description": "{{$:/language/Buttons/Paint/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/paint-dropdown",
            "text": "\\define toolbar-paint()\n<div style=\"display: inline-block; vertical-align: middle; background-color: $(colour-picker-value)$; width: 1em; height: 1em; border-radius: 50%;\"/>\n\\end\n<$set name=\"colour-picker-value\" value={{$:/config/BitmapEditor/Colour}}>\n<<toolbar-paint>>\n</$set>\n"
        },
        "$:/core/ui/EditorToolbar/picture-dropdown": {
            "title": "$:/core/ui/EditorToolbar/picture-dropdown",
            "text": "\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n''{{$:/language/Buttons/Picture/Hint}}''\n\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<replacement-text>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n\"\"\"/>\n"
        },
        "$:/core/ui/EditorToolbar/picture": {
            "title": "$:/core/ui/EditorToolbar/picture",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/picture",
            "caption": "{{$:/language/Buttons/Picture/Caption}}",
            "description": "{{$:/language/Buttons/Picture/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((picture))",
            "dropdown": "$:/core/ui/EditorToolbar/picture-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/preview-type-dropdown": {
            "title": "$:/core/ui/EditorToolbar/preview-type-dropdown",
            "text": "\\define preview-type-button()\n<$button tag=\"a\">\n\n<$action-setfield $tiddler=\"$:/state/editpreviewtype\" $value=\"$(previewType)$\"/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<previewType>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<previewType>> field=\"title\" mode=\"inline\"/>\n\n</$transclude> \n\n<$reveal tag=\"span\" state=\"$:/state/editpreviewtype\" type=\"match\" text=<<previewType>> default=\"$:/core/ui/EditTemplate/body/preview/output\">\n\n<$entity entity=\"&nbsp;\"/>\n\n<$entity entity=\"&#x2713;\"/>\n\n</$reveal>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]]\" variable=\"previewType\">\n\n<<preview-type-button>>\n\n</$list>\n"
        },
        "$:/core/ui/EditorToolbar/preview-type": {
            "title": "$:/core/ui/EditorToolbar/preview-type",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/chevron-down",
            "caption": "{{$:/language/Buttons/PreviewType/Caption}}",
            "description": "{{$:/language/Buttons/PreviewType/Hint}}",
            "condition": "[all[shadows+tiddlers]tag[$:/tags/EditPreview]!has[draft.of]butfirst[]limit[1]]",
            "button-classes": "tc-text-editor-toolbar-item-adjunct",
            "dropdown": "$:/core/ui/EditorToolbar/preview-type-dropdown"
        },
        "$:/core/ui/EditorToolbar/preview": {
            "title": "$:/core/ui/EditorToolbar/preview",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/preview-open",
            "custom-icon": "yes",
            "caption": "{{$:/language/Buttons/Preview/Caption}}",
            "description": "{{$:/language/Buttons/Preview/Hint}}",
            "condition": "[<targetTiddler>]",
            "button-classes": "tc-text-editor-toolbar-item-start-group",
            "shortcuts": "((preview))",
            "text": "<$reveal state=\"$:/state/showeditpreview\" type=\"match\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-open}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"no\"/>\n</$reveal>\n<$reveal state=\"$:/state/showeditpreview\" type=\"nomatch\" text=\"yes\" tag=\"span\">\n{{$:/core/images/preview-closed}}\n<$action-setfield $tiddler=\"$:/state/showeditpreview\" $value=\"yes\"/>\n</$reveal>\n"
        },
        "$:/core/ui/EditorToolbar/quote": {
            "title": "$:/core/ui/EditorToolbar/quote",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/quote",
            "caption": "{{$:/language/Buttons/Quote/Caption}}",
            "description": "{{$:/language/Buttons/Quote/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((quote))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-lines\"\n\tprefix=\"\n<<<\"\n\tsuffix=\"<<<\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/rotate-left": {
            "title": "$:/core/ui/EditorToolbar/rotate-left",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/rotate-left",
            "caption": "{{$:/language/Buttons/RotateLeft/Caption}}",
            "description": "{{$:/language/Buttons/RotateLeft/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"rotate-left\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/size-dropdown": {
            "title": "$:/core/ui/EditorToolbar/size-dropdown",
            "text": "\\define lingo-base() $:/language/Buttons/Size/\n\n\\define toolbar-button-size-preset(config-title)\n<$set name=\"width\" filter=\"$(sizePair)$ +[first[]]\">\n\n<$set name=\"height\" filter=\"$(sizePair)$ +[last[]]\">\n\n<$button tag=\"a\">\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n\t$value=<<width>>\n/>\n\n<$action-setfield\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n\t$value=<<height>>\n/>\n\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/presets-popup\"\"\"\n/>\n\n<$text text=<<width>>/> &times; <$text text=<<height>>/>\n\n</$button>\n\n</$set>\n\n</$set>\n\\end\n\n\\define toolbar-button-size(config-title)\n''{{$:/language/Buttons/Size/Hint}}''\n\n<<lingo Caption/Width>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-width\"\"\" default=<<tv-bitmap-editor-width>> focus=\"true\" size=\"8\"/> <<lingo Caption/Height>> <$edit-text tag=\"input\" tiddler=\"\"\"$config-title$/new-height\"\"\" default=<<tv-bitmap-editor-height>> size=\"8\"/> <$button popup=\"\"\"$config-title$/presets-popup\"\"\" class=\"tc-btn-invisible tc-popup-keep\" style=\"width: auto; display: inline-block; background-colour: inherit;\" selectedClass=\"tc-selected\">\n{{$:/core/images/down-arrow}}\n</$button>\n\n<$reveal tag=\"span\" state=\"\"\"$config-title$/presets-popup\"\"\" type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down tc-popup-keep\">\n\n<$list filter={{$:/config/BitmapEditor/ImageSizes}} variable=\"sizePair\">\n\n<$macrocall $name=\"toolbar-button-size-preset\" config-title=\"$config-title$\"/>\n\n</$list>\n\n</div>\n\n</$reveal>\n\n<$button>\n<$action-sendmessage\n\t$message=\"tm-edit-bitmap-operation\"\n\t$param=\"resize\"\n\twidth={{$config-title$/new-width}}\n\theight={{$config-title$/new-height}}\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-width\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=\"\"\"$config-title$/new-height\"\"\"\n/>\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n<<lingo Caption/Resize>>\n</$button>\n\\end\n\n<$macrocall $name=\"toolbar-button-size\" config-title=<<qualify \"$:/state/Size/\">>/>\n"
        },
        "$:/core/ui/EditorToolbar/size": {
            "title": "$:/core/ui/EditorToolbar/size",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/size",
            "caption": "{{$:/language/Buttons/Size/Caption}}",
            "description": "{{$:/language/Buttons/Size/Hint}}",
            "condition": "[<targetTiddler>is[image]]",
            "dropdown": "$:/core/ui/EditorToolbar/size-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/stamp-dropdown": {
            "title": "$:/core/ui/EditorToolbar/stamp-dropdown",
            "text": "\\define toolbar-button-stamp-inner()\n<$button tag=\"a\">\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext={{$(snippetTitle)$}}\n/>\n\n</$list>\n\n\n<$list filter=\"[[$(snippetTitle)$]addsuffix[/prefix]is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]is[missing]] [[$(snippetTitle)$]addsuffix[/prefix]!is[missing]removesuffix[/prefix]addsuffix[/suffix]!is[missing]]\">\n\n<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix={{{ [[$(snippetTitle)$]addsuffix[/prefix]get[text]] }}}\nsuffix={{{ [[$(snippetTitle)$]addsuffix[/suffix]get[text]] }}}\n/>\n\n</$list>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<$transclude tiddler=<<snippetTitle>> field=\"caption\" mode=\"inline\">\n\n<$view tiddler=<<snippetTitle>> field=\"title\" />\n\n</$transclude>\n\n</$button>\n\\end\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TextEditor/Snippet]!has[draft.of]sort[caption]]\" variable=\"snippetTitle\">\n\n<<toolbar-button-stamp-inner>>\n\n</$list>\n\n----\n\n<$button tag=\"a\">\n\n<$action-sendmessage\n\t$message=\"tm-new-tiddler\"\n\ttags=\"$:/tags/TextEditor/Snippet\"\n\tcaption={{$:/language/Buttons/Stamp/New/Title}}\n\ttext={{$:/language/Buttons/Stamp/New/Text}}\n/>\n\n<$action-deletetiddler\n\t$tiddler=<<dropdown-state>>\n/>\n\n<em>\n\n<$text text={{$:/language/Buttons/Stamp/Caption/New}}/>\n\n</em>\n\n</$button>\n"
        },
        "$:/core/ui/EditorToolbar/stamp": {
            "title": "$:/core/ui/EditorToolbar/stamp",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/stamp",
            "caption": "{{$:/language/Buttons/Stamp/Caption}}",
            "description": "{{$:/language/Buttons/Stamp/Hint}}",
            "condition": "[<targetTiddler>type[]] [<targetTiddler>get[type]prefix[text/]] +[first[]]",
            "shortcuts": "((stamp))",
            "dropdown": "$:/core/ui/EditorToolbar/stamp-dropdown",
            "text": ""
        },
        "$:/core/ui/EditorToolbar/strikethrough": {
            "title": "$:/core/ui/EditorToolbar/strikethrough",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/strikethrough",
            "caption": "{{$:/language/Buttons/Strikethrough/Caption}}",
            "description": "{{$:/language/Buttons/Strikethrough/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((strikethrough))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"~~\"\n\tsuffix=\"~~\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/subscript": {
            "title": "$:/core/ui/EditorToolbar/subscript",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/subscript",
            "caption": "{{$:/language/Buttons/Subscript/Caption}}",
            "description": "{{$:/language/Buttons/Subscript/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((subscript))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\",,\"\n\tsuffix=\",,\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/superscript": {
            "title": "$:/core/ui/EditorToolbar/superscript",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/superscript",
            "caption": "{{$:/language/Buttons/Superscript/Caption}}",
            "description": "{{$:/language/Buttons/Superscript/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((superscript))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"^^\"\n\tsuffix=\"^^\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/transcludify": {
            "title": "$:/core/ui/EditorToolbar/transcludify",
            "caption": "{{$:/language/Buttons/Transcludify/Caption}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "description": "{{$:/language/Buttons/Transcludify/Hint}}",
            "icon": "$:/core/images/transcludify",
            "list-before": "$:/core/ui/EditorToolbar/mono-block",
            "shortcuts": "((transcludify))",
            "tags": "$:/tags/EditorToolbar",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"{{\"\n\tsuffix=\"}}\"\n/>\n"
        },
        "$:/core/ui/EditorToolbar/underline": {
            "title": "$:/core/ui/EditorToolbar/underline",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/underline",
            "caption": "{{$:/language/Buttons/Underline/Caption}}",
            "description": "{{$:/language/Buttons/Underline/Hint}}",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "shortcuts": "((underline))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"__\"\n\tsuffix=\"__\"\n/>\n"
        },
        "$:/core/Filters/AllTags": {
            "title": "$:/core/Filters/AllTags",
            "tags": "$:/tags/Filter",
            "filter": "[tags[]!is[system]sort[title]]",
            "description": "{{$:/language/Filters/AllTags}}",
            "text": ""
        },
        "$:/core/Filters/AllTiddlers": {
            "title": "$:/core/Filters/AllTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]sort[title]]",
            "description": "{{$:/language/Filters/AllTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/Drafts": {
            "title": "$:/core/Filters/Drafts",
            "tags": "$:/tags/Filter",
            "filter": "[has[draft.of]sort[title]]",
            "description": "{{$:/language/Filters/Drafts}}",
            "text": ""
        },
        "$:/core/Filters/Missing": {
            "title": "$:/core/Filters/Missing",
            "tags": "$:/tags/Filter",
            "filter": "[all[missing]sort[title]]",
            "description": "{{$:/language/Filters/Missing}}",
            "text": ""
        },
        "$:/core/Filters/Orphans": {
            "title": "$:/core/Filters/Orphans",
            "tags": "$:/tags/Filter",
            "filter": "[all[orphans]sort[title]]",
            "description": "{{$:/language/Filters/Orphans}}",
            "text": ""
        },
        "$:/core/Filters/OverriddenShadowTiddlers": {
            "title": "$:/core/Filters/OverriddenShadowTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[is[shadow]]",
            "description": "{{$:/language/Filters/OverriddenShadowTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/RecentSystemTiddlers": {
            "title": "$:/core/Filters/RecentSystemTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[has[modified]!sort[modified]limit[50]]",
            "description": "{{$:/language/Filters/RecentSystemTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/RecentTiddlers": {
            "title": "$:/core/Filters/RecentTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]has[modified]!sort[modified]limit[50]]",
            "description": "{{$:/language/Filters/RecentTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/SessionTiddlers": {
            "title": "$:/core/Filters/SessionTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[haschanged[]]",
            "description": "{{$:/language/Filters/SessionTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/ShadowTiddlers": {
            "title": "$:/core/Filters/ShadowTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[all[shadows]sort[title]]",
            "description": "{{$:/language/Filters/ShadowTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/StoryList": {
            "title": "$:/core/Filters/StoryList",
            "tags": "$:/tags/Filter",
            "filter": "[list[$:/StoryList]] -$:/AdvancedSearch",
            "description": "{{$:/language/Filters/StoryList}}",
            "text": ""
        },
        "$:/core/Filters/SystemTags": {
            "title": "$:/core/Filters/SystemTags",
            "tags": "$:/tags/Filter",
            "filter": "[all[shadows+tiddlers]tags[]is[system]sort[title]]",
            "description": "{{$:/language/Filters/SystemTags}}",
            "text": ""
        },
        "$:/core/Filters/SystemTiddlers": {
            "title": "$:/core/Filters/SystemTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[is[system]sort[title]]",
            "description": "{{$:/language/Filters/SystemTiddlers}}",
            "text": ""
        },
        "$:/core/Filters/TypedTiddlers": {
            "title": "$:/core/Filters/TypedTiddlers",
            "tags": "$:/tags/Filter",
            "filter": "[!is[system]has[type]each[type]sort[type]] -[type[text/vnd.tiddlywiki]]",
            "description": "{{$:/language/Filters/TypedTiddlers}}",
            "text": ""
        },
        "$:/core/ui/ImportListing": {
            "title": "$:/core/ui/ImportListing",
            "text": "\\define lingo-base() $:/language/Import/\n\n\\define messageField()\nmessage-$(payloadTiddler)$\n\\end\n\n\\define selectionField()\nselection-$(payloadTiddler)$\n\\end\n\n\\define previewPopupState()\n$(currentTiddler)$!!popup-$(payloadTiddler)$\n\\end\n\n\\define select-all-actions()\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<$action-setfield $field={{{ [<payloadTiddler>addprefix[selection-]] }}} $value={{$:/state/import/select-all}}/>\n</$list>\n\\end\n\n<table>\n<tbody>\n<tr>\n<th>\n<$checkbox tiddler=\"$:/state/import/select-all\" field=\"text\" checked=\"checked\" unchecked=\"unchecked\" default=\"checked\" actions=<<select-all-actions>>>\n<<lingo Listing/Select/Caption>>\n</$checkbox>\n</th>\n<th>\n<<lingo Listing/Title/Caption>>\n</th>\n<th>\n<<lingo Listing/Status/Caption>>\n</th>\n</tr>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" variable=\"payloadTiddler\">\n<tr>\n<td>\n<$checkbox field=<<selectionField>> checked=\"checked\" unchecked=\"unchecked\" default=\"checked\"/>\n</td>\n<td>\n<$reveal type=\"nomatch\" stateTitle=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" setTitle=<<previewPopupState>> setTo=\"yes\">\n{{$:/core/images/right-arrow}}&nbsp;<$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<previewPopupState>> text=\"yes\" tag=\"div\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" setTitle=<<previewPopupState>> setTo=\"no\">\n{{$:/core/images/down-arrow}}&nbsp;<$text text=<<payloadTiddler>>/>\n</$button>\n</$reveal>\n</td>\n<td>\n<$view field=<<messageField>>/>\n</td>\n</tr>\n<tr>\n<td colspan=\"3\">\n<$reveal type=\"match\" text=\"yes\" stateTitle=<<previewPopupState>> tag=\"div\">\n<$list filter=\"[{$:/state/importpreviewtype}has[text]]\" variable=\"listItem\" emptyMessage={{$:/core/ui/ImportPreviews/Text}}>\n<$transclude tiddler={{$:/state/importpreviewtype}}/>\n</$list>\n</$reveal>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ImportPreviews/Diff": {
            "title": "$:/core/ui/ImportPreviews/Diff",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/Diff}}",
            "text": "<$macrocall $name=\"compareTiddlerText\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>>/>\n"
        },
        "$:/core/ui/ImportPreviews/DiffFields": {
            "title": "$:/core/ui/ImportPreviews/DiffFields",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/DiffFields}}",
            "text": "<$macrocall $name=\"compareTiddlers\" sourceTiddlerTitle=<<payloadTiddler>> destTiddlerTitle=<<currentTiddler>> destSubTiddlerTitle=<<payloadTiddler>> exclude=\"text\"/>\n"
        },
        "$:/core/ui/ImportPreviews/Fields": {
            "title": "$:/core/ui/ImportPreviews/Fields",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/Fields}}",
            "text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[<payloadTiddler>subtiddlerfields<currentTiddler>sort[]] -text\" variable=\"fieldName\">\n<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<fieldName>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<fieldName>> tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>>/>\n</td>\n</tr>\n</$list>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/ImportPreviews/Text": {
            "title": "$:/core/ui/ImportPreviews/Text",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/Text}}",
            "text": "<$transclude tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> mode=\"block\"/>\n"
        },
        "$:/core/ui/ImportPreviews/TextRaw": {
            "title": "$:/core/ui/ImportPreviews/TextRaw",
            "tags": "$:/tags/ImportPreview",
            "caption": "{{$:/language/Import/Listing/Preview/TextRaw}}",
            "text": "<pre><code><$view tiddler=<<currentTiddler>> subtiddler=<<payloadTiddler>> /></code></pre>"
        },
        "$:/core/ui/KeyboardShortcuts/advanced-search": {
            "title": "$:/core/ui/KeyboardShortcuts/advanced-search",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((advanced-search))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\">\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n<$action-sendmessage $message=\"tm-focus-selector\" $param=\"\"\"[data-tiddler-title=\"$:/AdvancedSearch\"] .tc-search input\"\"\"/>\n</$navigator>\n"
        },
        "$:/core/ui/KeyboardShortcuts/new-image": {
            "title": "$:/core/ui/KeyboardShortcuts/new-image",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((new-image))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-image}}\n</$navigator>\n"
        },
        "$:/core/ui/KeyboardShortcuts/new-journal": {
            "title": "$:/core/ui/KeyboardShortcuts/new-journal",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((new-journal))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-journal}}\n</$navigator>\n"
        },
        "$:/core/ui/KeyboardShortcuts/new-tiddler": {
            "title": "$:/core/ui/KeyboardShortcuts/new-tiddler",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((new-tiddler))",
            "text": "<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n{{$:/core/ui/Actions/new-tiddler}}\n</$navigator>\n"
        },
        "$:/core/ui/KeyboardShortcuts/sidebar-search": {
            "title": "$:/core/ui/KeyboardShortcuts/sidebar-search",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((sidebar-search))",
            "text": "<$action-sendmessage $message=\"tm-focus-selector\" $param=\".tc-search input\"/>\n"
        },
        "$:/core/ui/KeyboardShortcut/toggle-sidebar": {
            "title": "$:/core/ui/KeyboardShortcut/toggle-sidebar",
            "tags": "$:/tags/KeyboardShortcut",
            "key": "((toggle-sidebar))",
            "text": "<$list filter=\"[[$:/state/sidebar]is[missing]] [{$:/state/sidebar}removeprefix[yes]]\" emptyMessage=\"\"\"\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"yes\"/>\n\"\"\">\n<$action-setfield $tiddler=\"$:/state/sidebar\" text=\"no\"/>\n</$list>\n"
        },
        "$:/core/ui/ListItemTemplate": {
            "title": "$:/core/ui/ListItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link />\n</div>"
        },
        "$:/Manager/ItemMain/Fields": {
            "title": "$:/Manager/ItemMain/Fields",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/Fields}}",
            "text": "<table>\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
        },
        "$:/Manager/ItemMain/RawText": {
            "title": "$:/Manager/ItemMain/RawText",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/RawText}}",
            "text": "<pre><code><$view/></code></pre>\n"
        },
        "$:/Manager/ItemMain/WikifiedText": {
            "title": "$:/Manager/ItemMain/WikifiedText",
            "tags": "$:/tags/Manager/ItemMain",
            "caption": "{{$:/language/Manager/Item/WikifiedText}}",
            "text": "<$transclude mode=\"block\"/>\n"
        },
        "$:/Manager/ItemSidebar/Colour": {
            "title": "$:/Manager/ItemSidebar/Colour",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Colour}}",
            "text": "\\define swatch-styles()\nheight: 1em;\nbackground-color: $(colour)$\n\\end\n\n<$vars colour={{!!color}}>\n<p style=<<swatch-styles>>/>\n</$vars>\n<p>\n<$edit-text field=\"color\" tag=\"input\" type=\"color\"/> / <$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Icon": {
            "title": "$:/Manager/ItemSidebar/Icon",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Icon}}",
            "text": "<p>\n<div class=\"tc-manager-icon-editor\">\n<$button popup=<<qualify \"$:/state/popup/image-picker\">> class=\"tc-btn-invisible\">\n<$transclude tiddler={{!!icon}}>\n{{$:/language/Manager/Item/Icon/None}}\n</$transclude>\n</$button>\n<div class=\"tc-block-dropdown-wrapper\" style=\"position: static;\">\n<$reveal state=<<qualify \"$:/state/popup/image-picker\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-popup\">\n<div class=\"tc-block-dropdown tc-popup-keep\" style=\"width: 80%; left: 10%; right: 10%; padding: 0.5em;\">\n<$macrocall $name=\"image-picker-include-tagged-images\" actions=\"\"\"\n<$action-setfield $field=\"icon\" $value=<<imageTitle>>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/image-picker\">>/>\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n</div>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Tags": {
            "title": "$:/Manager/ItemSidebar/Tags",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Tags}}",
            "text": "\\define tag-checkbox-actions()\n<$action-listops\n\t$tiddler=\"$:/config/Manager/RecentTags\"\n\t$subfilter=\"[<tag>] [list[$:/config/Manager/RecentTags]] +[limit[12]]\"\n/>\n\\end\n\n\\define tag-picker-actions()\n<<tag-checkbox-actions>>\n<$action-listops\n\t$tiddler=<<currentTiddler>>\n\t$field=\"tags\"\n\t$subfilter=\"[<tag>] [all[current]tags[]]\"\n/>\n\\end\n\n<p>\n<$list filter=\"[all[current]tags[]] [list[$:/config/Manager/RecentTags]] +[sort[title]] \" variable=\"tag\">\n<div>\n<$checkbox tiddler=<<currentTiddler>> tag=<<tag>> actions=<<tag-checkbox-actions>>>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$checkbox>\n</div>\n</$list>\n</p>\n<p>\n<$macrocall $name=\"tag-picker\" actions=<<tag-picker-actions>>/>\n</p>\n"
        },
        "$:/Manager/ItemSidebar/Tools": {
            "title": "$:/Manager/ItemSidebar/Tools",
            "tags": "$:/tags/Manager/ItemSidebar",
            "caption": "{{$:/language/Manager/Item/Tools}}",
            "text": "<p>\n<$button to=<<currentTiddler>>>{{$:/core/images/link}} open</$button>\n</p>\n<p>\n<$button message=\"tm-edit-tiddler\" param=<<currentTiddler>>>{{$:/core/images/edit-button}} edit</$button>\n</p>\n"
        },
        "$:/Manager": {
            "title": "$:/Manager",
            "icon": "$:/core/images/list",
            "color": "#bbb",
            "text": "\\define lingo-base() $:/language/Manager/\n\n\\define list-item-content-item()\n<div class=\"tc-manager-list-item-content-item\">\n\t<$vars state-title=\"\"\"$:/state/popup/manager/item/$(listItem)$\"\"\">\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"hide\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/down-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"nomatch\" text=\"show\" default=\"show\" tag=\"div\">\n\t\t\t<$button set=<<state-title>> setTo=\"show\" class=\"tc-btn-invisible tc-manager-list-item-content-item-heading\">\n\t\t\t\t{{$:/core/images/right-arrow}} <$transclude tiddler=<<listItem>> field=\"caption\"/>\n\t\t\t</$button>\n\t\t</$reveal>\n\t\t<$reveal state=<<state-title>> type=\"match\" text=\"show\" default=\"show\" tag=\"div\" class=\"tc-manager-list-item-content-item-body\">\n\t\t\t<$transclude tiddler=<<listItem>>/>\n\t\t</$reveal>\n\t</$vars>\n</div>\n\\end\n\n<div class=\"tc-manager-wrapper\">\n\t<div class=\"tc-manager-controls\">\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Show/Prompt>> <$select tiddler=\"$:/config/Manager/Show\" default=\"tiddlers\">\n\t\t\t\t<option value=\"tiddlers\"><<lingo Controls/Show/Option/Tiddlers>></option>\n\t\t\t\t<option value=\"tags\"><<lingo Controls/Show/Option/Tags>></option>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Search/Prompt>> <$edit-text tiddler=\"$:/config/Manager/Filter\" tag=\"input\" default=\"\" placeholder={{$:/language/Manager/Controls/Search/Placeholder}}/>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/FilterByTag/Prompt>> <$select tiddler=\"$:/config/Manager/Tag\" default=\"\">\n\t\t\t\t<option value=\"\"><<lingo Controls/FilterByTag/None>></option>\n\t\t\t\t<$list filter=\"[!is{$:/config/Manager/System}tags[]!is[system]sort[title]]\" variable=\"tag\">\n\t\t\t\t\t<option value=<<tag>>><$text text=<<tag>>/></option>\n\t\t\t\t</$list>\n\t\t\t</$select>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<<lingo Controls/Sort/Prompt>> <$select tiddler=\"$:/config/Manager/Sort\" default=\"title\">\n\t\t\t\t<optgroup label=\"Common\">\n\t\t\t\t\t<$list filter=\"title modified modifier created creator created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t\t<optgroup label=\"All\">\n\t\t\t\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}fields[]sort[title]] -title -modified -modifier -created -creator -created\" variable=\"field\">\n\t\t\t\t\t\t<option value=<<field>>><$text text=<<field>>/></option>\n\t\t\t\t\t</$list>\n\t\t\t\t</optgroup>\n\t\t\t</$select>\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/Order\" field=\"text\" checked=\"reverse\" unchecked=\"forward\" default=\"forward\">\n\t\t\t\t<<lingo Controls/Order/Prompt>>\n\t\t\t</$checkbox>\n\t\t</div>\n\t\t<div class=\"tc-manager-control\">\n\t\t\t<$checkbox tiddler=\"$:/config/Manager/System\" field=\"text\" checked=\"\" unchecked=\"system\" default=\"system\">\n\t\t\t\t{{$:/language/SystemTiddlers/Include/Prompt}}\n\t\t\t</$checkbox>\n\t\t</div>\n\t</div>\n\t<div class=\"tc-manager-list\">\n\t\t<$list filter=\"[all{$:/config/Manager/Show}!is{$:/config/Manager/System}search{$:/config/Manager/Filter}tag:strict{$:/config/Manager/Tag}sort{$:/config/Manager/Sort}order{$:/config/Manager/Order}]\">\n\t\t\t<$vars transclusion=<<currentTiddler>>>\n\t\t\t\t<div style=\"tc-manager-list-item\">\n\t\t\t\t\t<$button popup=<<qualify \"$:/state/manager/popup\">> class=\"tc-btn-invisible tc-manager-list-item-heading\" selectedClass=\"tc-manager-list-item-heading-selected\">\n\t\t\t\t\t\t<$text text=<<currentTiddler>>/>\n\t\t\t\t\t</$button>\n\t\t\t\t\t<$reveal state=<<qualify \"$:/state/manager/popup\">> type=\"nomatch\" text=\"\" default=\"\" tag=\"div\" class=\"tc-manager-list-item-content tc-popup-handle\">\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-tiddler\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemMain]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t\t<div class=\"tc-manager-list-item-content-sidebar\">\n\t\t\t\t\t\t\t<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Manager/ItemSidebar]!has[draft.of]]\" variable=\"listItem\">\n\t\t\t\t\t\t\t\t<<list-item-content-item>>\n\t\t\t\t\t\t\t</$list>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</$reveal>\n\t\t\t\t</div>\n\t\t\t</$vars>\n\t\t</$list>\n\t</div>\n</div>\n"
        },
        "$:/core/ui/MissingTemplate": {
            "title": "$:/core/ui/MissingTemplate",
            "text": "<div class=\"tc-tiddler-missing\">\n<$button popup=<<qualify \"$:/state/popup/missing\">> class=\"tc-btn-invisible tc-missing-tiddler-label\">\n<$view field=\"title\" format=\"text\" />\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/missing\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n<hr>\n<$list filter=\"[all[current]backlinks[]sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n</div>\n"
        },
        "$:/core/ui/MoreSideBar/All": {
            "title": "$:/core/ui/MoreSideBar/All",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/All/Caption}}",
            "text": "<$list filter={{$:/core/Filters/AllTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Drafts": {
            "title": "$:/core/ui/MoreSideBar/Drafts",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Drafts/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Drafts!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Explorer": {
            "title": "$:/core/ui/MoreSideBar/Explorer",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Explorer/Caption}}",
            "text": "<<tree \"$:/\">>\n"
        },
        "$:/core/ui/MoreSideBar/Missing": {
            "title": "$:/core/ui/MoreSideBar/Missing",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Missing/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Missing!!filter}} template=\"$:/core/ui/MissingTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Orphans": {
            "title": "$:/core/ui/MoreSideBar/Orphans",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Orphans/Caption}}",
            "text": "<$list filter={{$:/core/Filters/Orphans!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins": {
            "title": "$:/core/ui/MoreSideBar/Plugins",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/ControlPanel/Plugins/Caption}}",
            "text": "\n{{$:/language/ControlPanel/Plugins/Installed/Hint}}\n\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar/Plugins]!has[draft.of]]\" \"$:/core/ui/MoreSideBar/Plugins/Plugins\">>\n"
        },
        "$:/core/ui/MoreSideBar/Recent": {
            "title": "$:/core/ui/MoreSideBar/Recent",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Recent/Caption}}",
            "text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
        },
        "$:/core/ui/MoreSideBar/Shadows": {
            "title": "$:/core/ui/MoreSideBar/Shadows",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Shadows/Caption}}",
            "text": "<$list filter={{$:/core/Filters/ShadowTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/System": {
            "title": "$:/core/ui/MoreSideBar/System",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/System/Caption}}",
            "text": "<$list filter={{$:/core/Filters/SystemTiddlers!!filter}} template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/MoreSideBar/Tags": {
            "title": "$:/core/ui/MoreSideBar/Tags",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Tags/Caption}}",
            "text": "<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n{{$:/core/ui/Buttons/tag-manager}}\n\n</$set>\n\n</$set>\n\n</$set>\n\n<$list filter={{$:/core/Filters/AllTags!!filter}}>\n\n<$transclude tiddler=\"$:/core/ui/TagTemplate\"/>\n\n</$list>\n\n<hr class=\"tc-untagged-separator\">\n\n{{$:/core/ui/UntaggedTemplate}}\n"
        },
        "$:/core/ui/MoreSideBar/Types": {
            "title": "$:/core/ui/MoreSideBar/Types",
            "tags": "$:/tags/MoreSideBar",
            "caption": "{{$:/language/SideBar/Types/Caption}}",
            "text": "<$list filter={{$:/core/Filters/TypedTiddlers!!filter}}>\n<div class=\"tc-menu-list-item\">\n<$view field=\"type\"/>\n<$list filter=\"[type{!!type}!is[system]sort[title]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><$view field=\"title\"/></$link>\n</div>\n</$list>\n</div>\n</$list>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Languages": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Languages",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Languages/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[language]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Plugins": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Plugins",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Plugins/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[plugin]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}>>/>\n"
        },
        "$:/core/ui/MoreSideBar/Plugins/Theme": {
            "title": "$:/core/ui/MoreSideBar/Plugins/Theme",
            "tags": "$:/tags/MoreSideBar/Plugins",
            "caption": "{{$:/language/ControlPanel/Plugins/Themes/Caption}}",
            "text": "<$list filter=\"[!has[draft.of]plugin-type[theme]sort[description]]\" template=\"$:/core/ui/PluginListItemTemplate\" emptyMessage={{$:/language/ControlPanel/Plugins/Empty/Hint}}/>\n"
        },
        "$:/core/ui/Buttons/advanced-search": {
            "title": "$:/core/ui/Buttons/advanced-search",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/advanced-search-button}} {{$:/language/Buttons/AdvancedSearch/Caption}}",
            "description": "{{$:/language/Buttons/AdvancedSearch/Hint}}",
            "text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/advanced-search-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/AdvancedSearch/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/AdvancedSearch]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/close-all": {
            "title": "$:/core/ui/Buttons/close-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/close-all-button}} {{$:/language/Buttons/CloseAll/Caption}}",
            "description": "{{$:/language/Buttons/CloseAll/Hint}}",
            "text": "<$button message=\"tm-close-all-tiddlers\" tooltip={{$:/language/Buttons/CloseAll/Hint}} aria-label={{$:/language/Buttons/CloseAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/CloseAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/control-panel": {
            "title": "$:/core/ui/Buttons/control-panel",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/options-button}} {{$:/language/Buttons/ControlPanel/Caption}}",
            "description": "{{$:/language/Buttons/ControlPanel/Hint}}",
            "text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/ControlPanel\" tooltip={{$:/language/Buttons/ControlPanel/Hint}} aria-label={{$:/language/Buttons/ControlPanel/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/options-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/ControlPanel/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/ControlPanel]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/encryption": {
            "title": "$:/core/ui/Buttons/encryption",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/locked-padlock}} {{$:/language/Buttons/Encryption/Caption}}",
            "description": "{{$:/language/Buttons/Encryption/Hint}}",
            "text": "\\whitespace trim\n<$reveal type=\"match\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-clear-password\" tooltip={{$:/language/Buttons/Encryption/ClearPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/ClearPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/locked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/ClearPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=\"$:/isEncrypted\" text=\"yes\">\n<$button message=\"tm-set-password\" tooltip={{$:/language/Buttons/Encryption/SetPassword/Hint}} aria-label={{$:/language/Buttons/Encryption/SetPassword/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/unlocked-padlock}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Encryption/SetPassword/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/export-page": {
            "title": "$:/core/ui/Buttons/export-page",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportPage/Caption}}",
            "description": "{{$:/language/Buttons/ExportPage/Hint}}",
            "text": "<$macrocall $name=\"exportButton\" exportFilter=\"[!is[system]sort[title]]\" lingoBase=\"$:/language/Buttons/ExportPage/\"/>"
        },
        "$:/core/ui/Buttons/fold-all": {
            "title": "$:/core/ui/Buttons/fold-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/fold-all-button}} {{$:/language/Buttons/FoldAll/Caption}}",
            "description": "{{$:/language/Buttons/FoldAll/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/FoldAll/Hint}} aria-label={{$:/language/Buttons/FoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FoldAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/full-screen": {
            "title": "$:/core/ui/Buttons/full-screen",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/full-screen-button}} {{$:/language/Buttons/FullScreen/Caption}}",
            "description": "{{$:/language/Buttons/FullScreen/Hint}}",
            "text": "<$button message=\"tm-full-screen\" tooltip={{$:/language/Buttons/FullScreen/Hint}} aria-label={{$:/language/Buttons/FullScreen/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/full-screen-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/FullScreen/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/home": {
            "title": "$:/core/ui/Buttons/home",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/home-button}} {{$:/language/Buttons/Home/Caption}}",
            "description": "{{$:/language/Buttons/Home/Hint}}",
            "text": "<$button message=\"tm-home\" tooltip={{$:/language/Buttons/Home/Hint}} aria-label={{$:/language/Buttons/Home/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/home-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Home/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/import": {
            "title": "$:/core/ui/Buttons/import",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/import-button}} {{$:/language/Buttons/Import/Caption}}",
            "description": "{{$:/language/Buttons/Import/Hint}}",
            "text": "<div class=\"tc-file-input-wrapper\">\n<$button tooltip={{$:/language/Buttons/Import/Hint}} aria-label={{$:/language/Buttons/Import/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/import-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Import/Caption}}/></span>\n</$list>\n</$button>\n<$browse tooltip={{$:/language/Buttons/Import/Hint}}/>\n</div>"
        },
        "$:/core/ui/Buttons/language": {
            "title": "$:/core/ui/Buttons/language",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/globe}} {{$:/language/Buttons/Language/Caption}}",
            "description": "{{$:/language/Buttons/Language/Hint}}",
            "text": "\\whitespace trim\n\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/language\">> tooltip={{$:/language/Buttons/Language/Hint}} aria-label={{$:/language/Buttons/Language/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value={{$:/language}}>\n<$image source=<<flag-title>>/>\n</$set>\n</span>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Language/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/language\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/languageswitcher}}\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/manager": {
            "title": "$:/core/ui/Buttons/manager",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/list}} {{$:/language/Buttons/Manager/Caption}}",
            "description": "{{$:/language/Buttons/Manager/Hint}}",
            "text": "\\whitespace trim\n\\define manager-button(class)\n<$button to=\"$:/Manager\" tooltip={{$:/language/Buttons/Manager/Hint}} aria-label={{$:/language/Buttons/Manager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/list}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Manager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/Manager]]\" emptyMessage=<<manager-button>>>\n<<manager-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/more-page-actions": {
            "title": "$:/core/ui/Buttons/more-page-actions",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "text": "\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/More/Caption}}/></span>\n</$list>\n</$button><$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"below\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]] -[[$:/core/ui/Buttons/more-page-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
        },
        "$:/core/ui/Buttons/new-image": {
            "title": "$:/core/ui/Buttons/new-image",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-image-button}} {{$:/language/Buttons/NewImage/Caption}}",
            "description": "{{$:/language/Buttons/NewImage/Hint}}",
            "text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/NewImage/Hint}} aria-label={{$:/language/Buttons/NewImage/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-image}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-image-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewImage/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/core/ui/Buttons/new-journal": {
            "title": "$:/core/ui/Buttons/new-journal",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournal/Caption}}",
            "description": "{{$:/language/Buttons/NewJournal/Hint}}",
            "text": "\\whitespace trim\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournal/Hint}} aria-label={{$:/language/Buttons/NewJournal/Caption}} class=<<tv-config-toolbar-class>> actions={{$:/core/ui/Actions/new-journal}}>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewJournal/Caption}}/></span>\n</$list>\n</$button>\n\\end\n<<journalButton>>\n"
        },
        "$:/core/ui/Buttons/new-tiddler": {
            "title": "$:/core/ui/Buttons/new-tiddler",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/new-button}} {{$:/language/Buttons/NewTiddler/Caption}}",
            "description": "{{$:/language/Buttons/NewTiddler/Hint}}",
            "text": "\\whitespace trim\n<$button actions={{$:/core/ui/Actions/new-tiddler}} tooltip={{$:/language/Buttons/NewTiddler/Hint}} aria-label={{$:/language/Buttons/NewTiddler/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewTiddler/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/core/ui/Buttons/palette": {
            "title": "$:/core/ui/Buttons/palette",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/palette}} {{$:/language/Buttons/Palette/Caption}}",
            "description": "{{$:/language/Buttons/Palette/Hint}}",
            "text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/palette\">> tooltip={{$:/language/Buttons/Palette/Hint}} aria-label={{$:/language/Buttons/Palette/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/palette}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Palette/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/palette\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\" style=\"font-size:0.7em;\">\n{{$:/snippets/paletteswitcher}}\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/print": {
            "title": "$:/core/ui/Buttons/print",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/print-button}} {{$:/language/Buttons/Print/Caption}}",
            "description": "{{$:/language/Buttons/Print/Hint}}",
            "text": "<$button message=\"tm-print\" tooltip={{$:/language/Buttons/Print/Hint}} aria-label={{$:/language/Buttons/Print/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/print-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Print/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/refresh": {
            "title": "$:/core/ui/Buttons/refresh",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/refresh-button}} {{$:/language/Buttons/Refresh/Caption}}",
            "description": "{{$:/language/Buttons/Refresh/Hint}}",
            "text": "<$button message=\"tm-browser-refresh\" tooltip={{$:/language/Buttons/Refresh/Hint}} aria-label={{$:/language/Buttons/Refresh/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/refresh-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Refresh/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/save-wiki": {
            "title": "$:/core/ui/Buttons/save-wiki",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/save-button}} {{$:/language/Buttons/SaveWiki/Caption}}",
            "description": "{{$:/language/Buttons/SaveWiki/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"site-title\" text={{$:/config/SaveWikiButton/Filename}}>\n<$action-sendmessage $message=\"tm-save-wiki\" $param={{$:/config/SaveWikiButton/Template}} filename=<<site-title>>/>\n</$wikify>\n<span class=\"tc-dirty-indicator\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/save-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>\n</$list>\n</span>\n</$button>"
        },
        "$:/core/ui/Buttons/storyview": {
            "title": "$:/core/ui/Buttons/storyview",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/storyview-classic}} {{$:/language/Buttons/StoryView/Caption}}",
            "description": "{{$:/language/Buttons/StoryView/Hint}}",
            "text": "\\whitespace trim\n\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/storyview\">> tooltip={{$:/language/Buttons/StoryView/Hint}} aria-label={{$:/language/Buttons/StoryView/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n<$set name=\"storyview\" value={{$:/view}}>\n<$transclude tiddler=<<icon>>/>\n</$set>\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/StoryView/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/storyview\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n{{$:/snippets/viewswitcher}}\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/tag-manager": {
            "title": "$:/core/ui/Buttons/tag-manager",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/tag-button}} {{$:/language/Buttons/TagManager/Caption}}",
            "description": "{{$:/language/Buttons/TagManager/Hint}}",
            "text": "\\whitespace trim\n\\define control-panel-button(class)\n<$button to=\"$:/TagManager\" tooltip={{$:/language/Buttons/TagManager/Hint}} aria-label={{$:/language/Buttons/TagManager/Caption}} class=\"\"\"$(tv-config-toolbar-class)$ $class$\"\"\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/tag-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/TagManager/Caption}}/></span>\n</$list>\n</$button>\n\\end\n\n<$list filter=\"[list[$:/StoryList]] +[field:title[$:/TagManager]]\" emptyMessage=<<control-panel-button>>>\n<<control-panel-button \"tc-selected\">>\n</$list>\n"
        },
        "$:/core/ui/Buttons/theme": {
            "title": "$:/core/ui/Buttons/theme",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/theme-button}} {{$:/language/Buttons/Theme/Caption}}",
            "description": "{{$:/language/Buttons/Theme/Hint}}",
            "text": "\\whitespace trim\n<span class=\"tc-popup-keep\">\n<$button popup=<<qualify \"$:/state/popup/theme\">> tooltip={{$:/language/Buttons/Theme/Hint}} aria-label={{$:/language/Buttons/Theme/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/theme-button}}\n</$list>\n<$text text=\" \"/>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Theme/Caption}}/></span>\n</$list>\n</$button>\n</span>\n<$reveal state=<<qualify \"$:/state/popup/theme\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$linkcatcher to=\"$:/theme\">\n{{$:/snippets/themeswitcher}}\n</$linkcatcher>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/timestamp": {
            "title": "$:/core/ui/Buttons/timestamp",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/timestamp-on}} {{$:/language/Buttons/Timestamp/Caption}}",
            "description": "{{$:/language/Buttons/Timestamp/Hint}}",
            "text": "\\whitespace trim\n<$reveal type=\"nomatch\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/On/Hint}} aria-label={{$:/language/Buttons/Timestamp/On/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"yes\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-on}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/On/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=\"$:/config/TimestampDisable\" text=\"yes\">\n<$button tooltip={{$:/language/Buttons/Timestamp/Off/Hint}} aria-label={{$:/language/Buttons/Timestamp/Off/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-setfield $tiddler=\"$:/config/TimestampDisable\" $value=\"no\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/timestamp-off}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/Timestamp/Off/Caption}}/></span>\n</$list>\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/unfold-all": {
            "title": "$:/core/ui/Buttons/unfold-all",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/core/images/unfold-all-button}} {{$:/language/Buttons/UnfoldAll/Caption}}",
            "description": "{{$:/language/Buttons/UnfoldAll/Hint}}",
            "text": "<$button tooltip={{$:/language/Buttons/UnfoldAll/Hint}} aria-label={{$:/language/Buttons/UnfoldAll/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-unfold-all-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-all-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/UnfoldAll/Caption}}/></span>\n</$list>\n</$button>"
        },
        "$:/core/ui/PageTemplate/pagecontrols": {
            "title": "$:/core/ui/PageTemplate/pagecontrols",
            "text": "\\whitespace trim\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-page-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n<$set name=\"hidden\" value=<<config-title>>>\n<$list filter=\"[<hidden>!text[hide]]\" storyview=\"pop\" variable=\"ignore\">\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n</$set>\n</$list>\n</$set>\n</$list>\n</div>\n"
        },
        "$:/core/ui/PageStylesheet": {
            "title": "$:/core/ui/PageStylesheet",
            "text": "\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"currentTiddler\" value={{$:/language}}>\n\n<$set name=\"languageTitle\" value={{!!name}}>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/PageTemplate/alerts": {
            "title": "$:/core/ui/PageTemplate/alerts",
            "tags": "$:/tags/PageTemplate",
            "text": "<div class=\"tc-alerts\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Alert]!has[draft.of]]\" template=\"$:/core/ui/AlertTemplate\" storyview=\"pop\"/>\n\n</div>\n"
        },
        "$:/core/ui/PageTemplate/drafts": {
            "title": "$:/core/ui/PageTemplate/drafts",
            "tags": "$:/tags/PageTemplate",
            "text": "\\whitespace trim\n<$reveal state=\"$:/status/IsReadOnly\" type=\"nomatch\" text=\"yes\" tag=\"div\" class=\"tc-drafts-list\">\n<$list filter=\"[has[draft.of]!sort[modified]] -[list[$:/StoryList]]\">\n<$link>\n{{$:/core/images/edit-button}} <$text text=<<currentTiddler>>/>\n</$link>\n</$list>\n</$reveal>\n"
        },
        "$:/core/ui/PageTemplate/pluginreloadwarning": {
            "title": "$:/core/ui/PageTemplate/pluginreloadwarning",
            "tags": "$:/tags/PageTemplate",
            "text": "\\define lingo-base() $:/language/\n\n<$list filter=\"[{$:/status/RequireReloadDueToPluginChange}match[yes]]\">\n\n<$reveal type=\"nomatch\" state=\"$:/temp/HidePluginWarning\" text=\"yes\">\n\n<div class=\"tc-plugin-reload-warning\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<<lingo PluginReloadWarning>> <$button set=\"$:/temp/HidePluginWarning\" setTo=\"yes\" class=\"tc-btn-invisible\">{{$:/core/images/close-button}}</$button>\n\n</$set>\n\n</div>\n\n</$reveal>\n\n</$list>\n"
        },
        "$:/core/ui/PageTemplate/sidebar": {
            "title": "$:/core/ui/PageTemplate/sidebar",
            "tags": "$:/tags/PageTemplate",
            "text": "\\whitespace trim\n\\define config-title()\n$:/config/SideBarSegments/Visibility/$(listItem)$\n\\end\n\n<$scrollable fallthrough=\"no\" class=\"tc-sidebar-scrollable\">\n\n<div class=\"tc-sidebar-header\">\n\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SideBarSegment]!has[draft.of]]\" variable=\"listItem\">\n\n<$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"  tag=\"div\">\n\n<$transclude tiddler=<<listItem>> mode=\"block\"/>\n\n</$reveal>\n\n</$list>\n\n</$reveal>\n\n</div>\n\n</$scrollable>\n"
        },
        "$:/core/ui/PageTemplate/story": {
            "title": "$:/core/ui/PageTemplate/story",
            "tags": "$:/tags/PageTemplate",
            "text": "\\whitespace trim\n<section class=\"tc-story-river\">\n\n<section class=\"story-backdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/AboveStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n<$list filter=\"[list[$:/StoryList]]\" history=\"$:/HistoryList\" template={{$:/config/ui/ViewTemplate}} editTemplate={{$:/config/ui/EditTemplate}} storyview={{$:/view}} emptyMessage={{$:/config/EmptyStoryMessage}}/>\n\n<section class=\"story-frontdrop\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/BelowStory]!has[draft.of]]\">\n\n<$transclude/>\n\n</$list>\n\n</section>\n\n</section>\n"
        },
        "$:/core/ui/PageTemplate/topleftbar": {
            "title": "$:/core/ui/PageTemplate/topleftbar",
            "tags": "$:/tags/PageTemplate",
            "text": "<span class=\"tc-topbar tc-topbar-left\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopLeftBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
        },
        "$:/core/ui/PageTemplate/toprightbar": {
            "title": "$:/core/ui/PageTemplate/toprightbar",
            "tags": "$:/tags/PageTemplate",
            "text": "<span class=\"tc-topbar tc-topbar-right\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TopRightBar]!has[draft.of]]\" variable=\"listItem\" storyview=\"pop\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$list>\n\n</span>\n"
        },
        "$:/core/ui/PageTemplate": {
            "title": "$:/core/ui/PageTemplate",
            "text": "\\whitespace trim\n\\define containerClasses()\ntc-page-container tc-page-view-$(storyviewTitle)$ tc-language-$(languageTitle)$\n\\end\n\\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\n\n<$set name=\"tv-config-toolbar-icons\" value={{$:/config/Toolbar/Icons}}>\n\n<$set name=\"tv-config-toolbar-text\" value={{$:/config/Toolbar/Text}}>\n\n<$set name=\"tv-config-toolbar-class\" value={{$:/config/Toolbar/ButtonClass}}>\n\n<$set name=\"tv-enable-drag-and-drop\" value={{$:/config/DragAndDrop/Enable}}>\n\n<$set name=\"tv-show-missing-links\" value={{$:/config/MissingLinks}}>\n\n<$set name=\"storyviewTitle\" value={{$:/view}}>\n\n<$set name=\"languageTitle\" value={{{ [{$:/language}get[name]] }}}>\n\n<div class=<<containerClasses>>>\n\n<$navigator story=\"$:/StoryList\" history=\"$:/HistoryList\" openLinkFromInsideRiver={{$:/config/Navigation/openLinkFromInsideRiver}} openLinkFromOutsideRiver={{$:/config/Navigation/openLinkFromOutsideRiver}} relinkOnRename={{$:/config/RelinkOnRename}}>\n\n<$dropzone enable=<<tv-enable-drag-and-drop>>>\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageTemplate]!has[draft.of]]\" variable=\"listItem\">\n\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n\n</$dropzone>\n\n</$navigator>\n\n</div>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</$set>\n"
        },
        "$:/PaletteManager": {
            "title": "$:/PaletteManager",
            "text": "\\define lingo-base() $:/language/ControlPanel/Palette/Editor/\n\\define describePaletteColour(colour)\n<$transclude tiddler=\"$:/language/Docs/PaletteColours/$colour$\"><$text text=\"$colour$\"/></$transclude>\n\\end\n\\define edit-colour-placeholder()\n edit $(colourName)$\n\\end\n\\define colour-tooltip(showhide) $showhide$ editor for $(newColourName)$ \n\\define resolve-colour(macrocall)\n\\import $:/core/macros/utils\n\\whitespace trim\n<$wikify name=\"name\" text=\"\"\"$macrocall$\"\"\">\n<<name>>\n</$wikify>\n\\end\n\\define delete-colour-index-actions() <$action-setfield $index=<<colourName>>/>\n\\define palette-manager-colour-row-segment()\n\\whitespace trim\n<$edit-text index=<<colourName>> tag=\"input\" placeholder=<<edit-colour-placeholder>> default=\"\"/>\n<br>\n<$edit-text index=<<colourName>> type=\"color\" tag=\"input\" class=\"tc-palette-manager-colour-input\"/>\n<$list filter=\"[<currentTiddler>getindex<colourName>removeprefix[<<]removesuffix[>>]] [<currentTiddler>getindex<colourName>removeprefix[<$]removesuffix[/>]]\" variable=\"ignore\">\n<$set name=\"state\" value={{{ [[$:/state/palettemanager/]addsuffix<currentTiddler>addsuffix[/]addsuffix<colourName>] }}}>\n<$wikify name=\"newColourName\" text=\"\"\"<$macrocall $name=\"resolve-colour\" macrocall={{{ [<currentTiddler>getindex<colourName>] }}}/>\"\"\">\n<$reveal state=<<state>> type=\"nomatch\" text=\"show\">\n<$button tooltip=<<colour-tooltip show>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" set=<<state>> setTo=\"show\">{{$:/core/images/down-arrow}}&nbsp;<$text text=<<newColourName>>/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$button tooltip=<<colour-tooltip hide>> aria-label=<<colour-tooltip show>> class=\"tc-btn-invisible\" actions=\"\"\"<$action-deletetiddler $tiddler=<<state>>/>\"\"\">{{$:/core/images/up-arrow}}&nbsp;<$text text=<<newColourName>>/></$button><br>\n</$reveal>\n<$reveal state=<<state>> type=\"match\" text=\"show\">\n<$set name=\"colourName\" value=<<newColourName>>>\n<br>\n<<palette-manager-colour-row-segment>>\n<br><br>\n</$set>\n</$reveal>\n</$wikify>\n</$set>\n</$list>\n\\end\n\\define palette-manager-colour-row()\n\\whitespace trim\n<tr>\n<td>\n<span style=\"float:right;\">\n<$button tooltip=<<lingo Delete/Hint>> aria-label=<<lingo Delete/Hint>> class=\"tc-btn-invisible\" actions=<<delete-colour-index-actions>>>\n{{$:/core/images/delete-button}}</$button>\n</span>\n''<$macrocall $name=\"describePaletteColour\" colour=<<colourName>>/>''<br/>\n<$macrocall $name=\"colourName\" $output=\"text/plain\"/>\n</td>\n<td>\n<<palette-manager-colour-row-segment>>\n</td>\n</tr>\n\\end\n\\define palette-manager-table()\n\\whitespace trim\n<table>\n<tbody>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]indexes[]]\" variable=\"colourName\">\n<$list filter=\"[<currentTiddler>indexes[]removeprefix<colourName>suffix[]]\" variable=\"ignore\" emptyMessage=\"\"\"\n<$list filter=\"[{$:/state/palettemanager/showexternal}removeprefix[yes]suffix[]]\" variable=\"ignore\">\n<<palette-manager-colour-row>>\n</$list>\n\"\"\">\n<<palette-manager-colour-row>>\n</$list>\n</$list>\n</tbody>\n</table>\n\\end\n<$set name=\"currentTiddler\" value={{$:/palette}}>\n\n<<lingo Prompt>> <$link to={{$:/palette}}><$macrocall $name=\"currentTiddler\" $output=\"text/plain\"/></$link>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\" variable=\"listItem\">\n<<lingo Prompt/Modified>>\n<$button message=\"tm-delete-tiddler\" param={{$:/palette}}><<lingo Reset/Caption>></$button>\n</$list>\n\n<$list filter=\"[all[current]is[shadow]!is[tiddler]]\" variable=\"listItem\">\n<<lingo Clone/Prompt>>\n</$list>\n\n<$button message=\"tm-new-tiddler\" param={{$:/palette}}><<lingo Clone/Caption>></$button>\n\n<$checkbox tiddler=\"$:/state/palettemanager/showexternal\" field=\"text\" checked=\"yes\" unchecked=\"no\">&nbsp;<<lingo Names/External/Show>></$checkbox>\n\n<<palette-manager-table>>\n"
        },
        "$:/core/ui/PluginInfo": {
            "title": "$:/core/ui/PluginInfo",
            "text": "\\define localised-info-tiddler-title()\n$(currentTiddler)$/$(languageTitle)$/$(currentTab)$\n\\end\n\\define info-tiddler-title()\n$(currentTiddler)$/$(currentTab)$\n\\end\n\\define default-tiddler-title()\n$:/core/ui/PluginInfo/Default/$(currentTab)$\n\\end\n<$transclude tiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<localised-info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<currentTiddler>> subtiddler=<<info-tiddler-title>> mode=\"block\">\n<$transclude tiddler=<<default-tiddler-title>> mode=\"block\">\n{{$:/language/ControlPanel/Plugin/NoInfoFound/Hint}}\n</$transclude>\n</$transclude>\n</$transclude>\n</$transclude>\n"
        },
        "$:/core/ui/PluginInfo/Default/contents": {
            "title": "$:/core/ui/PluginInfo/Default/contents",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link />\n</li>\n</$list>\n</ul>\n"
        },
        "$:/core/ui/PluginListItemTemplate": {
            "title": "$:/core/ui/PluginListItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}><$view field=\"description\"><$view field=\"title\"/></$view></$link>\n</div>"
        },
        "$:/core/ui/SearchResults": {
            "title": "$:/core/ui/SearchResults",
            "text": "<div class=\"tc-search-results\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]butfirst[]limit[1]]\" emptyMessage=\"\"\"\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\">\n<$transclude mode=\"block\"/>\n</$list>\n\"\"\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SearchResults]!has[draft.of]]\" default={{$:/config/SearchResults/Default}}/>\n\n</$list>\n\n</div>\n"
        },
        "$:/core/ui/SideBar/More": {
            "title": "$:/core/ui/SideBar/More",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/More/Caption}}",
            "text": "<div class=\"tc-more-sidebar\">\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/MoreSideBar]!has[draft.of]]\" default={{$:/config/DefaultMoreSidebarTab}} state=\"$:/state/tab/moresidebar\" class=\"tc-vertical tc-sidebar-tabs-more\" />\n</div>"
        },
        "$:/core/ui/SideBar/Open": {
            "title": "$:/core/ui/SideBar/Open",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Open/Caption}}",
            "text": "\\whitespace trim\n\\define lingo-base() $:/language/CloseAll/\n\n\\define drop-actions()\n<$action-listops $tiddler=<<tv-story-list>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define placeholder()\n<div class=\"tc-droppable-placeholder\"/>\n\\end\n\n\\define droppable-item(button)\n\\whitespace trim\n<$droppable actions=<<drop-actions>> enable=<<tv-allow-drag-and-drop>>>\n<<placeholder>>\n<div>\n$button$\n</div>\n</$droppable>\n\\end\n\n<div class=\"tc-sidebar-tab-open\">\n<$list filter=\"[list<tv-story-list>]\" history=<<tv-history-list>> storyview=\"pop\">\n<div class=\"tc-sidebar-tab-open-item\">\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=\"tc-btn-invisible tc-btn-mini\">{{$:/core/images/close-button}}</$button>&nbsp;<$link to={{!!title}}><$view field=\"title\"/></$link>\"\"\"/>\n</div>\n</$list>\n<$tiddler tiddler=\"\">\n<div>\n<$macrocall $name=\"droppable-item\" button=\"\"\"<$button message=\"tm-close-all-tiddlers\" class=\"tc-btn-invisible tc-btn-mini\"><<lingo Button>></$button>\"\"\"/>\n</div>\n</$tiddler>\n</div>\n"
        },
        "$:/core/ui/SideBar/Recent": {
            "title": "$:/core/ui/SideBar/Recent",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Recent/Caption}}",
            "text": "<$macrocall $name=\"timeline\" format={{$:/language/RecentChanges/DateFormat}}/>\n"
        },
        "$:/core/ui/SideBar/Tools": {
            "title": "$:/core/ui/SideBar/Tools",
            "tags": "$:/tags/SideBar",
            "caption": "{{$:/language/SideBar/Tools/Caption}}",
            "text": "\\define lingo-base() $:/language/ControlPanel/\n\\define config-title()\n$:/config/PageControlButtons/Visibility/$(listItem)$\n\\end\n\n<<lingo Basics/Version/Prompt>> <<version>>\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/PageControls]!has[draft.of]]\" variable=\"listItem\">\n\n<div style=\"position:relative;\" class={{{ [<listItem>encodeuricomponent[]addprefix[tc-btn-]] }}}>\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</div>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/SideBarLists": {
            "title": "$:/core/ui/SideBarLists",
            "text": "<$transclude tiddler=\"$:/core/ui/SideBarSegments/search\"/>\n\n<$transclude tiddler=\"$:/core/ui/SideBarSegments/tabs\"/>\n\n"
        },
        "$:/core/ui/SideBarSegments/page-controls": {
            "title": "$:/core/ui/SideBarSegments/page-controls",
            "tags": "$:/tags/SideBarSegment",
            "text": "{{||$:/core/ui/PageTemplate/pagecontrols}}\n"
        },
        "$:/core/ui/SideBarSegments/search": {
            "title": "$:/core/ui/SideBarSegments/search",
            "tags": "$:/tags/SideBarSegment",
            "text": "\\whitespace trim\n<div class=\"tc-sidebar-lists tc-sidebar-search\">\n\n<$set name=\"searchTiddler\" value=\"$:/temp/search\">\n<div class=\"tc-search\">\n<$edit-text tiddler=\"$:/temp/search\" type=\"search\" tag=\"input\" focus={{$:/config/Search/AutoFocus}} focusPopup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-popup-handle\"/>\n<$reveal state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n<$button tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/advancedsearch\" text={{$:/temp/search}}/>\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\"/>\n<$action-navigate $to=\"$:/AdvancedSearch\"/>\n{{$:/core/images/advanced-search-button}}\n</$button>\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/search\" text=\"\" />\n{{$:/core/images/close-button}}\n</$button>\n<$button popup=<<qualify \"$:/state/popup/search-dropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" variable=\"listItem\">\n<$set name=\"searchTerm\" value={{{ [<searchTiddler>get[text]] }}}>\n<$set name=\"resultCount\" value=\"\"\"<$count filter=\"[!is[system]search<searchTerm>]\"/>\"\"\">\n{{$:/language/Search/Matches}}\n</$set>\n</$set>\n</$list>\n</$button>\n</$reveal>\n<$reveal state=\"$:/temp/search\" type=\"match\" text=\"\">\n<$button to=\"$:/AdvancedSearch\" tooltip={{$:/language/Buttons/AdvancedSearch/Hint}} aria-label={{$:/language/Buttons/AdvancedSearch/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/advanced-search-button}}\n</$button>\n</$reveal>\n</div>\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown-wrapper\" state=\"$:/temp/search\" type=\"nomatch\" text=\"\">\n\n<$reveal tag=\"div\" class=\"tc-block-dropdown tc-search-drop-down tc-popup-handle\" state=<<qualify \"$:/state/popup/search-dropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n\n<$list filter=\"[{$:/temp/search}minlength{$:/config/Search/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n\n{{$:/core/ui/SearchResults}}\n\n</$list>\n\n</$reveal>\n\n</$reveal>\n\n</$set>\n\n</div>\n"
        },
        "$:/core/ui/SideBarSegments/site-subtitle": {
            "title": "$:/core/ui/SideBarSegments/site-subtitle",
            "tags": "$:/tags/SideBarSegment",
            "text": "<div class=\"tc-site-subtitle\">\n\n<$transclude tiddler=\"$:/SiteSubtitle\" mode=\"inline\"/>\n\n</div>\n"
        },
        "$:/core/ui/SideBarSegments/site-title": {
            "title": "$:/core/ui/SideBarSegments/site-title",
            "tags": "$:/tags/SideBarSegment",
            "text": "<h1 class=\"tc-site-title\">\n\n<$transclude tiddler=\"$:/SiteTitle\" mode=\"inline\"/>\n\n</h1>\n"
        },
        "$:/core/ui/SideBarSegments/tabs": {
            "title": "$:/core/ui/SideBarSegments/tabs",
            "tags": "$:/tags/SideBarSegment",
            "text": "<div class=\"tc-sidebar-lists tc-sidebar-tabs\">\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/SideBar]!has[draft.of]]\" default={{$:/config/DefaultSidebarTab}} state=\"$:/state/tab/sidebar\" class=\"tc-sidebar-tabs-main\"/>\n\n</div>\n"
        },
        "$:/TagManager": {
            "title": "$:/TagManager",
            "icon": "$:/core/images/tag-button",
            "color": "#bbb",
            "text": "\\define lingo-base() $:/language/TagManager/\n\\define iconEditorTab(type)\n\\whitespace trim\n<$link to=\"\"><<lingo Icons/None>></$link>\n<$list filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[sort[title]] +[$type$is[system]]\">\n<$link to={{!!title}}>\n<$transclude/> <$view field=\"title\"/>\n</$link>\n</$list>\n\\end\n\\define iconEditor(title)\n\\whitespace trim\n<div class=\"tc-drop-down-wrapper\">\n<$button popupTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal stateTitle={{{ [[$:/state/popup/icon/]addsuffix<__title__>] }}} type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$linkcatcher actions=\"\"\"<$action-setfield $tiddler=<<__title__>> icon=<<navigateTo>>/>\"\"\">\n<<iconEditorTab type:\"!\">>\n<hr/>\n<<iconEditorTab type:\"\">>\n</$linkcatcher>\n</div>\n</$reveal>\n</div>\n\\end\n\\define toggleButton(state)\n\\whitespace trim\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"closed\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"open\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n<$reveal stateTitle=<<__state__>> type=\"match\" text=\"open\" default=\"closed\">\n<$button setTitle=<<__state__>> setTo=\"closed\" class=\"tc-btn-invisible tc-btn-dropdown\" selectedClass=\"tc-selected\">\n{{$:/core/images/info-button}}\n</$button>\n</$reveal>\n\\end\n\\whitespace trim\n<table class=\"tc-tag-manager-table\">\n<tbody>\n<tr>\n<th><<lingo Colour/Heading>></th>\n<th class=\"tc-tag-manager-tag\"><<lingo Tag/Heading>></th>\n<th><<lingo Count/Heading>></th>\n<th><<lingo Icon/Heading>></th>\n<th><<lingo Info/Heading>></th>\n</tr>\n<$list filter=\"[tags[]!is[system]sort[title]]\">\n<tr>\n<td><$edit-text field=\"color\" tag=\"input\" type=\"color\"/></td>\n<td>{{||$:/core/ui/TagTemplate}}</td>\n<td><$count filter=\"[all[current]tagging[]]\"/></td>\n<td>\n<$macrocall $name=\"iconEditor\" title={{!!title}}/>\n</td>\n<td>\n<$macrocall $name=\"toggleButton\" state={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} /> \n</td>\n</tr>\n<tr>\n<td></td>\n<td colspan=\"4\">\n<$reveal stateTitle={{{ [[$:/state/tag-manager/]addsuffix<currentTiddler>] }}} type=\"match\" text=\"open\" default=\"\">\n<table>\n<tbody>\n<tr><td><<lingo Colour/Heading>></td><td><$edit-text field=\"color\" tag=\"input\" type=\"text\" size=\"9\"/></td></tr>\n<tr><td><<lingo Icon/Heading>></td><td><$edit-text field=\"icon\" tag=\"input\" size=\"45\"/></td></tr>\n</tbody>\n</table>\n</$reveal>\n</td>\n</tr>\n</$list>\n<tr>\n<td></td>\n<td style=\"position:relative;\">\n{{$:/core/ui/UntaggedTemplate}}\n</td>\n<td>\n<small class=\"tc-menu-list-count\"><$count filter=\"[untagged[]!is[system]] -[tags[]]\"/></small>\n</td>\n<td></td>\n<td></td>\n</tr>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/TagTemplate": {
            "title": "$:/core/ui/TagTemplate",
            "text": "\\whitespace trim\n<span class=\"tc-tag-list-item\">\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<qualify \"$:/state/popup/tag\">> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n"
        },
        "$:/core/ui/TiddlerFieldTemplate": {
            "title": "$:/core/ui/TiddlerFieldTemplate",
            "text": "<tr class=\"tc-view-field\">\n<td class=\"tc-view-field-name\">\n<$text text=<<listItem>>/>\n</td>\n<td class=\"tc-view-field-value\">\n<$view field=<<listItem>>/>\n</td>\n</tr>"
        },
        "$:/core/ui/TiddlerFields": {
            "title": "$:/core/ui/TiddlerFields",
            "text": "<table class=\"tc-view-field-table\">\n<tbody>\n<$list filter=\"[all[current]fields[]sort[title]] -text\" template=\"$:/core/ui/TiddlerFieldTemplate\" variable=\"listItem\"/>\n</tbody>\n</table>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced/PluginInfo": {
            "title": "$:/core/ui/TiddlerInfo/Advanced/PluginInfo",
            "tags": "$:/tags/TiddlerInfo/Advanced",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/PluginInfo/\n<$list filter=\"[all[current]has[plugin-type]]\">\n\n! <<lingo Heading>>\n\n<<lingo Hint>>\n<ul>\n<$list filter=\"[all[current]plugintiddlers[]sort[title]]\" emptyMessage=<<lingo Empty/Hint>>>\n<li>\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</li>\n</$list>\n</ul>\n\n</$list>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo": {
            "title": "$:/core/ui/TiddlerInfo/Advanced/ShadowInfo",
            "tags": "$:/tags/TiddlerInfo/Advanced",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/Advanced/ShadowInfo/\n<$set name=\"infoTiddler\" value=<<currentTiddler>>>\n\n''<<lingo Heading>>''\n\n<$list filter=\"[all[current]!is[shadow]]\">\n\n<<lingo NotShadow/Hint>>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]]\">\n\n<<lingo Shadow/Hint>>\n\n<$list filter=\"[all[current]shadowsource[]]\">\n\n<$set name=\"pluginTiddler\" value=<<currentTiddler>>>\n<<lingo Shadow/Source>>\n</$set>\n\n</$list>\n\n<$list filter=\"[all[current]is[shadow]is[tiddler]]\">\n\n<<lingo OverriddenShadow/Hint>>\n\n</$list>\n\n\n</$list>\n</$set>\n"
        },
        "$:/core/ui/TiddlerInfo/Advanced": {
            "title": "$:/core/ui/TiddlerInfo/Advanced",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Advanced/Caption}}",
            "text": "<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo/Advanced]!has[draft.of]]\" variable=\"listItem\">\n<$transclude tiddler=<<listItem>>/>\n\n</$list>\n"
        },
        "$:/core/ui/TiddlerInfo/Fields": {
            "title": "$:/core/ui/TiddlerInfo/Fields",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Fields/Caption}}",
            "text": "<$transclude tiddler=\"$:/core/ui/TiddlerFields\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/List": {
            "title": "$:/core/ui/TiddlerInfo/List",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/List/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[list{!!title}]\" emptyMessage=<<lingo List/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/Listed": {
            "title": "$:/core/ui/TiddlerInfo/Listed",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Listed/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]listed[]!is[system]]\" emptyMessage=<<lingo Listed/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/References": {
            "title": "$:/core/ui/TiddlerInfo/References",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/References/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]backlinks[]sort[title]]\" emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>"
        },
        "$:/core/ui/TiddlerInfo/Tagging": {
            "title": "$:/core/ui/TiddlerInfo/Tagging",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Tagging/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n<$list filter=\"[all[current]tagging[]]\" emptyMessage=<<lingo Tagging/Empty>> template=\"$:/core/ui/ListItemTemplate\"/>\n"
        },
        "$:/core/ui/TiddlerInfo/Tools": {
            "title": "$:/core/ui/TiddlerInfo/Tools",
            "tags": "$:/tags/TiddlerInfo",
            "caption": "{{$:/language/TiddlerInfo/Tools/Caption}}",
            "text": "\\define lingo-base() $:/language/TiddlerInfo/\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\">\n\n<$checkbox tiddler=<<config-title>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"show\"/> <$transclude tiddler=<<listItem>>/> <i class=\"tc-muted\"><$transclude tiddler=<<listItem>> field=\"description\"/></i>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n"
        },
        "$:/core/ui/TiddlerInfo": {
            "title": "$:/core/ui/TiddlerInfo",
            "text": "<div style=\"position:relative;\">\n<div class=\"tc-tiddler-controls\" style=\"position:absolute;right:0;\">\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=\"tc-btn-invisible\">\n{{$:/core/images/close-button}}\n</$button>\n</$reveal>\n</div>\n</div>\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfo]!has[draft.of]]\" default={{$:/config/TiddlerInfo/Default}}/>"
        },
        "$:/core/ui/TopBar/menu": {
            "title": "$:/core/ui/TopBar/menu",
            "tags": "$:/tags/TopRightBar",
            "text": "<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]!match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"no\" tooltip={{$:/language/Buttons/HideSideBar/Hint}} aria-label={{$:/language/Buttons/HideSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}}</$button>\n</$list>\n<$list filter=\"[[$:/state/sidebar]get[text]] +[else[yes]match[no]]\" variable=\"ignore\">\n<$button set=\"$:/state/sidebar\" setTo=\"yes\" tooltip={{$:/language/Buttons/ShowSideBar/Hint}} aria-label={{$:/language/Buttons/ShowSideBar/Caption}} class=\"tc-btn-invisible\">{{$:/core/images/chevron-left}}</$button>\n</$list>\n"
        },
        "$:/core/ui/UntaggedTemplate": {
            "title": "$:/core/ui/UntaggedTemplate",
            "text": "\\define lingo-base() $:/language/SideBar/\n<$button popup=<<qualify \"$:/state/popup/tag\">> class=\"tc-btn-invisible tc-untagged-label tc-tag-label\">\n<<lingo Tags/Untagged/Caption>>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/tag\">> type=\"popup\" position=\"below\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[untagged[]!is[system]] -[tags[]] +[sort[title]]\" template=\"$:/core/ui/ListItemTemplate\"/>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/body": {
            "title": "$:/core/ui/ViewTemplate/body",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal tag=\"div\" class=\"tc-tiddler-body\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" retain=\"yes\" animate=\"yes\">\n\n<$list filter=\"[all[current]!has[plugin-type]!field:hide-body[yes]]\">\n\n<$transclude>\n\n<$transclude tiddler=\"$:/language/MissingTiddler/Hint\"/>\n\n</$transclude>\n\n</$list>\n\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/classic": {
            "title": "$:/core/ui/ViewTemplate/classic",
            "tags": "$:/tags/ViewTemplate $:/tags/EditTemplate",
            "text": "\\define lingo-base() $:/language/ClassicWarning/\n<$list filter=\"[all[current]type[text/x-tiddlywiki]]\">\n<div class=\"tc-message-box\">\n\n<<lingo Hint>>\n\n<$button set=\"!!type\" setTo=\"text/vnd.tiddlywiki\"><<lingo Upgrade/Caption>></$button>\n\n</div>\n</$list>\n"
        },
        "$:/core/ui/ViewTemplate/import": {
            "title": "$:/core/ui/ViewTemplate/import",
            "tags": "$:/tags/ViewTemplate",
            "text": "\\define lingo-base() $:/language/Import/\n\n\\define buttons()\n<$button message=\"tm-delete-tiddler\" param=<<currentTiddler>>><<lingo Listing/Cancel/Caption>></$button>\n<$button message=\"tm-perform-import\" param=<<currentTiddler>>><<lingo Listing/Import/Caption>></$button>\n<<lingo Listing/Preview>> <$select tiddler=\"$:/state/importpreviewtype\" default=\"$:/core/ui/ImportPreviews/Text\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ImportPreview]!has[draft.of]]\">\n<option value=<<currentTiddler>>>{{!!caption}}</option>\n</$list>\n</$select>\n\\end\n\n<$list filter=\"[all[current]field:plugin-type[import]]\">\n\n<div class=\"tc-import\">\n\n<<lingo Listing/Hint>>\n\n<<buttons>>\n\n{{||$:/core/ui/ImportListing}}\n\n<<buttons>>\n\n</div>\n\n</$list>\n"
        },
        "$:/core/ui/ViewTemplate/plugin": {
            "title": "$:/core/ui/ViewTemplate/plugin",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$list filter=\"[all[current]has[plugin-type]] -[all[current]field:plugin-type[import]]\">\n<$set name=\"plugin-type\" value={{!!plugin-type}}>\n<$set name=\"default-popup-state\" value=\"yes\">\n<$set name=\"qualified-state\" value=<<qualify \"$:/state/plugin-info\">>>\n{{||$:/core/ui/Components/plugin-info}}\n</$set>\n</$set>\n</$set>\n</$list>\n"
        },
        "$:/core/ui/ViewTemplate/subtitle": {
            "title": "$:/core/ui/ViewTemplate/subtitle",
            "tags": "$:/tags/ViewTemplate",
            "text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-subtitle\">\n<$link to={{!!modifier}} />\n<$view field=\"modified\" format=\"date\" template={{$:/language/Tiddler/DateFormat}}/>\n</div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/tags": {
            "title": "$:/core/ui/ViewTemplate/tags",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" tag=\"div\" retain=\"yes\" animate=\"yes\">\n<div class=\"tc-tags-wrapper\"><$list filter=\"[all[current]tags[]sort[title]]\" template=\"$:/core/ui/TagTemplate\" storyview=\"pop\"/></div>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate/title": {
            "title": "$:/core/ui/ViewTemplate/title",
            "tags": "$:/tags/ViewTemplate",
            "text": "\\whitespace trim\n\\define title-styles()\nfill:$(foregroundColor)$;\n\\end\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<div class=\"tc-tiddler-title\">\n<div class=\"tc-titlebar\">\n<span class=\"tc-tiddler-controls\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]]\" variable=\"listItem\"><$reveal type=\"nomatch\" state=<<config-title>> text=\"hide\"><$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\"><$transclude tiddler=<<listItem>>/></$set></$reveal></$list>\n</span>\n<$set name=\"tv-wikilinks\" value={{$:/config/Tiddlers/TitleLinks}}>\n<$link>\n<$set name=\"foregroundColor\" value={{!!color}}>\n<span class=\"tc-tiddler-title-icon\" style=<<title-styles>>>\n<$transclude tiddler={{!!icon}}>\n<$transclude tiddler={{$:/config/DefaultTiddlerIcon}}/>\n</$transclude>\n</span>\n</$set>\n<$list filter=\"[all[current]removeprefix[$:/]]\">\n<h2 class=\"tc-title\" title={{$:/language/SystemTiddler/Tooltip}}>\n<span class=\"tc-system-title-prefix\">$:/</span><$text text=<<currentTiddler>>/>\n</h2>\n</$list>\n<$list filter=\"[all[current]!prefix[$:/]]\">\n<h2 class=\"tc-title\">\n<$view field=\"title\"/>\n</h2>\n</$list>\n</$link>\n</$set>\n</div>\n\n<$reveal type=\"nomatch\" text=\"\" default=\"\" state=<<tiddlerInfoState>> class=\"tc-tiddler-info tc-popup-handle\" animate=\"yes\" retain=\"yes\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TiddlerInfoSegment]!has[draft.of]] [[$:/core/ui/TiddlerInfo]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>> mode=\"block\"/></$list>\n\n</$reveal>\n</div>"
        },
        "$:/core/ui/ViewTemplate/unfold": {
            "title": "$:/core/ui/ViewTemplate/unfold",
            "tags": "$:/tags/ViewTemplate",
            "text": "<$reveal tag=\"div\" type=\"nomatch\" state=\"$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar\" text=\"hide\">\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=\"tc-fold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-up}}\n</$button>\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" stateTitle=<<folded-state>> text=\"show\" default=\"show\" retain=\"yes\" animate=\"yes\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=\"tc-unfold-banner\">\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n{{$:/core/images/chevron-down}}\n</$button>\n</$reveal>\n</$reveal>\n"
        },
        "$:/core/ui/ViewTemplate": {
            "title": "$:/core/ui/ViewTemplate",
            "text": "\\define folded-state()\n$:/state/folded/$(currentTiddler)$\n\\end\n\\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]\n<$vars storyTiddler=<<currentTiddler>> tiddlerInfoState=<<qualify \"$:/state/popup/tiddler-info\">>><div data-tiddler-title=<<currentTiddler>> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-view-frame [<currentTiddler>is[tiddler]then[tc-tiddler-exists]] [<currentTiddler>is[missing]!is[shadow]then[tc-tiddler-missing]] [<currentTiddler>is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [<currentTiddler>is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]] [<currentTiddler>is[system]then[tc-tiddler-system]] [{!!class}] [<currentTiddler>tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]\" variable=\"listItem\"><$transclude tiddler=<<listItem>>/></$list>\n</div>\n</$vars>\n"
        },
        "$:/core/ui/Buttons/clone": {
            "title": "$:/core/ui/Buttons/clone",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/clone-button}} {{$:/language/Buttons/Clone/Caption}}",
            "description": "{{$:/language/Buttons/Clone/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-new-tiddler\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/Clone/Hint}} aria-label={{$:/language/Buttons/Clone/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/clone-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Clone/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/close-others": {
            "title": "$:/core/ui/Buttons/close-others",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/close-others-button}} {{$:/language/Buttons/CloseOthers/Caption}}",
            "description": "{{$:/language/Buttons/CloseOthers/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-close-other-tiddlers\" param=<<currentTiddler>> tooltip={{$:/language/Buttons/CloseOthers/Hint}} aria-label={{$:/language/Buttons/CloseOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/CloseOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/close": {
            "title": "$:/core/ui/Buttons/close",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/close-button}} {{$:/language/Buttons/Close/Caption}}",
            "description": "{{$:/language/Buttons/Close/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-close-tiddler\" tooltip={{$:/language/Buttons/Close/Hint}} aria-label={{$:/language/Buttons/Close/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/close-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Close/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/edit": {
            "title": "$:/core/ui/Buttons/edit",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/edit-button}} {{$:/language/Buttons/Edit/Caption}}",
            "description": "{{$:/language/Buttons/Edit/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-edit-tiddler\" tooltip={{$:/language/Buttons/Edit/Hint}} aria-label={{$:/language/Buttons/Edit/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/edit-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Edit/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/export-tiddler": {
            "title": "$:/core/ui/Buttons/export-tiddler",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/export-button}} {{$:/language/Buttons/ExportTiddler/Caption}}",
            "description": "{{$:/language/Buttons/ExportTiddler/Hint}}",
            "text": "\\define makeExportFilter()\n[[$(currentTiddler)$]]\n\\end\n<$macrocall $name=\"exportButton\" exportFilter=<<makeExportFilter>> lingoBase=\"$:/language/Buttons/ExportTiddler/\" baseFilename=<<currentTiddler>>/>"
        },
        "$:/core/ui/Buttons/fold-bar": {
            "title": "$:/core/ui/Buttons/fold-bar",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/chevron-up}} {{$:/language/Buttons/Fold/FoldBar/Caption}}",
            "description": "{{$:/language/Buttons/Fold/FoldBar/Hint}}",
            "text": "<!-- This dummy toolbar button is here to allow visibility of the fold-bar to be controlled as if it were a toolbar button -->"
        },
        "$:/core/ui/Buttons/fold-others": {
            "title": "$:/core/ui/Buttons/fold-others",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/fold-others-button}} {{$:/language/Buttons/FoldOthers/Caption}}",
            "description": "{{$:/language/Buttons/FoldOthers/Hint}}",
            "text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/FoldOthers/Hint}} aria-label={{$:/language/Buttons/FoldOthers/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-other-tiddlers\" $param=<<currentTiddler>> foldedStatePrefix=\"$:/state/folded/\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-others-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/FoldOthers/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/fold": {
            "title": "$:/core/ui/Buttons/fold",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/fold-button}} {{$:/language/Buttons/Fold/Caption}}",
            "description": "{{$:/language/Buttons/Fold/Hint}}",
            "text": "\\whitespace trim\n<$reveal type=\"nomatch\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Fold/Hint}} aria-label={{$:/language/Buttons/Fold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/fold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Fold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<folded-state>> text=\"hide\" default=\"show\">\n<$button tooltip={{$:/language/Buttons/Unfold/Hint}} aria-label={{$:/language/Buttons/Unfold/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-fold-tiddler\" $param=<<currentTiddler>> foldedState=<<folded-state>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\" variable=\"listItem\">\n{{$:/core/images/unfold-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Unfold/Caption}}/>\n</span>\n</$list>\n</$button>\n</$reveal>\n"
        },
        "$:/core/ui/Buttons/info": {
            "title": "$:/core/ui/Buttons/info",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/info-button}} {{$:/language/Buttons/Info/Caption}}",
            "description": "{{$:/language/Buttons/Info/Hint}}",
            "text": "\\whitespace trim\n\\define button-content()\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/info-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/Info/Caption}}/>\n</span>\n</$list>\n\\end\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"popup\">\n<$button popup=<<tiddlerInfoState>> tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=\"$:/config/TiddlerInfo/Mode\" type=\"match\" text=\"sticky\">\n<$reveal state=<<tiddlerInfoState>> type=\"match\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"yes\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n<$reveal state=<<tiddlerInfoState>> type=\"nomatch\" text=\"\" default=\"\">\n<$button set=<<tiddlerInfoState>> setTo=\"\" tooltip={{$:/language/Buttons/Info/Hint}} aria-label={{$:/language/Buttons/Info/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$macrocall $name=\"button-content\" mode=\"inline\"/>\n</$button>\n</$reveal>\n</$reveal>"
        },
        "$:/core/ui/Buttons/more-tiddler-actions": {
            "title": "$:/core/ui/Buttons/more-tiddler-actions",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/down-arrow}} {{$:/language/Buttons/More/Caption}}",
            "description": "{{$:/language/Buttons/More/Hint}}",
            "text": "\\whitespace trim\n\\define config-title()\n$:/config/ViewToolbarButtons/Visibility/$(listItem)$\n\\end\n<$button popup=<<qualify \"$:/state/popup/more\">> tooltip={{$:/language/Buttons/More/Hint}} aria-label={{$:/language/Buttons/More/Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/down-arrow}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/More/Caption}}/>\n</span>\n</$list>\n</$button>\n<$reveal state=<<qualify \"$:/state/popup/more\">> type=\"popup\" position=\"belowleft\" animate=\"yes\">\n\n<div class=\"tc-drop-down\">\n\n<$set name=\"tv-config-toolbar-icons\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-text\" value=\"yes\">\n\n<$set name=\"tv-config-toolbar-class\" value=\"tc-btn-invisible\">\n\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/ViewToolbar]!has[draft.of]] -[[$:/core/ui/Buttons/more-tiddler-actions]]\" variable=\"listItem\">\n\n<$reveal type=\"match\" state=<<config-title>> text=\"hide\">\n\n<$set name=\"tv-config-toolbar-class\" filter=\"[<tv-config-toolbar-class>] [<listItem>encodeuricomponent[]addprefix[tc-btn-]]\">\n\n<$transclude tiddler=<<listItem>> mode=\"inline\"/>\n\n</$set>\n\n</$reveal>\n\n</$list>\n\n</$set>\n\n</$set>\n\n</$set>\n\n</div>\n\n</$reveal>"
        },
        "$:/core/ui/Buttons/new-here": {
            "title": "$:/core/ui/Buttons/new-here",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/new-here-button}} {{$:/language/Buttons/NewHere/Caption}}",
            "description": "{{$:/language/Buttons/NewHere/Hint}}",
            "text": "\\whitespace trim\n\\define newHereActions()\n<$set name=\"tags\" filter=\"[<currentTiddler>] [{$:/config/NewTiddler/Tags!!tags}]\">\n<$action-sendmessage $message=\"tm-new-tiddler\" tags=<<tags>>/>\n</$set>\n\\end\n\\define newHereButton()\n<$button actions=<<newHereActions>> tooltip={{$:/language/Buttons/NewHere/Hint}} aria-label={{$:/language/Buttons/NewHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-here-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewHere/Caption}}/>\n</span>\n</$list>\n</$button>\n\\end\n<<newHereButton>>\n"
        },
        "$:/core/ui/Buttons/new-journal-here": {
            "title": "$:/core/ui/Buttons/new-journal-here",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/new-journal-button}} {{$:/language/Buttons/NewJournalHere/Caption}}",
            "description": "{{$:/language/Buttons/NewJournalHere/Hint}}",
            "text": "\\whitespace trim\n\\define journalButtonTags()\n[[$(currentTiddlerTag)$]] $(journalTags)$\n\\end\n\\define journalButton()\n<$button tooltip={{$:/language/Buttons/NewJournalHere/Hint}} aria-label={{$:/language/Buttons/NewJournalHere/Caption}} class=<<tv-config-toolbar-class>>>\n<$wikify name=\"journalTitle\" text=\"\"\"<$macrocall $name=\"now\" format=<<journalTitleTemplate>>/>\"\"\">\n<$action-sendmessage $message=\"tm-new-tiddler\" title=<<journalTitle>> tags=<<journalButtonTags>>/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/new-journal-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text={{$:/language/Buttons/NewJournalHere/Caption}}/>\n</span>\n</$list>\n</$wikify>\n</$button>\n\\end\n<$set name=\"journalTitleTemplate\" value={{$:/config/NewJournal/Title}}>\n<$set name=\"journalTags\" value={{$:/config/NewJournal/Tags!!tags}}>\n<$set name=\"currentTiddlerTag\" value=<<currentTiddler>>>\n<<journalButton>>\n</$set>\n</$set>\n</$set>\n"
        },
        "$:/core/ui/Buttons/open-window": {
            "title": "$:/core/ui/Buttons/open-window",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/open-window}} {{$:/language/Buttons/OpenWindow/Caption}}",
            "description": "{{$:/language/Buttons/OpenWindow/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-open-window\" tooltip={{$:/language/Buttons/OpenWindow/Hint}} aria-label={{$:/language/Buttons/OpenWindow/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/open-window}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/OpenWindow/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/permalink": {
            "title": "$:/core/ui/Buttons/permalink",
            "tags": "$:/tags/ViewToolbar",
            "caption": "{{$:/core/images/permalink-button}} {{$:/language/Buttons/Permalink/Caption}}",
            "description": "{{$:/language/Buttons/Permalink/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-permalink\" tooltip={{$:/language/Buttons/Permalink/Hint}} aria-label={{$:/language/Buttons/Permalink/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permalink-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permalink/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/core/ui/Buttons/permaview": {
            "title": "$:/core/ui/Buttons/permaview",
            "tags": "$:/tags/ViewToolbar $:/tags/PageControls",
            "caption": "{{$:/core/images/permaview-button}} {{$:/language/Buttons/Permaview/Caption}}",
            "description": "{{$:/language/Buttons/Permaview/Hint}}",
            "text": "\\whitespace trim\n<$button message=\"tm-permaview\" tooltip={{$:/language/Buttons/Permaview/Hint}} aria-label={{$:/language/Buttons/Permaview/Caption}} class=<<tv-config-toolbar-class>>>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/permaview-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\">\n<$text text=\" \"/>\n<$text text={{$:/language/Buttons/Permaview/Caption}}/>\n</span>\n</$list>\n</$button>"
        },
        "$:/DefaultTiddlers": {
            "title": "$:/DefaultTiddlers",
            "text": "GettingStarted\n"
        },
        "$:/temp/advancedsearch": {
            "title": "$:/temp/advancedsearch",
            "text": ""
        },
        "$:/snippets/allfields": {
            "title": "$:/snippets/allfields",
            "text": "\\define renderfield(title)\n<tr class=\"tc-view-field\"><td class=\"tc-view-field-name\">''$title$'':</td><td class=\"tc-view-field-value\">//{{$:/language/Docs/Fields/$title$}}//</td></tr>\n\\end\n<table class=\"tc-view-field-table\"><tbody><$list filter=\"[fields[]sort[title]]\" variable=\"listItem\"><$macrocall $name=\"renderfield\" title=<<listItem>>/></$list>\n</tbody></table>\n"
        },
        "$:/config/AnimationDuration": {
            "title": "$:/config/AnimationDuration",
            "text": "400"
        },
        "$:/config/AutoFocus": {
            "title": "$:/config/AutoFocus",
            "text": "title"
        },
        "$:/config/AutoSave": {
            "title": "$:/config/AutoSave",
            "text": "yes"
        },
        "$:/config/BitmapEditor/Colour": {
            "title": "$:/config/BitmapEditor/Colour",
            "text": "#444"
        },
        "$:/config/BitmapEditor/ImageSizes": {
            "title": "$:/config/BitmapEditor/ImageSizes",
            "text": "[[62px 100px]] [[100px 62px]] [[124px 200px]] [[200px 124px]] [[248px 400px]] [[371px 600px]] [[400px 248px]] [[556px 900px]] [[600px 371px]] [[742px 1200px]] [[900px 556px]] [[1200px 742px]]"
        },
        "$:/config/BitmapEditor/LineWidth": {
            "title": "$:/config/BitmapEditor/LineWidth",
            "text": "3px"
        },
        "$:/config/BitmapEditor/LineWidths": {
            "title": "$:/config/BitmapEditor/LineWidths",
            "text": "0.25px 0.5px 1px 2px 3px 4px 6px 8px 10px 16px 20px 28px 40px 56px 80px"
        },
        "$:/config/BitmapEditor/Opacities": {
            "title": "$:/config/BitmapEditor/Opacities",
            "text": "0.01 0.025 0.05 0.075 0.1 0.15 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1.0"
        },
        "$:/config/BitmapEditor/Opacity": {
            "title": "$:/config/BitmapEditor/Opacity",
            "text": "1.0"
        },
        "$:/config/DefaultMoreSidebarTab": {
            "title": "$:/config/DefaultMoreSidebarTab",
            "text": "$:/core/ui/MoreSideBar/Tags"
        },
        "$:/config/DefaultSidebarTab": {
            "title": "$:/config/DefaultSidebarTab",
            "text": "$:/core/ui/SideBar/Open"
        },
        "$:/config/DownloadSaver/AutoSave": {
            "title": "$:/config/DownloadSaver/AutoSave",
            "text": "no"
        },
        "$:/config/Drafts/TypingTimeout": {
            "title": "$:/config/Drafts/TypingTimeout",
            "text": "400"
        },
        "$:/config/EditTemplateFields/Visibility/title": {
            "title": "$:/config/EditTemplateFields/Visibility/title",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/tags": {
            "title": "$:/config/EditTemplateFields/Visibility/tags",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/text": {
            "title": "$:/config/EditTemplateFields/Visibility/text",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/creator": {
            "title": "$:/config/EditTemplateFields/Visibility/creator",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/created": {
            "title": "$:/config/EditTemplateFields/Visibility/created",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/modified": {
            "title": "$:/config/EditTemplateFields/Visibility/modified",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/modifier": {
            "title": "$:/config/EditTemplateFields/Visibility/modifier",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/type": {
            "title": "$:/config/EditTemplateFields/Visibility/type",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/draft.title": {
            "title": "$:/config/EditTemplateFields/Visibility/draft.title",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/draft.of": {
            "title": "$:/config/EditTemplateFields/Visibility/draft.of",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/revision": {
            "title": "$:/config/EditTemplateFields/Visibility/revision",
            "text": "hide"
        },
        "$:/config/EditTemplateFields/Visibility/bag": {
            "title": "$:/config/EditTemplateFields/Visibility/bag",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-4",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-5",
            "text": "hide"
        },
        "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6": {
            "title": "$:/config/EditorToolbarButtons/Visibility/$:/core/ui/EditorToolbar/heading-6",
            "text": "hide"
        },
        "$:/config/EditorTypeMappings/image/gif": {
            "title": "$:/config/EditorTypeMappings/image/gif",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/webp": {
            "title": "$:/config/EditorTypeMappings/image/webp",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/heic": {
            "title": "$:/config/EditorTypeMappings/image/heic",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/heif": {
            "title": "$:/config/EditorTypeMappings/image/heif",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/jpeg": {
            "title": "$:/config/EditorTypeMappings/image/jpeg",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/jpg": {
            "title": "$:/config/EditorTypeMappings/image/jpg",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/png": {
            "title": "$:/config/EditorTypeMappings/image/png",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/image/x-icon": {
            "title": "$:/config/EditorTypeMappings/image/x-icon",
            "text": "bitmap"
        },
        "$:/config/EditorTypeMappings/text/vnd.tiddlywiki": {
            "title": "$:/config/EditorTypeMappings/text/vnd.tiddlywiki",
            "text": "text"
        },
        "$:/config/Manager/Show": {
            "title": "$:/config/Manager/Show",
            "text": "tiddlers"
        },
        "$:/config/Manager/Filter": {
            "title": "$:/config/Manager/Filter",
            "text": ""
        },
        "$:/config/Manager/Order": {
            "title": "$:/config/Manager/Order",
            "text": "forward"
        },
        "$:/config/Manager/Sort": {
            "title": "$:/config/Manager/Sort",
            "text": "title"
        },
        "$:/config/Manager/System": {
            "title": "$:/config/Manager/System",
            "text": "system"
        },
        "$:/config/Manager/Tag": {
            "title": "$:/config/Manager/Tag",
            "text": ""
        },
        "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText": {
            "title": "$:/state/popup/manager/item/$:/Manager/ItemMain/RawText",
            "text": "hide"
        },
        "$:/config/MissingLinks": {
            "title": "$:/config/MissingLinks",
            "text": "yes"
        },
        "$:/config/Navigation/UpdateAddressBar": {
            "title": "$:/config/Navigation/UpdateAddressBar",
            "text": "no"
        },
        "$:/config/Navigation/UpdateHistory": {
            "title": "$:/config/Navigation/UpdateHistory",
            "text": "no"
        },
        "$:/config/NewImageType": {
            "title": "$:/config/NewImageType",
            "text": "jpeg"
        },
        "$:/config/OfficialPluginLibrary": {
            "title": "$:/config/OfficialPluginLibrary",
            "tags": "$:/tags/PluginLibrary",
            "url": "https://tiddlywiki.com/library/v5.1.22/index.html",
            "caption": "{{$:/language/OfficialPluginLibrary}}",
            "text": "{{$:/language/OfficialPluginLibrary/Hint}}\n"
        },
        "$:/config/Navigation/openLinkFromInsideRiver": {
            "title": "$:/config/Navigation/openLinkFromInsideRiver",
            "text": "below"
        },
        "$:/config/Navigation/openLinkFromOutsideRiver": {
            "title": "$:/config/Navigation/openLinkFromOutsideRiver",
            "text": "top"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/advanced-search",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/close-all",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/encryption",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/export-page",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/fold-all",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/full-screen",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/home",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/refresh",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/import",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/language",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/tag-manager",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/manager",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/more-page-actions",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-journal",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/new-image",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/palette",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/permaview",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/print",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/storyview",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/timestamp",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/theme",
            "text": "hide"
        },
        "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all": {
            "title": "$:/config/PageControlButtons/Visibility/$:/core/ui/Buttons/unfold-all",
            "text": "hide"
        },
        "$:/config/Performance/Instrumentation": {
            "title": "$:/config/Performance/Instrumentation",
            "text": "no"
        },
        "$:/config/RegisterPluginType/plugin": {
            "title": "$:/config/RegisterPluginType/plugin",
            "text": "yes"
        },
        "$:/config/RegisterPluginType/theme": {
            "title": "$:/config/RegisterPluginType/theme",
            "text": "no"
        },
        "$:/config/RegisterPluginType/language": {
            "title": "$:/config/RegisterPluginType/language",
            "text": "no"
        },
        "$:/config/RegisterPluginType/info": {
            "title": "$:/config/RegisterPluginType/info",
            "text": "no"
        },
        "$:/config/RegisterPluginType/import": {
            "title": "$:/config/RegisterPluginType/import",
            "text": "no"
        },
        "$:/config/SaveWikiButton/Template": {
            "title": "$:/config/SaveWikiButton/Template",
            "text": "$:/core/save/all"
        },
        "$:/config/SaverFilter": {
            "title": "$:/config/SaverFilter",
            "text": "[all[]] -[[$:/HistoryList]] -[[$:/StoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[[$:/UploadName]] -[prefix[$:/state/]] -[prefix[$:/temp/]]"
        },
        "$:/config/Search/AutoFocus": {
            "title": "$:/config/Search/AutoFocus",
            "text": "true"
        },
        "$:/config/Search/MinLength": {
            "title": "$:/config/Search/MinLength",
            "text": "3"
        },
        "$:/config/SearchResults/Default": {
            "title": "$:/config/SearchResults/Default",
            "text": "$:/core/ui/DefaultSearchResultList"
        },
        "$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]": {
            "title": "$:/config/Server/ExternalFilters/[all[tiddlers]!is[system]sort[title]]",
            "text": "yes"
        },
        "$:/config/ShortcutInfo/add-field": {
            "title": "$:/config/ShortcutInfo/add-field",
            "text": "{{$:/language/EditTemplate/Fields/Add/Button/Hint}}"
        },
        "$:/config/ShortcutInfo/advanced-search": {
            "title": "$:/config/ShortcutInfo/advanced-search",
            "text": "{{$:/language/Buttons/AdvancedSearch/Hint}}"
        },
        "$:/config/ShortcutInfo/bold": {
            "title": "$:/config/ShortcutInfo/bold",
            "text": "{{$:/language/Buttons/Bold/Hint}}"
        },
        "$:/config/ShortcutInfo/cancel-edit-tiddler": {
            "title": "$:/config/ShortcutInfo/cancel-edit-tiddler",
            "text": "{{$:/language/Buttons/Cancel/Hint}}"
        },
        "$:/config/ShortcutInfo/excise": {
            "title": "$:/config/ShortcutInfo/excise",
            "text": "{{$:/language/Buttons/Excise/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-1": {
            "title": "$:/config/ShortcutInfo/heading-1",
            "text": "{{$:/language/Buttons/Heading1/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-2": {
            "title": "$:/config/ShortcutInfo/heading-2",
            "text": "{{$:/language/Buttons/Heading2/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-3": {
            "title": "$:/config/ShortcutInfo/heading-3",
            "text": "{{$:/language/Buttons/Heading3/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-4": {
            "title": "$:/config/ShortcutInfo/heading-4",
            "text": "{{$:/language/Buttons/Heading4/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-5": {
            "title": "$:/config/ShortcutInfo/heading-5",
            "text": "{{$:/language/Buttons/Heading5/Hint}}"
        },
        "$:/config/ShortcutInfo/heading-6": {
            "title": "$:/config/ShortcutInfo/heading-6",
            "text": "{{$:/language/Buttons/Heading6/Hint}}"
        },
        "$:/config/ShortcutInfo/italic": {
            "title": "$:/config/ShortcutInfo/italic",
            "text": "{{$:/language/Buttons/Italic/Hint}}"
        },
        "$:/config/ShortcutInfo/link": {
            "title": "$:/config/ShortcutInfo/link",
            "text": "{{$:/language/Buttons/Link/Hint}}"
        },
        "$:/config/ShortcutInfo/list-bullet": {
            "title": "$:/config/ShortcutInfo/list-bullet",
            "text": "{{$:/language/Buttons/ListBullet/Hint}}"
        },
        "$:/config/ShortcutInfo/list-number": {
            "title": "$:/config/ShortcutInfo/list-number",
            "text": "{{$:/language/Buttons/ListNumber/Hint}}"
        },
        "$:/config/ShortcutInfo/mono-block": {
            "title": "$:/config/ShortcutInfo/mono-block",
            "text": "{{$:/language/Buttons/MonoBlock/Hint}}"
        },
        "$:/config/ShortcutInfo/mono-line": {
            "title": "$:/config/ShortcutInfo/mono-line",
            "text": "{{$:/language/Buttons/MonoLine/Hint}}"
        },
        "$:/config/ShortcutInfo/new-image": {
            "title": "$:/config/ShortcutInfo/new-image",
            "text": "{{$:/language/Buttons/NewImage/Hint}}"
        },
        "$:/config/ShortcutInfo/new-journal": {
            "title": "$:/config/ShortcutInfo/new-journal",
            "text": "{{$:/language/Buttons/NewJournal/Hint}}"
        },
        "$:/config/ShortcutInfo/new-tiddler": {
            "title": "$:/config/ShortcutInfo/new-tiddler",
            "text": "{{$:/language/Buttons/NewTiddler/Hint}}"
        },
        "$:/config/ShortcutInfo/picture": {
            "title": "$:/config/ShortcutInfo/picture",
            "text": "{{$:/language/Buttons/Picture/Hint}}"
        },
        "$:/config/ShortcutInfo/preview": {
            "title": "$:/config/ShortcutInfo/preview",
            "text": "{{$:/language/Buttons/Preview/Hint}}"
        },
        "$:/config/ShortcutInfo/quote": {
            "title": "$:/config/ShortcutInfo/quote",
            "text": "{{$:/language/Buttons/Quote/Hint}}"
        },
        "$:/config/ShortcutInfo/save-tiddler": {
            "title": "$:/config/ShortcutInfo/save-tiddler",
            "text": "{{$:/language/Buttons/Save/Hint}}"
        },
        "$:/config/ShortcutInfo/sidebar-search": {
            "title": "$:/config/ShortcutInfo/sidebar-search",
            "text": "{{$:/language/Buttons/SidebarSearch/Hint}}"
        },
        "$:/config/ShortcutInfo/stamp": {
            "title": "$:/config/ShortcutInfo/stamp",
            "text": "{{$:/language/Buttons/Stamp/Hint}}"
        },
        "$:/config/ShortcutInfo/strikethrough": {
            "title": "$:/config/ShortcutInfo/strikethrough",
            "text": "{{$:/language/Buttons/Strikethrough/Hint}}"
        },
        "$:/config/ShortcutInfo/subscript": {
            "title": "$:/config/ShortcutInfo/subscript",
            "text": "{{$:/language/Buttons/Subscript/Hint}}"
        },
        "$:/config/ShortcutInfo/superscript": {
            "title": "$:/config/ShortcutInfo/superscript",
            "text": "{{$:/language/Buttons/Superscript/Hint}}"
        },
        "$:/config/ShortcutInfo/toggle-sidebar": {
            "title": "$:/config/ShortcutInfo/toggle-sidebar",
            "text": "{{$:/language/Buttons/ToggleSidebar/Hint}}"
        },
        "$:/config/ShortcutInfo/underline": {
            "title": "$:/config/ShortcutInfo/underline",
            "text": "{{$:/language/Buttons/Underline/Hint}}"
        },
        "$:/config/SyncFilter": {
            "title": "$:/config/SyncFilter",
            "text": "[is[tiddler]] -[[$:/HistoryList]] -[[$:/Import]] -[[$:/isEncrypted]] -[prefix[$:/status/]] -[prefix[$:/state/]] -[prefix[$:/temp/]]"
        },
        "$:/config/Tags/MinLength": {
            "title": "$:/config/Tags/MinLength",
            "text": "0"
        },
        "$:/config/TextEditor/EditorHeight/Height": {
            "title": "$:/config/TextEditor/EditorHeight/Height",
            "text": "400px"
        },
        "$:/config/TextEditor/EditorHeight/Mode": {
            "title": "$:/config/TextEditor/EditorHeight/Mode",
            "text": "auto"
        },
        "$:/config/TiddlerInfo/Default": {
            "title": "$:/config/TiddlerInfo/Default",
            "text": "$:/core/ui/TiddlerInfo/Fields"
        },
        "$:/config/TiddlerInfo/Mode": {
            "title": "$:/config/TiddlerInfo/Mode",
            "text": "popup"
        },
        "$:/config/Tiddlers/TitleLinks": {
            "title": "$:/config/Tiddlers/TitleLinks",
            "text": "no"
        },
        "$:/config/Toolbar/ButtonClass": {
            "title": "$:/config/Toolbar/ButtonClass",
            "text": "tc-btn-invisible"
        },
        "$:/config/Toolbar/Icons": {
            "title": "$:/config/Toolbar/Icons",
            "text": "yes"
        },
        "$:/config/Toolbar/Text": {
            "title": "$:/config/Toolbar/Text",
            "text": "no"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/clone",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/close-others",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/export-tiddler",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/info",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/more-tiddler-actions",
            "text": "show"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-here",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/new-journal-here",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/open-window",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permalink",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/permaview",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/delete",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-bar",
            "text": "hide"
        },
        "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others": {
            "title": "$:/config/ViewToolbarButtons/Visibility/$:/core/ui/Buttons/fold-others",
            "text": "hide"
        },
        "$:/config/shortcuts-mac/bold": {
            "title": "$:/config/shortcuts-mac/bold",
            "text": "meta-B"
        },
        "$:/config/shortcuts-mac/italic": {
            "title": "$:/config/shortcuts-mac/italic",
            "text": "meta-I"
        },
        "$:/config/shortcuts-mac/underline": {
            "title": "$:/config/shortcuts-mac/underline",
            "text": "meta-U"
        },
        "$:/config/shortcuts-mac/new-image": {
            "title": "$:/config/shortcuts-mac/new-image",
            "text": "ctrl-I"
        },
        "$:/config/shortcuts-mac/new-journal": {
            "title": "$:/config/shortcuts-mac/new-journal",
            "text": "ctrl-J"
        },
        "$:/config/shortcuts-mac/new-tiddler": {
            "title": "$:/config/shortcuts-mac/new-tiddler",
            "text": "ctrl-N"
        },
        "$:/config/shortcuts-not-mac/bold": {
            "title": "$:/config/shortcuts-not-mac/bold",
            "text": "ctrl-B"
        },
        "$:/config/shortcuts-not-mac/italic": {
            "title": "$:/config/shortcuts-not-mac/italic",
            "text": "ctrl-I"
        },
        "$:/config/shortcuts-not-mac/underline": {
            "title": "$:/config/shortcuts-not-mac/underline",
            "text": "ctrl-U"
        },
        "$:/config/shortcuts-not-mac/new-image": {
            "title": "$:/config/shortcuts-not-mac/new-image",
            "text": "alt-I"
        },
        "$:/config/shortcuts-not-mac/new-journal": {
            "title": "$:/config/shortcuts-not-mac/new-journal",
            "text": "alt-J"
        },
        "$:/config/shortcuts-not-mac/new-tiddler": {
            "title": "$:/config/shortcuts-not-mac/new-tiddler",
            "text": "alt-N"
        },
        "$:/config/shortcuts/add-field": {
            "title": "$:/config/shortcuts/add-field",
            "text": "enter"
        },
        "$:/config/shortcuts/advanced-search": {
            "title": "$:/config/shortcuts/advanced-search",
            "text": "ctrl-shift-A"
        },
        "$:/config/shortcuts/cancel-edit-tiddler": {
            "title": "$:/config/shortcuts/cancel-edit-tiddler",
            "text": "escape"
        },
        "$:/config/shortcuts/excise": {
            "title": "$:/config/shortcuts/excise",
            "text": "ctrl-E"
        },
        "$:/config/shortcuts/sidebar-search": {
            "title": "$:/config/shortcuts/sidebar-search",
            "text": "ctrl-shift-F"
        },
        "$:/config/shortcuts/heading-1": {
            "title": "$:/config/shortcuts/heading-1",
            "text": "ctrl-1"
        },
        "$:/config/shortcuts/heading-2": {
            "title": "$:/config/shortcuts/heading-2",
            "text": "ctrl-2"
        },
        "$:/config/shortcuts/heading-3": {
            "title": "$:/config/shortcuts/heading-3",
            "text": "ctrl-3"
        },
        "$:/config/shortcuts/heading-4": {
            "title": "$:/config/shortcuts/heading-4",
            "text": "ctrl-4"
        },
        "$:/config/shortcuts/heading-5": {
            "title": "$:/config/shortcuts/heading-5",
            "text": "ctrl-5"
        },
        "$:/config/shortcuts/heading-6": {
            "title": "$:/config/shortcuts/heading-6",
            "text": "ctrl-6"
        },
        "$:/config/shortcuts/link": {
            "title": "$:/config/shortcuts/link",
            "text": "ctrl-L"
        },
        "$:/config/shortcuts/linkify": {
            "title": "$:/config/shortcuts/linkify",
            "text": "alt-shift-L"
        },
        "$:/config/shortcuts/list-bullet": {
            "title": "$:/config/shortcuts/list-bullet",
            "text": "ctrl-shift-L"
        },
        "$:/config/shortcuts/list-number": {
            "title": "$:/config/shortcuts/list-number",
            "text": "ctrl-shift-N"
        },
        "$:/config/shortcuts/mono-block": {
            "title": "$:/config/shortcuts/mono-block",
            "text": "ctrl-shift-M"
        },
        "$:/config/shortcuts/mono-line": {
            "title": "$:/config/shortcuts/mono-line",
            "text": "ctrl-M"
        },
        "$:/config/shortcuts/picture": {
            "title": "$:/config/shortcuts/picture",
            "text": "ctrl-shift-I"
        },
        "$:/config/shortcuts/preview": {
            "title": "$:/config/shortcuts/preview",
            "text": "alt-P"
        },
        "$:/config/shortcuts/quote": {
            "title": "$:/config/shortcuts/quote",
            "text": "ctrl-Q"
        },
        "$:/config/shortcuts/save-tiddler": {
            "title": "$:/config/shortcuts/save-tiddler",
            "text": "ctrl+enter"
        },
        "$:/config/shortcuts/stamp": {
            "title": "$:/config/shortcuts/stamp",
            "text": "ctrl-S"
        },
        "$:/config/shortcuts/strikethrough": {
            "title": "$:/config/shortcuts/strikethrough",
            "text": "ctrl-T"
        },
        "$:/config/shortcuts/subscript": {
            "title": "$:/config/shortcuts/subscript",
            "text": "ctrl-shift-B"
        },
        "$:/config/shortcuts/superscript": {
            "title": "$:/config/shortcuts/superscript",
            "text": "ctrl-shift-P"
        },
        "$:/config/shortcuts/toggle-sidebar": {
            "title": "$:/config/shortcuts/toggle-sidebar",
            "text": "alt-shift-S"
        },
        "$:/config/shortcuts/transcludify": {
            "title": "$:/config/shortcuts/transcludify",
            "text": "alt-shift-T"
        },
        "$:/config/ui/EditTemplate": {
            "title": "$:/config/ui/EditTemplate",
            "text": "$:/core/ui/EditTemplate"
        },
        "$:/config/ui/ViewTemplate": {
            "title": "$:/config/ui/ViewTemplate",
            "text": "$:/core/ui/ViewTemplate"
        },
        "$:/config/WikiParserRules/Inline/wikilink": {
            "title": "$:/config/WikiParserRules/Inline/wikilink",
            "text": "enable"
        },
        "$:/snippets/currpalettepreview": {
            "title": "$:/snippets/currpalettepreview",
            "text": "\\define swatchStyle()\nbackground-color: $(swatchColour)$;\n\\end\n\\define swatch()\n<$set name=\"swatchColour\" value={{##$(colour)$}}\n><div class=\"tc-swatch\" style=<<swatchStyle>> title=<<colour>>/></$set>\n\\end\n<div class=\"tc-swatches-horiz\"><$list filter=\"\nforeground\nbackground\nmuted-foreground\nprimary\npage-background\ntab-background\ntiddler-info-background\n\" variable=\"colour\"><<swatch>></$list></div>"
        },
        "$:/snippets/download-wiki-button": {
            "title": "$:/snippets/download-wiki-button",
            "text": "\\define lingo-base() $:/language/ControlPanel/Tools/Download/\n<$button class=\"tc-btn-big-green\">\n<$action-sendmessage $message=\"tm-download-file\" $param=\"$:/core/save/all\" filename=\"index.html\"/>\n<<lingo Full/Caption>> {{$:/core/images/save-button}}\n</$button>"
        },
        "$:/language": {
            "title": "$:/language",
            "text": "$:/languages/en-GB"
        },
        "$:/snippets/languageswitcher": {
            "title": "$:/snippets/languageswitcher",
            "text": "\\define flag-title()\n$(languagePluginTitle)$/icon\n\\end\n\n<$linkcatcher to=\"$:/language\">\n<div class=\"tc-chooser tc-language-chooser\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[description]]\">\n<$set name=\"cls\" filter=\"[all[current]field:title{$:/language}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link>\n<span class=\"tc-image-button\">\n<$set name=\"languagePluginTitle\" value=<<currentTiddler>>>\n<$transclude subtiddler=<<flag-title>>>\n<$list filter=\"[all[current]field:title[$:/languages/en-GB]]\">\n<$transclude tiddler=\"$:/languages/en-GB/icon\"/>\n</$list>\n</$transclude>\n</$set>\n</span>\n<$view field=\"description\">\n<$view field=\"name\">\n<$view field=\"title\"/>\n</$view>\n</$view>\n</$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
        },
        "$:/core/macros/CSS": {
            "title": "$:/core/macros/CSS",
            "tags": "$:/tags/Macro",
            "text": "\\define colour(name)\n<$transclude tiddler={{$:/palette}} index=\"$name$\"><$transclude tiddler=\"$:/palettes/Vanilla\" index=\"$name$\"><$transclude tiddler=\"$:/config/DefaultColourMappings/$name$\"/></$transclude></$transclude>\n\\end\n\n\\define color(name)\n<<colour $name$>>\n\\end\n\n\\define box-shadow(shadow)\n``\n  -webkit-box-shadow: $shadow$;\n     -moz-box-shadow: $shadow$;\n          box-shadow: $shadow$;\n``\n\\end\n\n\\define filter(filter)\n``\n  -webkit-filter: $filter$;\n     -moz-filter: $filter$;\n          filter: $filter$;\n``\n\\end\n\n\\define transition(transition)\n``\n  -webkit-transition: $transition$;\n     -moz-transition: $transition$;\n          transition: $transition$;\n``\n\\end\n\n\\define transform-origin(origin)\n``\n  -webkit-transform-origin: $origin$;\n     -moz-transform-origin: $origin$;\n          transform-origin: $origin$;\n``\n\\end\n\n\\define background-linear-gradient(gradient)\n``\nbackground-image: linear-gradient($gradient$);\nbackground-image: -o-linear-gradient($gradient$);\nbackground-image: -moz-linear-gradient($gradient$);\nbackground-image: -webkit-linear-gradient($gradient$);\nbackground-image: -ms-linear-gradient($gradient$);\n``\n\\end\n\n\\define column-count(columns)\n``\n-moz-column-count: $columns$;\n-webkit-column-count: $columns$;\ncolumn-count: $columns$;\n``\n\\end\n\n\\define datauri(title)\n<$macrocall $name=\"makedatauri\" type={{$title$!!type}} text={{$title$}} _canonical_uri={{$title$!!_canonical_uri}}/>\n\\end\n\n\\define if-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"match\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-no-sidebar(text)\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">$text$</$reveal>\n\\end\n\n\\define if-background-attachment(text)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" type=\"nomatch\" text=\"\">$text$</$reveal>\n\\end\n"
        },
        "$:/core/macros/colour-picker": {
            "title": "$:/core/macros/colour-picker",
            "tags": "$:/tags/Macro",
            "text": "\\define colour-picker-update-recent()\n<$action-listops\n\t$tiddler=\"$:/config/ColourPicker/Recent\"\n\t$subfilter=\"$(colour-picker-value)$ [list[$:/config/ColourPicker/Recent]remove[$(colour-picker-value)$]] +[limit[8]]\"\n/>\n\\end\n\n\\define colour-picker-inner(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(colour-picker-value)$\"\"\">\n\n$(colour-picker-update-recent)$\n\n$actions$\n\n<span style=\"display:inline-block; background-color: $(colour-picker-value)$; width: 100%; height: 100%; border-radius: 50%;\"/>\n\n</$button>\n\\end\n\n\\define colour-picker-recent-inner(actions)\n<$set name=\"colour-picker-value\" value=\"$(recentColour)$\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\\end\n\n\\define colour-picker-recent(actions)\n{{$:/language/ColourPicker/Recent}} <$list filter=\"[list[$:/config/ColourPicker/Recent]]\" variable=\"recentColour\">\n<$macrocall $name=\"colour-picker-recent-inner\" actions=\"\"\"$actions$\"\"\"/></$list>\n\\end\n\n\\define colour-picker(actions)\n<div class=\"tc-colour-chooser\">\n\n<$macrocall $name=\"colour-picker-recent\" actions=\"\"\"$actions$\"\"\"/>\n\n---\n\n<$list filter=\"LightPink Pink Crimson LavenderBlush PaleVioletRed HotPink DeepPink MediumVioletRed Orchid Thistle Plum Violet Magenta Fuchsia DarkMagenta Purple MediumOrchid DarkViolet DarkOrchid Indigo BlueViolet MediumPurple MediumSlateBlue SlateBlue DarkSlateBlue Lavender GhostWhite Blue MediumBlue MidnightBlue DarkBlue Navy RoyalBlue CornflowerBlue LightSteelBlue LightSlateGrey SlateGrey DodgerBlue AliceBlue SteelBlue LightSkyBlue SkyBlue DeepSkyBlue LightBlue PowderBlue CadetBlue Azure LightCyan PaleTurquoise Cyan Aqua DarkTurquoise DarkSlateGrey DarkCyan Teal MediumTurquoise LightSeaGreen Turquoise Aquamarine MediumAquamarine MediumSpringGreen MintCream SpringGreen MediumSeaGreen SeaGreen Honeydew LightGreen PaleGreen DarkSeaGreen LimeGreen Lime ForestGreen Green DarkGreen Chartreuse LawnGreen GreenYellow DarkOliveGreen YellowGreen OliveDrab Beige LightGoldenrodYellow Ivory LightYellow Yellow Olive DarkKhaki LemonChiffon PaleGoldenrod Khaki Gold Cornsilk Goldenrod DarkGoldenrod FloralWhite OldLace Wheat Moccasin Orange PapayaWhip BlanchedAlmond NavajoWhite AntiqueWhite Tan BurlyWood Bisque DarkOrange Linen Peru PeachPuff SandyBrown Chocolate SaddleBrown Seashell Sienna LightSalmon Coral OrangeRed DarkSalmon Tomato MistyRose Salmon Snow LightCoral RosyBrown IndianRed Red Brown FireBrick DarkRed Maroon White WhiteSmoke Gainsboro LightGrey Silver DarkGrey Grey DimGrey Black\" variable=\"colour-picker-value\">\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\n---\n\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" tag=\"input\" default=\"\" placeholder=\"\"/>\n<$edit-text tiddler=\"$:/config/ColourPicker/New\" type=\"color\" tag=\"input\"/>\n<$set name=\"colour-picker-value\" value={{$:/config/ColourPicker/New}}>\n<$macrocall $name=\"colour-picker-inner\" actions=\"\"\"$actions$\"\"\"/>\n</$set>\n\n</div>\n\n\\end\n"
        },
        "$:/core/macros/copy-to-clipboard": {
            "title": "$:/core/macros/copy-to-clipboard",
            "tags": "$:/tags/Macro",
            "text": "\\define copy-to-clipboard(src,class:\"tc-btn-invisible\",style)\n<$button class=<<__class__>> style=<<__style__>> message=\"tm-copy-to-clipboard\" param=<<__src__>> tooltip={{$:/language/Buttons/CopyToClipboard/Hint}}>\n{{$:/core/images/copy-clipboard}} <$text text={{$:/language/Buttons/CopyToClipboard/Caption}}/>\n</$button>\n\\end\n\n\\define copy-to-clipboard-above-right(src,class:\"tc-btn-invisible\",style)\n<div style=\"position: relative;\">\n<div style=\"position: absolute; bottom: 0; right: 0;\">\n<$macrocall $name=\"copy-to-clipboard\" src=<<__src__>> class=<<__class__>> style=<<__style__>>/>\n</div>\n</div>\n\\end\n\n"
        },
        "$:/core/macros/diff": {
            "title": "$:/core/macros/diff",
            "tags": "$:/tags/Macro",
            "text": "\\define compareTiddlerText(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle)\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>>>\n<$diff-text source=<<source>> dest=<<dest>>/>\n</$set>\n</$set>\n\\end\n\n\\define compareTiddlers(sourceTiddlerTitle,sourceSubTiddlerTitle,destTiddlerTitle,destSubTiddlerTitle,exclude)\n<table class=\"tc-diff-tiddlers\">\n<tbody>\n<$set name=\"sourceFields\" filter=\"[<__sourceTiddlerTitle__>fields[]sort[]]\">\n<$set name=\"destFields\" filter=\"[<__destSubTiddlerTitle__>subtiddlerfields<__destTiddlerTitle__>sort[]]\">\n<$list filter=\"[enlist<sourceFields>] [enlist<destFields>] -[enlist<__exclude__>] +[sort[]]\" variable=\"fieldName\">\n<tr>\n<th>\n<$text text=<<fieldName>>/> \n</th>\n<td>\n<$set name=\"source\" tiddler=<<__sourceTiddlerTitle__>> subtiddler=<<__sourceSubTiddlerTitle__>> field=<<fieldName>>>\n<$set name=\"dest\" tiddler=<<__destTiddlerTitle__>> subtiddler=<<__destSubTiddlerTitle__>> field=<<fieldName>>>\n<$diff-text source=<<source>> dest=<<dest>>>\n</$diff-text>\n</$set>\n</$set>\n</td>\n</tr>\n</$list>\n</$set>\n</$set>\n</tbody>\n</table>\n\\end\n"
        },
        "$:/core/macros/dumpvariables": {
            "title": "$:/core/macros/dumpvariables",
            "tags": "$:/tags/Macro",
            "text": "\\define dumpvariables()\n<ul>\n<$list filter=\"[variables[]]\" variable=\"varname\">\n<li>\n<strong><code><$text text=<<varname>>/></code></strong>:<br/>\n<$codeblock code={{{ [<varname>getvariable[]] }}}/>\n</li>\n</$list>\n</ul>\n\\end\n"
        },
        "$:/core/macros/export": {
            "title": "$:/core/macros/export",
            "tags": "$:/tags/Macro",
            "text": "\\define exportButtonFilename(baseFilename)\n$baseFilename$$(extension)$\n\\end\n\n\\define exportButton(exportFilter:\"[!is[system]sort[title]]\",lingoBase,baseFilename:\"tiddlers\")\n<span class=\"tc-popup-keep\"><$button popup=<<qualify \"$:/state/popup/export\">> tooltip={{$lingoBase$Hint}} aria-label={{$lingoBase$Caption}} class=<<tv-config-toolbar-class>> selectedClass=\"tc-selected\">\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/core/images/export-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$lingoBase$Caption}}/></span>\n</$list>\n</$button></span><$reveal state=<<qualify \"$:/state/popup/export\">> type=\"popup\" position=\"below\" animate=\"yes\">\n<div class=\"tc-drop-down\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Exporter]]\">\n<$set name=\"extension\" value={{!!extension}}>\n<$button class=\"tc-btn-invisible\">\n<$action-sendmessage $message=\"tm-download-file\" $param=<<currentTiddler>> exportFilter=\"\"\"$exportFilter$\"\"\" filename=<<exportButtonFilename \"\"\"$baseFilename$\"\"\">>/>\n<$action-deletetiddler $tiddler=<<qualify \"$:/state/popup/export\">>/>\n<$transclude field=\"description\"/>\n</$button>\n</$set>\n</$list>\n</div>\n</$reveal>\n\\end\n"
        },
        "$:/core/macros/image-picker": {
            "title": "$:/core/macros/image-picker",
            "created": "20170715180840889",
            "modified": "20170715180914005",
            "tags": "$:/tags/Macro",
            "type": "text/vnd.tiddlywiki",
            "text": "\\define image-picker-thumbnail(actions)\n<$button tag=\"a\" tooltip=\"\"\"$(imageTitle)$\"\"\">\n$actions$\n<$transclude tiddler=<<imageTitle>>/>\n</$button>\n\\end\n\n\\define image-picker-list(filter,actions)\n<$list filter=\"\"\"$filter$\"\"\" variable=\"imageTitle\">\n<$macrocall $name=\"image-picker-thumbnail\" actions=\"\"\"$actions$\"\"\"/>\n</$list>\n\\end\n\n\\define image-picker(actions,filter:\"[all[shadows+tiddlers]is[image]] -[type[application/pdf]] +[!has[draft.of]$subfilter$sort[title]]\",subfilter:\"\")\n<div class=\"tc-image-chooser\">\n<$vars state-system=<<qualify \"$:/state/image-picker/system\">>>\n<$checkbox tiddler=<<state-system>> field=\"text\" checked=\"show\" unchecked=\"hide\" default=\"hide\">\n{{$:/language/SystemTiddlers/Include/Prompt}}\n</$checkbox>\n<$reveal state=<<state-system>> type=\"match\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$ +[!is[system]]\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n<$reveal state=<<state-system>> type=\"nomatch\" text=\"hide\" default=\"hide\" tag=\"div\">\n<$macrocall $name=\"image-picker-list\" filter=\"\"\"$filter$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</$reveal>\n</$vars>\n</div>\n\\end\n\n\\define image-picker-include-tagged-images(actions)\n<$macrocall $name=\"image-picker\" filter=\"[all[shadows+tiddlers]is[image]] [all[shadows+tiddlers]tag[$:/tags/Image]] -[type[application/pdf]] +[!has[draft.of]sort[title]]\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n"
        },
        "$:/core/macros/lingo": {
            "title": "$:/core/macros/lingo",
            "tags": "$:/tags/Macro",
            "text": "\\define lingo-base()\n$:/language/\n\\end\n\n\\define lingo(title)\n{{$(lingo-base)$$title$}}\n\\end\n"
        },
        "$:/core/macros/list": {
            "title": "$:/core/macros/list",
            "tags": "$:/tags/Macro",
            "text": "\\define list-links(filter,type:\"ul\",subtype:\"li\",class:\"\",emptyMessage)\n\\whitespace trim\n<$type$ class=\"$class$\">\n<$list filter=\"$filter$\" emptyMessage=<<__emptyMessage__>>>\n<$subtype$>\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$subtype$>\n</$list>\n</$type$>\n\\end\n\n\\define list-links-draggable-drop-actions()\n<$action-listops $tiddler=<<targetTiddler>> $field=<<targetField>> $subfilter=\"+[insertbefore:currentTiddler<actionTiddler>]\"/>\n\\end\n\n\\define list-links-draggable(tiddler,field:\"list\",type:\"ul\",subtype:\"li\",class:\"\",itemTemplate)\n\\whitespace trim\n<span class=\"tc-links-draggable-list\">\n<$vars targetTiddler=\"\"\"$tiddler$\"\"\" targetField=\"\"\"$field$\"\"\">\n<$type$ class=\"$class$\">\n<$list filter=\"[list[$tiddler$!!$field$]]\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"\"\"$subtype$\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\"/>\n<div>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$transclude field=\"caption\">\n<$view field=\"title\"/>\n</$transclude>\n</$link>\n</$transclude>\n</div>\n</$droppable>\n</$list>\n</$type$>\n<$tiddler tiddler=\"\">\n<$droppable actions=<<list-links-draggable-drop-actions>> tag=\"div\" enable=<<tv-enable-drag-and-drop>>>\n<div class=\"tc-droppable-placeholder\">\n&nbsp;\n</div>\n<div style=\"height:0.5em;\"/>\n</$droppable>\n</$tiddler>\n</$vars>\n</span>\n\\end\n\n\\define list-tagged-draggable-drop-actions(tag)\n<!-- Save the current ordering of the tiddlers with this tag -->\n<$set name=\"order\" filter=\"[<__tag__>tagging[]]\">\n<!-- Remove any list-after or list-before fields from the tiddlers with this tag -->\n<$list filter=\"[<__tag__>tagging[]]\">\n<$action-deletefield $field=\"list-before\"/>\n<$action-deletefield $field=\"list-after\"/>\n</$list>\n<!-- Save the new order to the Tag Tiddler -->\n<$action-listops $tiddler=<<__tag__>> $field=\"list\" $filter=\"+[enlist<order>] +[insertbefore:currentTiddler<actionTiddler>]\"/>\n<!-- Make sure the newly added item has the right tag -->\n<!-- Removing this line makes dragging tags within the dropdown work as intended -->\n<!--<$action-listops $tiddler=<<actionTiddler>> $tags=<<__tag__>>/>-->\n<!-- Using the following 5 lines as replacement makes dragging titles from outside into the dropdown apply the tag -->\n<$list filter=\"[<actionTiddler>!contains:tags<__tag__>]\">\n<$fieldmangler tiddler=<<actionTiddler>>>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<__tag__>>/>\n</$fieldmangler>\n</$list>\n</$set>\n\\end\n\n\\define list-tagged-draggable(tag,subFilter,emptyMessage,itemTemplate,elementTag:\"div\",storyview:\"\")\n\\whitespace trim\n<span class=\"tc-tagged-draggable-list\">\n<$set name=\"tag\" value=<<__tag__>>>\n<$list filter=\"[<__tag__>tagging[]$subFilter$]\" emptyMessage=<<__emptyMessage__>> storyview=<<__storyview__>>>\n<$elementTag$ class=\"tc-menu-list-item\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$>\n<$transclude tiddler=\"\"\"$itemTemplate$\"\"\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n</$link>\n</$transclude>\n</$elementTag$>\n</$droppable>\n</$elementTag$>\n</$list>\n<$tiddler tiddler=\"\">\n<$droppable actions=\"\"\"<$macrocall $name=\"list-tagged-draggable-drop-actions\" tag=<<__tag__>>/>\"\"\" enable=<<tv-enable-drag-and-drop>>>\n<$elementTag$ class=\"tc-droppable-placeholder\"/>\n<$elementTag$ style=\"height:0.5em;\">\n</$elementTag$>\n</$droppable>\n</$tiddler>\n</$set>\n</span>\n\\end\n"
        },
        "$:/core/macros/tabs": {
            "title": "$:/core/macros/tabs",
            "tags": "$:/tags/Macro",
            "text": "\\define tabs(tabsList,default,state:\"$:/state/tab\",class,template,buttonTemplate,retain)\n<div class=\"tc-tab-set $class$\">\n<div class=\"tc-tab-buttons $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\" storyview=\"pop\"><$set name=\"save-currentTiddler\" value=<<currentTiddler>>><$tiddler tiddler=<<currentTab>>><$button set=<<qualify \"$state$\">> setTo=<<currentTab>> default=\"$default$\" selectedClass=\"tc-tab-selected\" tooltip={{!!tooltip}}>\n<$tiddler tiddler=<<save-currentTiddler>>>\n<$set name=\"tv-wikilinks\" value=\"no\">\n<$transclude tiddler=\"$buttonTemplate$\" mode=\"inline\">\n<$transclude tiddler=<<currentTab>> field=\"caption\">\n<$macrocall $name=\"currentTab\" $type=\"text/plain\" $output=\"text/plain\"/>\n</$transclude>\n</$transclude>\n</$set></$tiddler></$button></$tiddler></$set></$list>\n</div>\n<div class=\"tc-tab-divider $class$\"/>\n<div class=\"tc-tab-content $class$\">\n<$list filter=\"$tabsList$\" variable=\"currentTab\">\n\n<$reveal type=\"match\" state=<<qualify \"$state$\">> text=<<currentTab>> default=\"$default$\" retain=\"\"\"$retain$\"\"\">\n\n<$transclude tiddler=\"$template$\" mode=\"block\">\n\n<$transclude tiddler=<<currentTab>> mode=\"block\"/>\n\n</$transclude>\n\n</$reveal>\n\n</$list>\n</div>\n</div>\n\\end\n"
        },
        "$:/core/macros/tag-picker": {
            "title": "$:/core/macros/tag-picker",
            "tags": "$:/tags/Macro",
            "text": "\\define add-tag-actions()\n<$action-sendmessage $message=\"tm-add-tag\" $param={{{ [<newTagNameTiddler>get[text]] }}}/>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n\\end\n\n\\define tag-button()\n<$button class=\"tc-btn-invisible\" tag=\"a\" tooltip={{$:/language/EditTemplate/Tags/Add/Button/Hint}}>\n<$action-sendmessage $message=\"tm-add-tag\" $param=<<tag>>/>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n<$macrocall $name=\"tag-pill\" tag=<<tag>>/>\n</$button>\n\\end\n\n\\define tag-picker-inner()\n\\whitespace trim\n<div class=\"tc-edit-add-tag\">\n<span class=\"tc-add-tag-name\">\n<$keyboard key=\"ENTER\" actions=<<add-tag-actions>>>\n<$edit-text tiddler=<<newTagNameTiddler>> tag=\"input\" default=\"\" placeholder={{$:/language/EditTemplate/Tags/Add/Placeholder}} focusPopup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-edit-texteditor tc-popup-handle\" tabindex=<<tabIndex>> focus={{{ [{$:/config/AutoFocus}match[tags]then[true]] ~[[false]] }}}/>\n</$keyboard>\n</span>&nbsp;<$button popup=<<qualify \"$:/state/popup/tags-auto-complete\">> class=\"tc-btn-invisible\" tooltip={{$:/language/EditTemplate/Tags/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Tags/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>&nbsp;<span class=\"tc-add-tag-button\">\n<$set name=\"tag\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$button set=\"$:/temp/NewTagName\" setTo=\"\" class=\"\">\n<<add-tag-actions>>\n<$action-deletetiddler $tiddler=<<newTagNameTiddler>>/>\n{{$:/language/EditTemplate/Tags/Add/Button}}\n</$button>\n</$set>\n</span>\n</div>\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/popup/tags-auto-complete\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown\">\n<$set name=\"newTagName\" value={{{ [<newTagNameTiddler>get[text]] }}}>\n<$list filter=\"[<newTagName>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=\"[tags[]!is[system]search:title<newTagName>sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list></$list>\n<hr>\n<$list filter=\"[<newTagName>minlength{$:/config/Tags/MinLength}limit[1]]\" emptyMessage=\"\"\"<div class=\"tc-search-results\">{{$:/language/Search/Search/TooShort}}</div>\"\"\" variable=\"listItem\">\n<$list filter=\"[tags[]is[system]search:title<newTagName>sort[]]\" variable=\"tag\">\n<<tag-button>>\n</$list></$list>\n</$set>\n</div>\n</$reveal>\n</div>\n\\end\n\\define tag-picker()\n\\whitespace trim\n<$list filter=\"[<newTagNameTiddler>match[]]\" emptyMessage=<<tag-picker-inner>>>\n<$set name=\"newTagNameTiddler\" value=<<qualify \"$:/temp/NewTagName\">>>\n<<tag-picker-inner>>\n</$set>\n</$list>\n\\end\n"
        },
        "$:/core/macros/tag": {
            "title": "$:/core/macros/tag",
            "tags": "$:/tags/Macro",
            "text": "\\define tag-pill-styles()\nbackground-color:$(backgroundColor)$;\nfill:$(foregroundColor)$;\ncolor:$(foregroundColor)$;\n\\end\n\n\\define tag-pill-inner(tag,icon,colour,fallbackTarget,colourA,colourB,element-tag,element-attributes,actions)\n<$vars foregroundColor=<<contrastcolour target:\"\"\"$colour$\"\"\" fallbackTarget:\"\"\"$fallbackTarget$\"\"\" colourA:\"\"\"$colourA$\"\"\" colourB:\"\"\"$colourB$\"\"\">> backgroundColor=\"\"\"$colour$\"\"\">\n<$element-tag$ $element-attributes$ class=\"tc-tag-label tc-btn-invisible\" style=<<tag-pill-styles>>>\n$actions$<$transclude tiddler=\"\"\"$icon$\"\"\"/><$view tiddler=<<__tag__>> field=\"title\" format=\"text\" />\n</$element-tag$>\n</$vars>\n\\end\n\n\\define tag-pill-body(tag,icon,colour,palette,element-tag,element-attributes,actions)\n<$macrocall $name=\"tag-pill-inner\" tag=<<__tag__>> icon=\"\"\"$icon$\"\"\" colour=\"\"\"$colour$\"\"\" fallbackTarget={{$palette$##tag-background}} colourA={{$palette$##foreground}} colourB={{$palette$##background}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n\\end\n\n\\define tag-pill(tag,element-tag:\"span\",element-attributes:\"\",actions:\"\")\n<span class=\"tc-tag-list-item\">\n<$macrocall $name=\"tag-pill-body\" tag=<<__tag__>> icon={{{ [<__tag__>get[icon]] }}} colour={{{ [<__tag__>get[color]] }}} palette={{$:/palette}} element-tag=\"\"\"$element-tag$\"\"\" element-attributes=\"\"\"$element-attributes$\"\"\" actions=\"\"\"$actions$\"\"\"/>\n</span>\n\\end\n\n\\define tag(tag)\n{{$tag$||$:/core/ui/TagTemplate}}\n\\end\n"
        },
        "$:/core/macros/thumbnails": {
            "title": "$:/core/macros/thumbnails",
            "tags": "$:/tags/Macro",
            "text": "\\define thumbnail(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<$link to=\"\"\"$link$\"\"\"><div class=\"tc-thumbnail-wrapper\">\n<div class=\"tc-thumbnail-image\" style=\"width:$width$px;height:$height$px;\"><$reveal type=\"nomatch\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" style=\"width:$width$px;height:$height$px;\">\n[img[$image$]]\n</$reveal><$reveal type=\"match\" text=\"\" default=\"\"\"$image$\"\"\" tag=\"div\" class=\"tc-thumbnail-background\" style=\"width:$width$px;height:$height$px;background-color:$background-color$;\"></$reveal></div><div class=\"tc-thumbnail-icon\" style=\"fill:$color$;color:$color$;\">\n$icon$\n</div><div class=\"tc-thumbnail-caption\">\n$caption$\n</div>\n</div></$link>\n\\end\n\n\\define thumbnail-right(link,icon,color,background-color,image,caption,width:\"280\",height:\"157\")\n<div class=\"tc-thumbnail-right-wrapper\"><<thumbnail \"\"\"$link$\"\"\" \"\"\"$icon$\"\"\" \"\"\"$color$\"\"\" \"\"\"$background-color$\"\"\" \"\"\"$image$\"\"\" \"\"\"$caption$\"\"\" \"\"\"$width$\"\"\" \"\"\"$height$\"\"\">></div>\n\\end\n\n\\define list-thumbnails(filter,width:\"280\",height:\"157\")\n<$list filter=\"\"\"$filter$\"\"\"><$macrocall $name=\"thumbnail\" link={{!!link}} icon={{!!icon}} color={{!!color}} background-color={{!!background-color}} image={{!!image}} caption={{!!caption}} width=\"\"\"$width$\"\"\" height=\"\"\"$height$\"\"\"/></$list>\n\\end\n"
        },
        "$:/core/macros/timeline": {
            "title": "$:/core/macros/timeline",
            "created": "20141212105914482",
            "modified": "20141212110330815",
            "tags": "$:/tags/Macro",
            "text": "\\define timeline-title()\n\\whitespace trim\n<!-- Override this macro with a global macro \n     of the same name if you need to change \n     how titles are displayed on the timeline \n     -->\n<$view field=\"title\"/>\n\\end\n\\define timeline(limit:\"100\",format:\"DDth MMM YYYY\",subfilter:\"\",dateField:\"modified\")\n<div class=\"tc-timeline\">\n<$list filter=\"[!is[system]$subfilter$has[$dateField$]!sort[$dateField$]limit[$limit$]eachday[$dateField$]]\">\n<div class=\"tc-menu-list-item\">\n<$view field=\"$dateField$\" format=\"date\" template=\"$format$\"/>\n<$list filter=\"[sameday:$dateField${!!$dateField$}!is[system]$subfilter$!sort[$dateField$]]\">\n<div class=\"tc-menu-list-subitem\">\n<$link to={{!!title}}><<timeline-title>></$link>\n</div>\n</$list>\n</div>\n</$list>\n</div>\n\\end\n"
        },
        "$:/core/macros/toc": {
            "title": "$:/core/macros/toc",
            "tags": "$:/tags/Macro",
            "text": "\\define toc-caption()\n<$set name=\"tv-wikilinks\" value=\"no\">\n  <$transclude field=\"caption\">\n    <$view field=\"title\"/>\n  </$transclude>\n</$set>\n\\end\n\n\\define toc-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<ol class=\"tc-toc\">\n  <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n    <$vars item=<<currentTiddler>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n      <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n        <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n          <li class=<<toc-item-class>>>\n            <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=\"<$link><$view field='caption'><$view field='title'/></$view></$link>\">\n              <<toc-caption>>\n            </$list>\n            <$macrocall $name=\"toc-body\" tag=<<item>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n          </li>\n        </$set>\n      </$set>\n    </$vars>\n  </$list>\n</ol>\n\\end\n\n\\define toc(tag,sort:\"\",itemClassFilter:\"\")\n<$macrocall $name=\"toc-body\"  tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> />\n\\end\n\n\\define toc-linked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n    <li class=<<toc-item-class>>>\n    <$link>\n      <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/right-arrow}}\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/down-arrow}}\n        </$button>\n      </$reveal>\n      <<toc-caption>>\n    </$link>\n    <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n      <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n    </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<!-- helper function -->\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n    <li class=<<toc-item-class>>>\n      <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/right-arrow}}\n          <<toc-caption>>\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n          {{$:/core/images/down-arrow}}\n          <<toc-caption>>\n        </$button>\n      </$reveal>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n      </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-expandable-empty-message()\n<$macrocall $name=\"toc-linked-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-expandable(tag,sort:\"\",itemClassFilter:\"\",exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n  <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n    <ol class=\"tc-toc toc-expandable\">\n      <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n        <$list filter=\"[all[current]toc-link[no]]\" emptyMessage=<<toc-expandable-empty-message>> >\n          <$macrocall $name=\"toc-unlinked-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"\"\"itemClassFilter\"\"\" exclude=<<excluded>> path=<<path>> />\n        </$list>\n      </$list>\n    </ol>\n  </$set>\n</$vars>\n\\end\n\n\\define toc-linked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\" >\n    <li class=<<toc-item-class>>>\n      <$link>\n          <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button>\">\n          <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n            <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n              {{$:/core/images/right-arrow}}\n            </$button>\n          </$reveal>\n          <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n            <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n              {{$:/core/images/down-arrow}}\n            </$button>\n          </$reveal>\n        </$list>\n        <<toc-caption>>\n      </$link>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n      </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-unlinked-selective-expandable-body(tag,sort:\"\",itemClassFilter,exclude,path)\n<$qualify name=\"toc-state\" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix<currentTiddler>] }}}>\n  <$set name=\"toc-item-class\" filter=<<__itemClassFilter__>> emptyValue=\"toc-item-selected\" value=\"toc-item\">\n    <li class=<<toc-item-class>>>\n      <$list filter=\"[all[current]tagging[]$sort$limit[1]]\" variable=\"ignore\" emptyMessage=\"<$button class='tc-btn-invisible'>{{$:/core/images/blank}}</$button> <$view field='caption'><$view field='title'/></$view>\">\n        <$reveal type=\"nomatch\" stateTitle=<<toc-state>> text=\"open\">\n          <$button setTitle=<<toc-state>> setTo=\"open\" class=\"tc-btn-invisible tc-popup-keep\">\n            {{$:/core/images/right-arrow}}\n            <<toc-caption>>\n          </$button>\n        </$reveal>\n        <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n          <$button setTitle=<<toc-state>> setTo=\"close\" class=\"tc-btn-invisible tc-popup-keep\">\n            {{$:/core/images/down-arrow}}\n            <<toc-caption>>\n          </$button>\n        </$reveal>\n      </$list>\n      <$reveal type=\"match\" stateTitle=<<toc-state>> text=\"open\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=<<currentTiddler>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>\n      </$reveal>\n    </li>\n  </$set>\n</$qualify>\n\\end\n\n\\define toc-selective-expandable-empty-message()\n<$macrocall $name=\"toc-linked-selective-expandable-body\" tag=<<tag>> sort=<<sort>> itemClassFilter=<<itemClassFilter>> exclude=<<excluded>> path=<<path>>/>\n\\end\n\n\\define toc-selective-expandable(tag,sort:\"\",itemClassFilter,exclude,path)\n<$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}>\n  <$set name=\"excluded\" filter=\"\"\"[enlist<__exclude__>] [<__tag__>]\"\"\">\n    <ol class=\"tc-toc toc-selective-expandable\">\n      <$list filter=\"\"\"[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[enlist<__exclude__>]\"\"\">\n        <$list filter=\"[all[current]toc-link[no]]\" variable=\"ignore\" emptyMessage=<<toc-selective-expandable-empty-message>> >\n          <$macrocall $name=\"toc-unlinked-selective-expandable-body\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<excluded>> path=<<path>>/>\n        </$list>\n      </$list>\n    </ol>\n  </$set>\n</$vars>\n\\end\n\n\\define toc-tabbed-external-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>\n  <div class=\"tc-tabbed-table-of-contents\">\n    <$linkcatcher to=<<__selectedTiddler__>>>\n      <div class=\"tc-table-of-contents\">\n        <$macrocall $name=\"toc-selective-expandable\" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=\"[all[current]] -[<__selectedTiddler__>get[text]]\"/>\n      </div>\n    </$linkcatcher>\n    <div class=\"tc-tabbed-table-of-contents-content\">\n      <$reveal stateTitle=<<__selectedTiddler__>> type=\"nomatch\" text=\"\">\n        <$transclude mode=\"block\" tiddler=<<__template__>>>\n          <h1><<toc-caption>></h1>\n          <$transclude mode=\"block\">$missingText$</$transclude>\n        </$transclude>\n      </$reveal>\n      <$reveal stateTitle=<<__selectedTiddler__>> type=\"match\" text=\"\">\n        $unselectedText$\n      </$reveal>\n    </div>\n  </div>\n</$tiddler>\n\\end\n\n\\define toc-tabbed-internal-nav(tag,sort:\"\",selectedTiddler:\"$:/temp/toc/selectedTiddler\",unselectedText,missingText,template:\"\")\n<$linkcatcher to=<<__selectedTiddler__>>>\n  <$macrocall $name=\"toc-tabbed-external-nav\" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>>/>\n</$linkcatcher>\n\\end\n\n"
        },
        "$:/core/macros/translink": {
            "title": "$:/core/macros/translink",
            "tags": "$:/tags/Macro",
            "text": "\\define translink(title,mode:\"block\")\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: black; foreground; white;\">\n<$link to=\"\"\"$title$\"\"\">\n<$text text=\"\"\"$title$\"\"\"/>\n</$link>\n<div style=\"border:1px solid #ccc; padding: 0.5em; background: white; foreground; black;\">\n<$transclude tiddler=\"\"\"$title$\"\"\" mode=\"$mode$\">\n\"<$text text=\"\"\"$title$\"\"\"/>\" is missing\n</$transclude>\n</div>\n</div>\n\\end\n"
        },
        "$:/core/macros/tree": {
            "title": "$:/core/macros/tree",
            "tags": "$:/tags/Macro",
            "text": "\\define leaf-link(full-title,chunk,separator: \"/\")\n<$link to=<<__full-title__>>><$text text=<<__chunk__>>/></$link>\n\\end\n\n\\define leaf-node(prefix,chunk)\n<li>\n<$list filter=\"[<__prefix__>addsuffix<__chunk__>is[shadow]] [<__prefix__>addsuffix<__chunk__>is[tiddler]]\" variable=\"full-title\">\n<$list filter=\"[<full-title>removeprefix<__prefix__>]\" variable=\"chunk\">\n<span>{{$:/core/images/file}}</span> <$macrocall $name=\"leaf-link\" full-title=<<full-title>> chunk=<<chunk>>/>\n</$list>\n</$list>\n</li>\n\\end\n\n\\define branch-node(prefix,chunk,separator: \"/\")\n<li>\n<$set name=\"reveal-state\" value={{{ [[$:/state/tree/]addsuffix<__prefix__>addsuffix<__chunk__>] }}}>\n<$reveal type=\"nomatch\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"show\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$button setTitle=<<reveal-state>> setTo=\"hide\" class=\"tc-btn-invisible\">\n{{$:/core/images/folder}} <$text text=<<__chunk__>>/>\n</$button>\n</$reveal>\n<span>(<$count filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>removeprefix<__chunk__>] -[<__prefix__>addsuffix<__chunk__>]\"/>)</span>\n<$reveal type=\"match\" stateTitle=<<reveal-state>> text=\"show\">\n<$macrocall $name=\"tree-node\" prefix={{{ [<__prefix__>addsuffix<__chunk__>] }}} separator=<<__separator__>>/>\n</$reveal>\n</$set>\n</li>\n\\end\n\n\\define tree-node(prefix,separator: \"/\")\n<ol>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]!suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"leaf-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n<$list filter=\"[all[shadows+tiddlers]removeprefix<__prefix__>splitbefore<__separator__>sort[]suffix<__separator__>]\" variable=\"chunk\">\n<$macrocall $name=\"branch-node\" prefix=<<__prefix__>> chunk=<<chunk>> separator=<<__separator__>>/>\n</$list>\n</ol>\n\\end\n\n\\define tree(prefix: \"$:/\",separator: \"/\")\n<div class=\"tc-tree\">\n<span><$text text=<<__prefix__>>/></span>\n<div>\n<$macrocall $name=\"tree-node\" prefix=<<__prefix__>> separator=<<__separator__>>/>\n</div>\n</div>\n\\end\n"
        },
        "$:/core/macros/utils": {
            "title": "$:/core/macros/utils",
            "text": "\\define colour(colour)\n$colour$\n\\end\n"
        },
        "$:/snippets/minifocusswitcher": {
            "title": "$:/snippets/minifocusswitcher",
            "text": "<$select tiddler=\"$:/config/AutoFocus\">\n<$list filter=\"title tags text type fields\">\n<option value=<<currentTiddler>>><<currentTiddler>></option>\n</$list>\n</$select>\n"
        },
        "$:/snippets/minilanguageswitcher": {
            "title": "$:/snippets/minilanguageswitcher",
            "text": "<$select tiddler=\"$:/language\">\n<$list filter=\"[[$:/languages/en-GB]] [plugin-type[language]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"description\"><$view field=\"name\"><$view field=\"title\"/></$view></$view></option>\n</$list>\n</$select>"
        },
        "$:/snippets/minithemeswitcher": {
            "title": "$:/snippets/minithemeswitcher",
            "text": "\\define lingo-base() $:/language/ControlPanel/Theme/\n<<lingo Prompt>> <$select tiddler=\"$:/theme\">\n<$list filter=\"[plugin-type[theme]sort[title]]\">\n<option value=<<currentTiddler>>><$view field=\"name\"><$view field=\"title\"/></$view></option>\n</$list>\n</$select>"
        },
        "$:/snippets/modules": {
            "title": "$:/snippets/modules",
            "text": "\\define describeModuleType(type)\n{{$:/language/Docs/ModuleTypes/$type$}}\n\\end\n<$list filter=\"[moduletypes[]]\">\n\n!! <$macrocall $name=\"currentTiddler\" $type=\"text/plain\" $output=\"text/plain\"/>\n\n<$macrocall $name=\"describeModuleType\" type=<<currentTiddler>>/>\n\n<ul><$list filter=\"[all[current]modules[]]\"><li><$link><<currentTiddler>></$link>\n</li>\n</$list>\n</ul>\n</$list>\n"
        },
        "$:/palette": {
            "title": "$:/palette",
            "text": "$:/palettes/Vanilla"
        },
        "$:/snippets/paletteeditor": {
            "title": "$:/snippets/paletteeditor",
            "text": "<$transclude tiddler=\"$:/PaletteManager\"/>\n"
        },
        "$:/snippets/palettepreview": {
            "title": "$:/snippets/palettepreview",
            "text": "<$set name=\"currentTiddler\" value={{$:/palette}}>\n{{||$:/snippets/currpalettepreview}}\n</$set>\n"
        },
        "$:/snippets/paletteswitcher": {
            "title": "$:/snippets/paletteswitcher",
            "text": "<$linkcatcher to=\"$:/palette\">\n<div class=\"tc-chooser\"><$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Palette]sort[name]]\"><$set name=\"cls\" filter=\"[all[current]prefix{$:/palette}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' - <$view field=\"description\" format=\"text\"/>{{||$:/snippets/currpalettepreview}}</$link>\n</div></$set>\n</$list>\n</div>\n</$linkcatcher>\n"
        },
        "$:/snippets/peek-stylesheets": {
            "title": "$:/snippets/peek-stylesheets",
            "text": "\\define expandable-stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<$vars state=<<qualify \"$:/state/peek-stylesheets/open/\">>>\n<$set name=\"state\" value={{{ [<state>addsuffix<currentTiddler>] }}}>\n<li>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"no\" class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"nomatch\" state=<<state>> text=\"yes\" tag=\"span\">\n<$button set=<<state>> setTo=\"yes\" class=\"tc-btn-invisible\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$reveal type=\"match\" state=<<state>> text=\"yes\" tag=\"div\">\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</$reveal>\n</li>\n</$set>\n</$vars>\n</$list>\n</ol>\n\\end\n\n\\define stylesheets-list()\n<ol>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Stylesheet]!has[draft.of]]\">\n<li>\n<$link>\n<$view field=\"title\"/>\n</$link>\n<$set name=\"source\" tiddler=<<currentTiddler>>>\n<$wikify name=\"styles\" text=<<source>>>\n<pre>\n<code>\n<$text text=<<styles>>/>\n</code>\n</pre>\n</$wikify>\n</$set>\n</li>\n</$list>\n</ol>\n\\end\n\n<$vars modeState=<<qualify \"$:/state/peek-stylesheets/mode/\">>>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"expanded\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-right}} {{$:/language/ControlPanel/Stylesheets/Expand/Caption}}</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<$button set=<<modeState>> setTo=\"restored\" class=\"tc-btn-invisible\">{{$:/core/images/chevron-down}} {{$:/language/ControlPanel/Stylesheets/Restore/Caption}}</$button>\n</$reveal>\n\n<$reveal type=\"nomatch\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<expandable-stylesheets-list>>\n</$reveal>\n<$reveal type=\"match\" state=<<modeState>> text=\"expanded\" tag=\"div\">\n<<stylesheets-list>>\n</$reveal>\n\n</$vars>\n"
        },
        "$:/temp/search": {
            "title": "$:/temp/search",
            "text": ""
        },
        "$:/tags/AdvancedSearch": {
            "title": "$:/tags/AdvancedSearch",
            "list": "[[$:/core/ui/AdvancedSearch/Standard]] [[$:/core/ui/AdvancedSearch/System]] [[$:/core/ui/AdvancedSearch/Shadows]] [[$:/core/ui/AdvancedSearch/Filter]]"
        },
        "$:/tags/AdvancedSearch/FilterButton": {
            "title": "$:/tags/AdvancedSearch/FilterButton",
            "list": "$:/core/ui/AdvancedSearch/Filter/FilterButtons/dropdown $:/core/ui/AdvancedSearch/Filter/FilterButtons/clear $:/core/ui/AdvancedSearch/Filter/FilterButtons/export $:/core/ui/AdvancedSearch/Filter/FilterButtons/delete"
        },
        "$:/tags/ControlPanel": {
            "title": "$:/tags/ControlPanel",
            "list": "$:/core/ui/ControlPanel/Info $:/core/ui/ControlPanel/Appearance $:/core/ui/ControlPanel/Settings $:/core/ui/ControlPanel/Saving $:/core/ui/ControlPanel/Plugins $:/core/ui/ControlPanel/Tools $:/core/ui/ControlPanel/Internals"
        },
        "$:/tags/ControlPanel/Info": {
            "title": "$:/tags/ControlPanel/Info",
            "list": "$:/core/ui/ControlPanel/Basics $:/core/ui/ControlPanel/Advanced"
        },
        "$:/tags/ControlPanel/Plugins": {
            "title": "$:/tags/ControlPanel/Plugins",
            "list": "[[$:/core/ui/ControlPanel/Plugins/Installed]] [[$:/core/ui/ControlPanel/Plugins/Add]]"
        },
        "$:/tags/EditTemplate": {
            "title": "$:/tags/EditTemplate",
            "list": "[[$:/core/ui/EditTemplate/controls]] [[$:/core/ui/EditTemplate/title]] [[$:/core/ui/EditTemplate/tags]] [[$:/core/ui/EditTemplate/shadow]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/EditTemplate/body]] [[$:/core/ui/EditTemplate/type]] [[$:/core/ui/EditTemplate/fields]]"
        },
        "$:/tags/EditToolbar": {
            "title": "$:/tags/EditToolbar",
            "list": "[[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/cancel]] [[$:/core/ui/Buttons/save]]"
        },
        "$:/tags/EditorToolbar": {
            "title": "$:/tags/EditorToolbar",
            "list": "$:/core/ui/EditorToolbar/paint $:/core/ui/EditorToolbar/opacity $:/core/ui/EditorToolbar/line-width $:/core/ui/EditorToolbar/rotate-left $:/core/ui/EditorToolbar/clear $:/core/ui/EditorToolbar/bold $:/core/ui/EditorToolbar/italic $:/core/ui/EditorToolbar/strikethrough $:/core/ui/EditorToolbar/underline $:/core/ui/EditorToolbar/superscript $:/core/ui/EditorToolbar/subscript $:/core/ui/EditorToolbar/mono-line $:/core/ui/EditorToolbar/mono-block $:/core/ui/EditorToolbar/quote $:/core/ui/EditorToolbar/list-bullet $:/core/ui/EditorToolbar/list-number $:/core/ui/EditorToolbar/heading-1 $:/core/ui/EditorToolbar/heading-2 $:/core/ui/EditorToolbar/heading-3 $:/core/ui/EditorToolbar/heading-4 $:/core/ui/EditorToolbar/heading-5 $:/core/ui/EditorToolbar/heading-6 $:/core/ui/EditorToolbar/link $:/core/ui/EditorToolbar/excise $:/core/ui/EditorToolbar/picture $:/core/ui/EditorToolbar/stamp $:/core/ui/EditorToolbar/size $:/core/ui/EditorToolbar/editor-height $:/core/ui/EditorToolbar/more $:/core/ui/EditorToolbar/preview $:/core/ui/EditorToolbar/preview-type"
        },
        "$:/tags/Manager/ItemMain": {
            "title": "$:/tags/Manager/ItemMain",
            "list": "$:/Manager/ItemMain/WikifiedText $:/Manager/ItemMain/RawText $:/Manager/ItemMain/Fields"
        },
        "$:/tags/Manager/ItemSidebar": {
            "title": "$:/tags/Manager/ItemSidebar",
            "list": "$:/Manager/ItemSidebar/Tags $:/Manager/ItemSidebar/Colour $:/Manager/ItemSidebar/Icon $:/Manager/ItemSidebar/Tools"
        },
        "$:/tags/MoreSideBar": {
            "title": "$:/tags/MoreSideBar",
            "list": "[[$:/core/ui/MoreSideBar/All]] [[$:/core/ui/MoreSideBar/Recent]] [[$:/core/ui/MoreSideBar/Tags]] [[$:/core/ui/MoreSideBar/Missing]] [[$:/core/ui/MoreSideBar/Drafts]] [[$:/core/ui/MoreSideBar/Orphans]] [[$:/core/ui/MoreSideBar/Types]] [[$:/core/ui/MoreSideBar/System]] [[$:/core/ui/MoreSideBar/Shadows]] [[$:/core/ui/MoreSideBar/Explorer]] [[$:/core/ui/MoreSideBar/Plugins]]",
            "text": ""
        },
        "$:/tags/PageControls": {
            "title": "$:/tags/PageControls",
            "list": "[[$:/core/ui/Buttons/home]] [[$:/core/ui/Buttons/close-all]] [[$:/core/ui/Buttons/fold-all]] [[$:/core/ui/Buttons/unfold-all]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/new-tiddler]] [[$:/core/ui/Buttons/new-journal]] [[$:/core/ui/Buttons/new-image]] [[$:/core/ui/Buttons/import]] [[$:/core/ui/Buttons/export-page]] [[$:/core/ui/Buttons/control-panel]] [[$:/core/ui/Buttons/advanced-search]] [[$:/core/ui/Buttons/manager]] [[$:/core/ui/Buttons/tag-manager]] [[$:/core/ui/Buttons/language]] [[$:/core/ui/Buttons/palette]] [[$:/core/ui/Buttons/theme]] [[$:/core/ui/Buttons/storyview]] [[$:/core/ui/Buttons/encryption]] [[$:/core/ui/Buttons/timestamp]] [[$:/core/ui/Buttons/full-screen]] [[$:/core/ui/Buttons/print]] [[$:/core/ui/Buttons/save-wiki]] [[$:/core/ui/Buttons/refresh]] [[$:/core/ui/Buttons/more-page-actions]]"
        },
        "$:/tags/PageTemplate": {
            "title": "$:/tags/PageTemplate",
            "list": "[[$:/core/ui/PageTemplate/topleftbar]] [[$:/core/ui/PageTemplate/toprightbar]] [[$:/core/ui/PageTemplate/sidebar]] [[$:/core/ui/PageTemplate/story]] [[$:/core/ui/PageTemplate/alerts]]",
            "text": ""
        },
        "$:/tags/PluginLibrary": {
            "title": "$:/tags/PluginLibrary",
            "list": "$:/config/OfficialPluginLibrary"
        },
        "$:/tags/SideBar": {
            "title": "$:/tags/SideBar",
            "list": "[[$:/core/ui/SideBar/Open]] [[$:/core/ui/SideBar/Recent]] [[$:/core/ui/SideBar/Tools]] [[$:/core/ui/SideBar/More]]",
            "text": ""
        },
        "$:/tags/SideBarSegment": {
            "title": "$:/tags/SideBarSegment",
            "list": "[[$:/core/ui/SideBarSegments/site-title]] [[$:/core/ui/SideBarSegments/site-subtitle]] [[$:/core/ui/SideBarSegments/page-controls]] [[$:/core/ui/SideBarSegments/search]] [[$:/core/ui/SideBarSegments/tabs]]"
        },
        "$:/tags/TiddlerInfo": {
            "title": "$:/tags/TiddlerInfo",
            "list": "[[$:/core/ui/TiddlerInfo/Tools]] [[$:/core/ui/TiddlerInfo/References]] [[$:/core/ui/TiddlerInfo/Tagging]] [[$:/core/ui/TiddlerInfo/List]] [[$:/core/ui/TiddlerInfo/Listed]] [[$:/core/ui/TiddlerInfo/Fields]]",
            "text": ""
        },
        "$:/tags/TiddlerInfo/Advanced": {
            "title": "$:/tags/TiddlerInfo/Advanced",
            "list": "[[$:/core/ui/TiddlerInfo/Advanced/ShadowInfo]] [[$:/core/ui/TiddlerInfo/Advanced/PluginInfo]]"
        },
        "$:/tags/ViewTemplate": {
            "title": "$:/tags/ViewTemplate",
            "list": "[[$:/core/ui/ViewTemplate/title]] [[$:/core/ui/ViewTemplate/unfold]] [[$:/core/ui/ViewTemplate/subtitle]] [[$:/core/ui/ViewTemplate/tags]] [[$:/core/ui/ViewTemplate/classic]] [[$:/core/ui/ViewTemplate/body]]"
        },
        "$:/tags/ViewToolbar": {
            "title": "$:/tags/ViewToolbar",
            "list": "[[$:/core/ui/Buttons/more-tiddler-actions]] [[$:/core/ui/Buttons/info]] [[$:/core/ui/Buttons/new-here]] [[$:/core/ui/Buttons/new-journal-here]] [[$:/core/ui/Buttons/clone]] [[$:/core/ui/Buttons/export-tiddler]] [[$:/core/ui/Buttons/edit]] [[$:/core/ui/Buttons/delete]] [[$:/core/ui/Buttons/permalink]] [[$:/core/ui/Buttons/permaview]] [[$:/core/ui/Buttons/open-window]] [[$:/core/ui/Buttons/close-others]] [[$:/core/ui/Buttons/close]] [[$:/core/ui/Buttons/fold-others]] [[$:/core/ui/Buttons/fold]]"
        },
        "$:/snippets/themeswitcher": {
            "title": "$:/snippets/themeswitcher",
            "text": "<$linkcatcher to=\"$:/theme\">\n<div class=\"tc-chooser\"><$list filter=\"[plugin-type[theme]sort[title]]\"><$set name=\"cls\" filter=\"[all[current]field:title{$:/theme}] [[$:/theme]!has[text]addsuffix[s/tiddlywiki/vanilla]field:title<currentTiddler>] +[limit[1]]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>><$link to={{!!title}}>''<$view field=\"name\" format=\"text\"/>'' <$view field=\"description\" format=\"text\"/></$link></div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
        },
        "$:/core/wiki/title": {
            "title": "$:/core/wiki/title",
            "text": "{{$:/SiteTitle}} --- {{$:/SiteSubtitle}}"
        },
        "$:/view": {
            "title": "$:/view",
            "text": "classic"
        },
        "$:/snippets/viewswitcher": {
            "title": "$:/snippets/viewswitcher",
            "text": "\\define icon()\n$:/core/images/storyview-$(storyview)$\n\\end\n<$linkcatcher to=\"$:/view\">\n<div class=\"tc-chooser tc-viewswitcher\">\n<$list filter=\"[storyviews[]]\" variable=\"storyview\">\n<$set name=\"cls\" filter=\"[<storyview>prefix{$:/view}]\" value=\"tc-chooser-item tc-chosen\" emptyValue=\"tc-chooser-item\"><div class=<<cls>>>\n<$link to=<<storyview>>><$transclude tiddler=<<icon>>/><$text text=<<storyview>>/></$link>\n</div>\n</$set>\n</$list>\n</div>\n</$linkcatcher>"
        }
    }
}
<svg class="tc-image-cancel-button tc-image-button" viewBox="0 0 20 20
" width="22pt" height="22pt">
<rect width="20" height="20" style="fill:yellow;stroke:black;stroke-width:3" />
</svg>
<svg class="tc-image-cancel-button tc-image-button" viewBox="0 0 20 20
" width="22pt" height="22pt">
<rect width="20" height="20" style="fill:red;stroke:black;stroke-width:3" />
</svg>
<$action-sendmessage
	$message="tm-edit-text-operation"
	$param="replace-selection"
	text=<<now YYYY年0MM月0DD日pm0hh12:0mm:0ss>>
/>
{
    "易中天": "1",
    "高阳": "1",
    "J.D. 万斯": "1",
    "Jay Taylor": "1",
    "关正文": "1",
    "毛姆": "1",
    "梅鼎祚": "1",
    "李渔": "1",
    "张岱": "1",
    "汪曾祺": "1",
    "江盈科": "1",
    "沈君山": "1",
    "连阔如": "1",
    "林语堂": "1",
    "罗伯特·M·波西格": "1",
    "理查德·耶茨": "1",
    "梁启超": "1",
    "严歌苓": "1",
    "阿什利·万斯": "1",
    "欧阳修": "1",
    "南怀瑾": "1",
    "阿里·沙维特": "1",
    "王国维": "1",
    "乐钧": "1",
    "齐如山": "1",
    "袁枚": "1",
    "丹纳": "1",
    "傅雷": "1",
    "张中行": "1",
    "许慎": "1",
    "徐明星": "1",
    "瑞·达利欧": "1",
    "多人": "1",
    "郝明义": "1",
    "查尔斯·范多伦": "1",
    "曹雪芹": "1",
    "贝奈戴托·克罗齐": "1",
    "史景迁": "1",
    "杉野干人 ": "1",
    "梁遇春": "1",
    "斯蒂芬·茨威格": "1",
    "豪尔赫·路易斯·博尔赫斯": "1",
    "加西亚·马尔克斯": "1",
    "托马斯.布朗": "1",
    "李石岑": "1",
    "鲁迅": "1",
    "苏东坡": "1",
    "陈渠珍 ": "1",
    "理查德·费曼": "1",
    "克利夫顿·费迪曼": "1",
    "尼科洛·马基雅维里": "1",
    "迈克尔·麦尔 ": "1",
    "诺贝特·埃利亚斯 ": "1",
    "葛兆光": "1",
    "松田行正": "1",
    "庄和诚": "1",
    "熊培云": "1",
    "梁文道": "1",
    "汪兆骞": "1",
    "H.W.布兰兹": "1",
    "村上春树": "1",
    "冶文彪": "1",
    "牟宗三": "1",
    "周振甫": "1",
    "叔本华": "1",
    "张贤亮": "1",
    "查建英": "1",
    "许晖": "1",
    "胡适": "1",
    "董玥": "1",
    "张北海": "1",
    "西尔维亚·比奇": "1",
    "路遥": "1",
    "孔亚雷": "1",
    "扶霞·邓洛普": "1",
    "盖伊·特立斯": "1",
    "蒋方舟": "1",
    "刘华杰": "1",
    "蒋廷黻": "1",
    "埃布鲁·宝雅": "1",
    "菲利普·胡克": "1",
    "保罗·科埃略": "1",
    "司马光": "1",
    "安托万·德·圣-埃克苏佩里": "1",
    "安迪·莱利": "1",
    "刘夙": "1",
    "马克斯·苏萨克": "1",
    "海莲·汉芙 ": "1",
    "翁贝托·艾柯": "1",
    "朱岳": "1",
    "N/A": "1",
    "阿来": "1",
    "卢梭": "1",
    "葛小佳": "1",
    "肯尼斯·格雷厄姆": "1",
    "纳西姆·尼古拉斯·塔勒布": "1",
    "李劼": "1",
    "安妮·杜克": "1",
    "安东尼奥·G·伊图尔": "1",
    "加文·弗朗西斯": "1",
    "弗朗茨·卡夫卡 ": "1",
    "汤姆·哈泽德": "1",
    "悉达多·穆克吉": "1",
    "埃默·托尔斯": "1",
    "克里斯汀·金博尔": "1",
    "托马斯·索维尔": "1",
    "老舍": "1",
    "赫尔曼·麦尔维尔": "1",
    "阿贝尔·加缪": "1",
    "古拉斯·费恩": "1",
    "帕·聚斯金德": "1",
    "许子东": "1",
    "荣格": "1",
    "玛蒂娜·莱维特": "1",
    "蒂姆·哈福德": "1",
    "特兰·格里芬": "1",
    "张辉": "1",
    "史军": "1",
    "威尔·施瓦尔贝": "1",
    "哈珀·李": "1",
    "陈嘉映": "1",
    "奥根·赫立格尔": "1",
    "托妮·莫里森": "1",
    "萨米耶·德梅斯特": "1",
    "以赛亚·伯林": "1",
    "杰克·伦敦": "1",
    "萨米尔·奥卡沙": "1",
    "托马斯·福斯特": "1",
    "张斌": "1",
    "丹尼尔·查莫维茨": "1",
    "江怡": "1",
    "罗杰·夏蒂埃": "1",
    "理查德·梅比": "1",
    "丹尼尔·卡尼曼": "1",
    "马修·巴特尔斯": "1",
    "王学泰": "1",
    "乔·昆南": "1",
    "保罗·格雷厄姆": "1",
    "帕斯卡": "1",
    "诺曼·道伊奇": "1",
    "田艺苗": "1",
    "罗伯特·阿克塞尔罗德": "1",
    "马炜梁": "1",
    "米哈里·契克森米哈赖": "1",
    "斯蒂芬妮·萨顿": "1",
    "埃特加·凯雷特": "1",
    "R.J.帕拉西": "1",
    "稻盛和夫": "1",
    "孔飞力": "1",
    "菲利普·津巴多": "1",
    "德内拉·梅多斯": "1",
    "大卫·E.费什曼": "1",
    "乔治·巴塔耶": "1",
    "玛乔丽·谢弗": "1",
    "耶日·科辛斯基": "1",
    "戴维·R. 蒙哥马利": "1",
    "格雷厄姆·普里斯特": "1",
    "米歇尔·渥克": "1",
    "马修·萨伊德": "1",
    "纳博科夫": "1",
    "张玮": "1",
    "芭芭拉·金索沃": "1",
    "彼得·渥雷本": "1",
    "拉兹洛·博克": "1",
    "锺叔河": "1",
    "托马斯·沃尔夫": "1",
    "唐克扬": "1",
    "亨利·M·罗伯特 ": "1",
    "马丁·布莱泽": "1",
    "欧内斯特·海明威": "1",
    "冯道": "1",
    "尼尔·麦格雷戈": "1",
    "韩少功": "1",
    "沈复": "1",
    "弗雷德里克·巴克曼": "1",
    "库尔特·冯内古特": "1",
    "克里斯塔·施罗德 ": "1",
    "乙一": "1",
    "一行禅师": "1",
    "威廉·戈尔丁": "1",
    "基思·斯坦诺维奇": "1",
    "艾米·斯图尔特": "1",
    "戴维·乔治·哈斯凯尔": "1",
    "丹尼尔·丹尼特": "1",
    "安贝托·艾柯": "1",
    "姜建邦": "1",
    "希阿荣博堪布": "1",
    "辛德勇": "1",
    "罗杰·R·霍克": "1",
    "汉斯·罗斯林": "1",
    "詹姆斯·乔伊斯": "1",
    "杰克·格罗根": "1",
    "罗尔夫·多贝里": "1",
    "梁绍壬": "1",
    "夏庭芝": "1",
    "张潮": "1",
    "屠隆": "1",
    "沈迦": "1",
    "唐诺": "1",
    "段义孚": "1",
    "威尔·杜兰特": "1",
    "吴鲁芹": "1",
    "昭梿": "1",
    "理查德·德威特": "1",
    "张云": "1",
    "刘勃": "1",
    "吴晗": "1",
    "克里斯蒂安·葛朗宁": "1",
    "项立刚": "1",
    "弗吉尼亚·伍尔夫": "1",
    "普里莫·莱维": "1",
    "南星": "1",
    "杨天石": "1",
    "杨宪益": "1",
    "盖伊·萨杰": "1",
    "马里奥·巴尔加斯·略萨": "1",
    "小白": "1",
    "瓦茨拉夫·哈维尔": "1",
    "罗贝托·波拉尼奥": "1",
    "夏丏尊": "1",
    "金宇澄": "1",
    "古多·克诺普": "1",
    "爱德华·霍利斯": "1",
    "黄仁宇": "1",
    "金易": "1",
    "海德纳吉": "1",
    "汪劲武": "1",
    "岸见一郎": "1",
    "赫尔曼·黑塞": "1",
    "李开复": "1",
    "阎连科": "1",
    "佩内洛普·菲兹杰拉德": "1",
    "塔拉·韦斯特弗": "1",
    "罗恩·弗莱": "1",
    "小泉八云": "1",
    "芭芭拉·艾伦瑞克": "1",
    "让-亨利·法布尔": "1",
    "杨炫之": "1",
    "葛剑雄": "1",
    "王夫之": "1",
    "莫里斯·梅特林克": "1",
    "哈罗德·布鲁姆": "1",
    "萧沆": "1",
    "刘向": "1",
    "杰克·凯鲁亚克": "1",
    "凯瑟琳·辛格": "1",
    "沈从文": "1",
    "史蒂芬·柯维": "1",
    "刘义庆": "1",
    "埃本·亚历山大": "1",
    "爱德华·斯诺登": "1",
    "特里斯坦·古利": "1",
    "亨利·戴维·梭罗": "1",
    "叶灵凤": "1",
    "刘易斯·托马斯": "1",
    "安德烈亚斯·瓦格纳": "1",
    "安德烈·纪德": "1",
    "乔治·伽莫夫": "1",
    "伯特·霍尔多布勒": "1",
    "埃里克·布雷姆": "1",
    "乔斯坦·贾德": "1",
    "卡尔·齐默": "1",
    "爱德华·威尔逊": "1",
    "内森·沃尔夫": "1",
    "陀思妥耶夫斯基": "1",
    "诺桑·亚诺夫斯基": "1",
    "卡尔·波普尔": "1",
    "苏珊·平克": "1",
    "约翰·布罗克曼": "1",
    "乔治•莱考夫": "1",
    "布鲁克·诺埃尔·穆尔": "1",
    "索尔·贝娄": "1",
    "安德烈娅·武尔夫": "1",
    "余英时": "1",
    "吉米·索尼": "1",
    "米哈伊尔·布尔加科夫": "1",
    "赛思·斯蒂芬斯·达维多维茨": "1",
    "彼得·汉德克": "1",
    "斋藤茂男": "1",
    "萨尔斯伯格": "1",
    "威廉·巴雷特": "1",
    "特里·伊格尔顿": "1",
    "史蒂芬·平克": "1",
    "塞缪尔·早川": "1",
    "卡森·麦卡勒斯": "1",
    "加里·史密斯": "1",
    "爱德华·多尼克": "1",
    "乔纳森·德罗里": "1",
    "张大春": "1",
    "亚历克斯·汉诺尔德": "1",
    "本杰明·格雷厄姆": "1",
    "劳伦斯·M.克劳斯": "1",
    "理查德·道金斯": "1",
    "约翰•布罗克曼": "1",
    "佩尔西·戴康尼斯": "1",
    "萨缪尔·法努斯": "1",
    "克莱尔·科克-斯塔基": "1",
    "谷崎润一郎": "1",
    "莱奥·罗格塞斯": "1",
    "彼得·P.罗德": "1",
    "顾颉刚": "1",
    "杨本芬": "1",
    "何帆": "1",
    "尼古拉斯·A.巴斯贝恩": "1",
    "厄休拉·M. 富兰克林": "1",
    "查尔斯·韦兰": "1",
    "托马斯·D.西利": "1",
    "唐小兵": "1",
    "王云五": "1",
    "A·司各特·伯格": "1",
    "瑞·蒙克": "1",
    "蒂姆·费里斯": "1",
    "赫伯特·R.洛特曼": "1",
    "罗伯特·佩恩": "1",
    "卡洛·罗韦利": "1",
    "杰弗里·迈耶斯": "1",
    "史蒂夫·斯托加茨": "1",
    "耶尔·阿德勒": "1",
    "顾准": "1",
    "大卫·班布里基": "1",
    "汉娜·阿伦特": "1",
    "史明智": "1",
    "周楫": "1",
    "罗伯特·赖特": "1",
    "斯科特·佩奇": "1",
    "迈克尔·刘易斯": "1",
    "金克木": "1",
    "罗宾·戴维森": "1",
    "平井孝志": "1",
    "侯世达": "1",
    "小川仁志": "1",
    "马丁·普克纳": "1",
    "斯拉沃热·齐泽克": "1",
    "贾雷德·戴蒙德": "1",
    "戴维·多伊奇": "1",
    "尼克·莱恩": "1",
    "止庵": "1",
    "列纳德·蒙洛迪诺": "1",
    "黛博拉·克莱默": "1",
    "阿图·葛文德": "1",
    "张大复": "1",
    "奥斯卡·王尔德": "1",
    "米歇尔·费曼": "1",
    "安东尼奥·R·达马西奥": "1",
    "伊塔洛·卡尔维诺": "1"
}
{
    "历史小说": "1",
    "读书随笔": "1",
    "古代文学": "1",
    "回忆录": "1",
    "人物传记": "1",
    "外国文学": "1",
    "中国现当代文学": "1",
    "社会科学": "1",
    "纪实文学": "1",
    "自然科学": "1",
    "历史研究": "1",
    "趣味生活": "1",
    "经济生活": "1",
    "认知哲学": "1",
    "艺术美学": "1",
    "宗教哲学": "1"
}
{
    "中国大陆": "1",
    "中国台湾": "1",
    "美国": "1",
    "法国": "1",
    "明代": "1",
    "清代": "1",
    "英国": "1",
    "以色列": "1",
    "民国": "1",
    "意大利": "1",
    "日本": "1",
    "奥地利": "1",
    "阿根廷": "1",
    "哥伦比亚": "1",
    "秦代": "1",
    "德国": "1",
    "香港": "1",
    "宋代": "1",
    "西班牙": "1",
    "土耳其": "1",
    "N/A": "1",
    "巴西": "1",
    "澳大利亚": "1",
    "瑞士": "1",
    "瑞典": "1",
    "汉代": "1",
    "加拿大": "1",
    "爱尔兰": "1",
    "元代": "1",
    "秘鲁": "1",
    "捷克": "1",
    "智利": "1",
    "比利时": "1",
    "南北朝": "1",
    "挪威": "1",
    "俄国": "1",
    "丹麦": "1",
    "斯洛文尼亚": "1"
}
{
    "已读": "1",
    "正读": "1",
    "想读": "1",
    "Task": "1"
}
{
    "文言津逮": "1",
    "经典小品": "1",
    "学术": "1",
    "N/A": "1",
    "书之书": "1",
    "博物学": "1",
    "Edge": "1"
}
㋡
iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAAXNSR0IB2cksfwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAGNQTFRFAAAA7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYI7QYIo5OZWwAAACF0Uk5TADbqTglCZkgMMNj/7w/k9Rt4lq7JpbpRafjDA1B72+GKilVGugAAAFdJREFUeJxjYEABjEzofGZcfBZWNnYOJD4nFzc3NxMPnM/Lxw0C/AIwAUFuCBCCCQhDBURgAqJQATGYgDhUQAJuvySYLyUNd4+MrBy3vAILYfdi5TOg8wEOTAQHATuOXgAAAABJRU5ErkJggg==
/*!
 *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */
/* FONT PATH
 * -------------------------- */
@font-face {
  font-family: 'FontAwesome';
  src: url(data:application/font-woff;base64,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) format("woff");  font-weight: normal;
  font-style: normal;
}
.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* makes the font 33% larger relative to the icon container */
.fa-lg {
  font-size: 1.33333333em;
  line-height: 0.75em;
  vertical-align: -15%;
}
.fa-2x {
  font-size: 2em;
}
.fa-3x {
  font-size: 3em;
}
.fa-4x {
  font-size: 4em;
}
.fa-5x {
  font-size: 5em;
}
.fa-fw {
  width: 1.28571429em;
  text-align: center;
}
.fa-ul {
  padding-left: 0;
  margin-left: 2.14285714em;
  list-style-type: none;
}
.fa-ul > li {
  position: relative;
}
.fa-li {
  position: absolute;
  left: -2.14285714em;
  width: 2.14285714em;
  top: 0.14285714em;
  text-align: center;
}
.fa-li.fa-lg {
  left: -1.85714286em;
}
.fa-border {
  padding: .2em .25em .15em;
  border: solid 0.08em #eeeeee;
  border-radius: .1em;
}
.fa-pull-left {
  float: left;
}
.fa-pull-right {
  float: right;
}
.fa.fa-pull-left {
  margin-right: .3em;
}
.fa.fa-pull-right {
  margin-left: .3em;
}
/* Deprecated as of 4.4.0 */
.pull-right {
  float: right;
}
.pull-left {
  float: left;
}
.fa.pull-left {
  margin-right: .3em;
}
.fa.pull-right {
  margin-left: .3em;
}
.fa-spin {
  -webkit-animation: fa-spin 2s infinite linear;
  animation: fa-spin 2s infinite linear;
}
.fa-pulse {
  -webkit-animation: fa-spin 1s infinite steps(8);
  animation: fa-spin 1s infinite steps(8);
}
@-webkit-keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
@keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
.fa-rotate-90 {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.fa-rotate-180 {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.fa-rotate-270 {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
  -webkit-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  transform: rotate(270deg);
}
.fa-flip-horizontal {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
  -webkit-transform: scale(-1, 1);
  -ms-transform: scale(-1, 1);
  transform: scale(-1, 1);
}
.fa-flip-vertical {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
  -webkit-transform: scale(1, -1);
  -ms-transform: scale(1, -1);
  transform: scale(1, -1);
}
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
  filter: none;
}
.fa-stack {
  position: relative;
  display: inline-block;
  width: 2em;
  height: 2em;
  line-height: 2em;
  vertical-align: middle;
}
.fa-stack-1x,
.fa-stack-2x {
  position: absolute;
  left: 0;
  width: 100%;
  text-align: center;
}
.fa-stack-1x {
  line-height: inherit;
}
.fa-stack-2x {
  font-size: 2em;
}
.fa-inverse {
  color: #ffffff;
}
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
   readers do not read off random characters that represent icons */
.fa-glass:before {
  content: "\f000";
}
.fa-music:before {
  content: "\f001";
}
.fa-search:before {
  content: "\f002";
}
.fa-envelope-o:before {
  content: "\f003";
}
.fa-heart:before {
  content: "\f004";
}
.fa-star:before {
  content: "\f005";
}
.fa-star-o:before {
  content: "\f006";
}
.fa-user:before {
  content: "\f007";
}
.fa-film:before {
  content: "\f008";
}
.fa-th-large:before {
  content: "\f009";
}
.fa-th:before {
  content: "\f00a";
}
.fa-th-list:before {
  content: "\f00b";
}
.fa-check:before {
  content: "\f00c";
}
.fa-remove:before,
.fa-close:before,
.fa-times:before {
  content: "\f00d";
}
.fa-search-plus:before {
  content: "\f00e";
}
.fa-search-minus:before {
  content: "\f010";
}
.fa-power-off:before {
  content: "\f011";
}
.fa-signal:before {
  content: "\f012";
}
.fa-gear:before,
.fa-cog:before {
  content: "\f013";
}
.fa-trash-o:before {
  content: "\f014";
}
.fa-home:before {
  content: "\f015";
}
.fa-file-o:before {
  content: "\f016";
}
.fa-clock-o:before {
  content: "\f017";
}
.fa-road:before {
  content: "\f018";
}
.fa-download:before {
  content: "\f019";
}
.fa-arrow-circle-o-down:before {
  content: "\f01a";
}
.fa-arrow-circle-o-up:before {
  content: "\f01b";
}
.fa-inbox:before {
  content: "\f01c";
}
.fa-play-circle-o:before {
  content: "\f01d";
}
.fa-rotate-right:before,
.fa-repeat:before {
  content: "\f01e";
}
.fa-refresh:before {
  content: "\f021";
}
.fa-list-alt:before {
  content: "\f022";
}
.fa-lock:before {
  content: "\f023";
}
.fa-flag:before {
  content: "\f024";
}
.fa-headphones:before {
  content: "\f025";
}
.fa-volume-off:before {
  content: "\f026";
}
.fa-volume-down:before {
  content: "\f027";
}
.fa-volume-up:before {
  content: "\f028";
}
.fa-qrcode:before {
  content: "\f029";
}
.fa-barcode:before {
  content: "\f02a";
}
.fa-tag:before {
  content: "\f02b";
}
.fa-tags:before {
  content: "\f02c";
}
.fa-book:before {
  content: "\f02d";
}
.fa-bookmark:before {
  content: "\f02e";
}
.fa-print:before {
  content: "\f02f";
}
.fa-camera:before {
  content: "\f030";
}
.fa-font:before {
  content: "\f031";
}
.fa-bold:before {
  content: "\f032";
}
.fa-italic:before {
  content: "\f033";
}
.fa-text-height:before {
  content: "\f034";
}
.fa-text-width:before {
  content: "\f035";
}
.fa-align-left:before {
  content: "\f036";
}
.fa-align-center:before {
  content: "\f037";
}
.fa-align-right:before {
  content: "\f038";
}
.fa-align-justify:before {
  content: "\f039";
}
.fa-list:before {
  content: "\f03a";
}
.fa-dedent:before,
.fa-outdent:before {
  content: "\f03b";
}
.fa-indent:before {
  content: "\f03c";
}
.fa-video-camera:before {
  content: "\f03d";
}
.fa-photo:before,
.fa-image:before,
.fa-picture-o:before {
  content: "\f03e";
}
.fa-pencil:before {
  content: "\f040";
}
.fa-map-marker:before {
  content: "\f041";
}
.fa-adjust:before {
  content: "\f042";
}
.fa-tint:before {
  content: "\f043";
}
.fa-edit:before,
.fa-pencil-square-o:before {
  content: "\f044";
}
.fa-share-square-o:before {
  content: "\f045";
}
.fa-check-square-o:before {
  content: "\f046";
}
.fa-arrows:before {
  content: "\f047";
}
.fa-step-backward:before {
  content: "\f048";
}
.fa-fast-backward:before {
  content: "\f049";
}
.fa-backward:before {
  content: "\f04a";
}
.fa-play:before {
  content: "\f04b";
}
.fa-pause:before {
  content: "\f04c";
}
.fa-stop:before {
  content: "\f04d";
}
.fa-forward:before {
  content: "\f04e";
}
.fa-fast-forward:before {
  content: "\f050";
}
.fa-step-forward:before {
  content: "\f051";
}
.fa-eject:before {
  content: "\f052";
}
.fa-chevron-left:before {
  content: "\f053";
}
.fa-chevron-right:before {
  content: "\f054";
}
.fa-plus-circle:before {
  content: "\f055";
}
.fa-minus-circle:before {
  content: "\f056";
}
.fa-times-circle:before {
  content: "\f057";
}
.fa-check-circle:before {
  content: "\f058";
}
.fa-question-circle:before {
  content: "\f059";
}
.fa-info-circle:before {
  content: "\f05a";
}
.fa-crosshairs:before {
  content: "\f05b";
}
.fa-times-circle-o:before {
  content: "\f05c";
}
.fa-check-circle-o:before {
  content: "\f05d";
}
.fa-ban:before {
  content: "\f05e";
}
.fa-arrow-left:before {
  content: "\f060";
}
.fa-arrow-right:before {
  content: "\f061";
}
.fa-arrow-up:before {
  content: "\f062";
}
.fa-arrow-down:before {
  content: "\f063";
}
.fa-mail-forward:before,
.fa-share:before {
  content: "\f064";
}
.fa-expand:before {
  content: "\f065";
}
.fa-compress:before {
  content: "\f066";
}
.fa-plus:before {
  content: "\f067";
}
.fa-minus:before {
  content: "\f068";
}
.fa-asterisk:before {
  content: "\f069";
}
.fa-exclamation-circle:before {
  content: "\f06a";
}
.fa-gift:before {
  content: "\f06b";
}
.fa-leaf:before {
  content: "\f06c";
}
.fa-fire:before {
  content: "\f06d";
}
.fa-eye:before {
  content: "\f06e";
}
.fa-eye-slash:before {
  content: "\f070";
}
.fa-warning:before,
.fa-exclamation-triangle:before {
  content: "\f071";
}
.fa-plane:before {
  content: "\f072";
}
.fa-calendar:before {
  content: "\f073";
}
.fa-random:before {
  content: "\f074";
}
.fa-comment:before {
  content: "\f075";
}
.fa-magnet:before {
  content: "\f076";
}
.fa-chevron-up:before {
  content: "\f077";
}
.fa-chevron-down:before {
  content: "\f078";
}
.fa-retweet:before {
  content: "\f079";
}
.fa-shopping-cart:before {
  content: "\f07a";
}
.fa-folder:before {
  content: "\f07b";
}
.fa-folder-open:before {
  content: "\f07c";
}
.fa-arrows-v:before {
  content: "\f07d";
}
.fa-arrows-h:before {
  content: "\f07e";
}
.fa-bar-chart-o:before,
.fa-bar-chart:before {
  content: "\f080";
}
.fa-twitter-square:before {
  content: "\f081";
}
.fa-facebook-square:before {
  content: "\f082";
}
.fa-camera-retro:before {
  content: "\f083";
}
.fa-key:before {
  content: "\f084";
}
.fa-gears:before,
.fa-cogs:before {
  content: "\f085";
}
.fa-comments:before {
  content: "\f086";
}
.fa-thumbs-o-up:before {
  content: "\f087";
}
.fa-thumbs-o-down:before {
  content: "\f088";
}
.fa-star-half:before {
  content: "\f089";
}
.fa-heart-o:before {
  content: "\f08a";
}
.fa-sign-out:before {
  content: "\f08b";
}
.fa-linkedin-square:before {
  content: "\f08c";
}
.fa-thumb-tack:before {
  content: "\f08d";
}
.fa-external-link:before {
  content: "\f08e";
}
.fa-sign-in:before {
  content: "\f090";
}
.fa-trophy:before {
  content: "\f091";
}
.fa-github-square:before {
  content: "\f092";
}
.fa-upload:before {
  content: "\f093";
}
.fa-lemon-o:before {
  content: "\f094";
}
.fa-phone:before {
  content: "\f095";
}
.fa-square-o:before {
  content: "\f096";
}
.fa-bookmark-o:before {
  content: "\f097";
}
.fa-phone-square:before {
  content: "\f098";
}
.fa-twitter:before {
  content: "\f099";
}
.fa-facebook-f:before,
.fa-facebook:before {
  content: "\f09a";
}
.fa-github:before {
  content: "\f09b";
}
.fa-unlock:before {
  content: "\f09c";
}
.fa-credit-card:before {
  content: "\f09d";
}
.fa-feed:before,
.fa-rss:before {
  content: "\f09e";
}
.fa-hdd-o:before {
  content: "\f0a0";
}
.fa-bullhorn:before {
  content: "\f0a1";
}
.fa-bell:before {
  content: "\f0f3";
}
.fa-certificate:before {
  content: "\f0a3";
}
.fa-hand-o-right:before {
  content: "\f0a4";
}
.fa-hand-o-left:before {
  content: "\f0a5";
}
.fa-hand-o-up:before {
  content: "\f0a6";
}
.fa-hand-o-down:before {
  content: "\f0a7";
}
.fa-arrow-circle-left:before {
  content: "\f0a8";
}
.fa-arrow-circle-right:before {
  content: "\f0a9";
}
.fa-arrow-circle-up:before {
  content: "\f0aa";
}
.fa-arrow-circle-down:before {
  content: "\f0ab";
}
.fa-globe:before {
  content: "\f0ac";
}
.fa-wrench:before {
  content: "\f0ad";
}
.fa-tasks:before {
  content: "\f0ae";
}
.fa-filter:before {
  content: "\f0b0";
}
.fa-briefcase:before {
  content: "\f0b1";
}
.fa-arrows-alt:before {
  content: "\f0b2";
}
.fa-group:before,
.fa-users:before {
  content: "\f0c0";
}
.fa-chain:before,
.fa-link:before {
  content: "\f0c1";
}
.fa-cloud:before {
  content: "\f0c2";
}
.fa-flask:before {
  content: "\f0c3";
}
.fa-cut:before,
.fa-scissors:before {
  content: "\f0c4";
}
.fa-copy:before,
.fa-files-o:before {
  content: "\f0c5";
}
.fa-paperclip:before {
  content: "\f0c6";
}
.fa-save:before,
.fa-floppy-o:before {
  content: "\f0c7";
}
.fa-square:before {
  content: "\f0c8";
}
.fa-navicon:before,
.fa-reorder:before,
.fa-bars:before {
  content: "\f0c9";
}
.fa-list-ul:before {
  content: "\f0ca";
}
.fa-list-ol:before {
  content: "\f0cb";
}
.fa-strikethrough:before {
  content: "\f0cc";
}
.fa-underline:before {
  content: "\f0cd";
}
.fa-table:before {
  content: "\f0ce";
}
.fa-magic:before {
  content: "\f0d0";
}
.fa-truck:before {
  content: "\f0d1";
}
.fa-pinterest:before {
  content: "\f0d2";
}
.fa-pinterest-square:before {
  content: "\f0d3";
}
.fa-google-plus-square:before {
  content: "\f0d4";
}
.fa-google-plus:before {
  content: "\f0d5";
}
.fa-money:before {
  content: "\f0d6";
}
.fa-caret-down:before {
  content: "\f0d7";
}
.fa-caret-up:before {
  content: "\f0d8";
}
.fa-caret-left:before {
  content: "\f0d9";
}
.fa-caret-right:before {
  content: "\f0da";
}
.fa-columns:before {
  content: "\f0db";
}
.fa-unsorted:before,
.fa-sort:before {
  content: "\f0dc";
}
.fa-sort-down:before,
.fa-sort-desc:before {
  content: "\f0dd";
}
.fa-sort-up:before,
.fa-sort-asc:before {
  content: "\f0de";
}
.fa-envelope:before {
  content: "\f0e0";
}
.fa-linkedin:before {
  content: "\f0e1";
}
.fa-rotate-left:before,
.fa-undo:before {
  content: "\f0e2";
}
.fa-legal:before,
.fa-gavel:before {
  content: "\f0e3";
}
.fa-dashboard:before,
.fa-tachometer:before {
  content: "\f0e4";
}
.fa-comment-o:before {
  content: "\f0e5";
}
.fa-comments-o:before {
  content: "\f0e6";
}
.fa-flash:before,
.fa-bolt:before {
  content: "\f0e7";
}
.fa-sitemap:before {
  content: "\f0e8";
}
.fa-umbrella:before {
  content: "\f0e9";
}
.fa-paste:before,
.fa-clipboard:before {
  content: "\f0ea";
}
.fa-lightbulb-o:before {
  content: "\f0eb";
}
.fa-exchange:before {
  content: "\f0ec";
}
.fa-cloud-download:before {
  content: "\f0ed";
}
.fa-cloud-upload:before {
  content: "\f0ee";
}
.fa-user-md:before {
  content: "\f0f0";
}
.fa-stethoscope:before {
  content: "\f0f1";
}
.fa-suitcase:before {
  content: "\f0f2";
}
.fa-bell-o:before {
  content: "\f0a2";
}
.fa-coffee:before {
  content: "\f0f4";
}
.fa-cutlery:before {
  content: "\f0f5";
}
.fa-file-text-o:before {
  content: "\f0f6";
}
.fa-building-o:before {
  content: "\f0f7";
}
.fa-hospital-o:before {
  content: "\f0f8";
}
.fa-ambulance:before {
  content: "\f0f9";
}
.fa-medkit:before {
  content: "\f0fa";
}
.fa-fighter-jet:before {
  content: "\f0fb";
}
.fa-beer:before {
  content: "\f0fc";
}
.fa-h-square:before {
  content: "\f0fd";
}
.fa-plus-square:before {
  content: "\f0fe";
}
.fa-angle-double-left:before {
  content: "\f100";
}
.fa-angle-double-right:before {
  content: "\f101";
}
.fa-angle-double-up:before {
  content: "\f102";
}
.fa-angle-double-down:before {
  content: "\f103";
}
.fa-angle-left:before {
  content: "\f104";
}
.fa-angle-right:before {
  content: "\f105";
}
.fa-angle-up:before {
  content: "\f106";
}
.fa-angle-down:before {
  content: "\f107";
}
.fa-desktop:before {
  content: "\f108";
}
.fa-laptop:before {
  content: "\f109";
}
.fa-tablet:before {
  content: "\f10a";
}
.fa-mobile-phone:before,
.fa-mobile:before {
  content: "\f10b";
}
.fa-circle-o:before {
  content: "\f10c";
}
.fa-quote-left:before {
  content: "\f10d";
}
.fa-quote-right:before {
  content: "\f10e";
}
.fa-spinner:before {
  content: "\f110";
}
.fa-circle:before {
  content: "\f111";
}
.fa-mail-reply:before,
.fa-reply:before {
  content: "\f112";
}
.fa-github-alt:before {
  content: "\f113";
}
.fa-folder-o:before {
  content: "\f114";
}
.fa-folder-open-o:before {
  content: "\f115";
}
.fa-smile-o:before {
  content: "\f118";
}
.fa-frown-o:before {
  content: "\f119";
}
.fa-meh-o:before {
  content: "\f11a";
}
.fa-gamepad:before {
  content: "\f11b";
}
.fa-keyboard-o:before {
  content: "\f11c";
}
.fa-flag-o:before {
  content: "\f11d";
}
.fa-flag-checkered:before {
  content: "\f11e";
}
.fa-terminal:before {
  content: "\f120";
}
.fa-code:before {
  content: "\f121";
}
.fa-mail-reply-all:before,
.fa-reply-all:before {
  content: "\f122";
}
.fa-star-half-empty:before,
.fa-star-half-full:before,
.fa-star-half-o:before {
  content: "\f123";
}
.fa-location-arrow:before {
  content: "\f124";
}
.fa-crop:before {
  content: "\f125";
}
.fa-code-fork:before {
  content: "\f126";
}
.fa-unlink:before,
.fa-chain-broken:before {
  content: "\f127";
}
.fa-question:before {
  content: "\f128";
}
.fa-info:before {
  content: "\f129";
}
.fa-exclamation:before {
  content: "\f12a";
}
.fa-superscript:before {
  content: "\f12b";
}
.fa-subscript:before {
  content: "\f12c";
}
.fa-eraser:before {
  content: "\f12d";
}
.fa-puzzle-piece:before {
  content: "\f12e";
}
.fa-microphone:before {
  content: "\f130";
}
.fa-microphone-slash:before {
  content: "\f131";
}
.fa-shield:before {
  content: "\f132";
}
.fa-calendar-o:before {
  content: "\f133";
}
.fa-fire-extinguisher:before {
  content: "\f134";
}
.fa-rocket:before {
  content: "\f135";
}
.fa-maxcdn:before {
  content: "\f136";
}
.fa-chevron-circle-left:before {
  content: "\f137";
}
.fa-chevron-circle-right:before {
  content: "\f138";
}
.fa-chevron-circle-up:before {
  content: "\f139";
}
.fa-chevron-circle-down:before {
  content: "\f13a";
}
.fa-html5:before {
  content: "\f13b";
}
.fa-css3:before {
  content: "\f13c";
}
.fa-anchor:before {
  content: "\f13d";
}
.fa-unlock-alt:before {
  content: "\f13e";
}
.fa-bullseye:before {
  content: "\f140";
}
.fa-ellipsis-h:before {
  content: "\f141";
}
.fa-ellipsis-v:before {
  content: "\f142";
}
.fa-rss-square:before {
  content: "\f143";
}
.fa-play-circle:before {
  content: "\f144";
}
.fa-ticket:before {
  content: "\f145";
}
.fa-minus-square:before {
  content: "\f146";
}
.fa-minus-square-o:before {
  content: "\f147";
}
.fa-level-up:before {
  content: "\f148";
}
.fa-level-down:before {
  content: "\f149";
}
.fa-check-square:before {
  content: "\f14a";
}
.fa-pencil-square:before {
  content: "\f14b";
}
.fa-external-link-square:before {
  content: "\f14c";
}
.fa-share-square:before {
  content: "\f14d";
}
.fa-compass:before {
  content: "\f14e";
}
.fa-toggle-down:before,
.fa-caret-square-o-down:before {
  content: "\f150";
}
.fa-toggle-up:before,
.fa-caret-square-o-up:before {
  content: "\f151";
}
.fa-toggle-right:before,
.fa-caret-square-o-right:before {
  content: "\f152";
}
.fa-euro:before,
.fa-eur:before {
  content: "\f153";
}
.fa-gbp:before {
  content: "\f154";
}
.fa-dollar:before,
.fa-usd:before {
  content: "\f155";
}
.fa-rupee:before,
.fa-inr:before {
  content: "\f156";
}
.fa-cny:before,
.fa-rmb:before,
.fa-yen:before,
.fa-jpy:before {
  content: "\f157";
}
.fa-ruble:before,
.fa-rouble:before,
.fa-rub:before {
  content: "\f158";
}
.fa-won:before,
.fa-krw:before {
  content: "\f159";
}
.fa-bitcoin:before,
.fa-btc:before {
  content: "\f15a";
}
.fa-file:before {
  content: "\f15b";
}
.fa-file-text:before {
  content: "\f15c";
}
.fa-sort-alpha-asc:before {
  content: "\f15d";
}
.fa-sort-alpha-desc:before {
  content: "\f15e";
}
.fa-sort-amount-asc:before {
  content: "\f160";
}
.fa-sort-amount-desc:before {
  content: "\f161";
}
.fa-sort-numeric-asc:before {
  content: "\f162";
}
.fa-sort-numeric-desc:before {
  content: "\f163";
}
.fa-thumbs-up:before {
  content: "\f164";
}
.fa-thumbs-down:before {
  content: "\f165";
}
.fa-youtube-square:before {
  content: "\f166";
}
.fa-youtube:before {
  content: "\f167";
}
.fa-xing:before {
  content: "\f168";
}
.fa-xing-square:before {
  content: "\f169";
}
.fa-youtube-play:before {
  content: "\f16a";
}
.fa-dropbox:before {
  content: "\f16b";
}
.fa-stack-overflow:before {
  content: "\f16c";
}
.fa-instagram:before {
  content: "\f16d";
}
.fa-flickr:before {
  content: "\f16e";
}
.fa-adn:before {
  content: "\f170";
}
.fa-bitbucket:before {
  content: "\f171";
}
.fa-bitbucket-square:before {
  content: "\f172";
}
.fa-tumblr:before {
  content: "\f173";
}
.fa-tumblr-square:before {
  content: "\f174";
}
.fa-long-arrow-down:before {
  content: "\f175";
}
.fa-long-arrow-up:before {
  content: "\f176";
}
.fa-long-arrow-left:before {
  content: "\f177";
}
.fa-long-arrow-right:before {
  content: "\f178";
}
.fa-apple:before {
  content: "\f179";
}
.fa-windows:before {
  content: "\f17a";
}
.fa-android:before {
  content: "\f17b";
}
.fa-linux:before {
  content: "\f17c";
}
.fa-dribbble:before {
  content: "\f17d";
}
.fa-skype:before {
  content: "\f17e";
}
.fa-foursquare:before {
  content: "\f180";
}
.fa-trello:before {
  content: "\f181";
}
.fa-female:before {
  content: "\f182";
}
.fa-male:before {
  content: "\f183";
}
.fa-gittip:before,
.fa-gratipay:before {
  content: "\f184";
}
.fa-sun-o:before {
  content: "\f185";
}
.fa-moon-o:before {
  content: "\f186";
}
.fa-archive:before {
  content: "\f187";
}
.fa-bug:before {
  content: "\f188";
}
.fa-vk:before {
  content: "\f189";
}
.fa-weibo:before {
  content: "\f18a";
}
.fa-renren:before {
  content: "\f18b";
}
.fa-pagelines:before {
  content: "\f18c";
}
.fa-stack-exchange:before {
  content: "\f18d";
}
.fa-arrow-circle-o-right:before {
  content: "\f18e";
}
.fa-arrow-circle-o-left:before {
  content: "\f190";
}
.fa-toggle-left:before,
.fa-caret-square-o-left:before {
  content: "\f191";
}
.fa-dot-circle-o:before {
  content: "\f192";
}
.fa-wheelchair:before {
  content: "\f193";
}
.fa-vimeo-square:before {
  content: "\f194";
}
.fa-turkish-lira:before,
.fa-try:before {
  content: "\f195";
}
.fa-plus-square-o:before {
  content: "\f196";
}
.fa-space-shuttle:before {
  content: "\f197";
}
.fa-slack:before {
  content: "\f198";
}
.fa-envelope-square:before {
  content: "\f199";
}
.fa-wordpress:before {
  content: "\f19a";
}
.fa-openid:before {
  content: "\f19b";
}
.fa-institution:before,
.fa-bank:before,
.fa-university:before {
  content: "\f19c";
}
.fa-mortar-board:before,
.fa-graduation-cap:before {
  content: "\f19d";
}
.fa-yahoo:before {
  content: "\f19e";
}
.fa-google:before {
  content: "\f1a0";
}
.fa-reddit:before {
  content: "\f1a1";
}
.fa-reddit-square:before {
  content: "\f1a2";
}
.fa-stumbleupon-circle:before {
  content: "\f1a3";
}
.fa-stumbleupon:before {
  content: "\f1a4";
}
.fa-delicious:before {
  content: "\f1a5";
}
.fa-digg:before {
  content: "\f1a6";
}
.fa-pied-piper-pp:before {
  content: "\f1a7";
}
.fa-pied-piper-alt:before {
  content: "\f1a8";
}
.fa-drupal:before {
  content: "\f1a9";
}
.fa-joomla:before {
  content: "\f1aa";
}
.fa-language:before {
  content: "\f1ab";
}
.fa-fax:before {
  content: "\f1ac";
}
.fa-building:before {
  content: "\f1ad";
}
.fa-child:before {
  content: "\f1ae";
}
.fa-paw:before {
  content: "\f1b0";
}
.fa-spoon:before {
  content: "\f1b1";
}
.fa-cube:before {
  content: "\f1b2";
}
.fa-cubes:before {
  content: "\f1b3";
}
.fa-behance:before {
  content: "\f1b4";
}
.fa-behance-square:before {
  content: "\f1b5";
}
.fa-steam:before {
  content: "\f1b6";
}
.fa-steam-square:before {
  content: "\f1b7";
}
.fa-recycle:before {
  content: "\f1b8";
}
.fa-automobile:before,
.fa-car:before {
  content: "\f1b9";
}
.fa-cab:before,
.fa-taxi:before {
  content: "\f1ba";
}
.fa-tree:before {
  content: "\f1bb";
}
.fa-spotify:before {
  content: "\f1bc";
}
.fa-deviantart:before {
  content: "\f1bd";
}
.fa-soundcloud:before {
  content: "\f1be";
}
.fa-database:before {
  content: "\f1c0";
}
.fa-file-pdf-o:before {
  content: "\f1c1";
}
.fa-file-word-o:before {
  content: "\f1c2";
}
.fa-file-excel-o:before {
  content: "\f1c3";
}
.fa-file-powerpoint-o:before {
  content: "\f1c4";
}
.fa-file-photo-o:before,
.fa-file-picture-o:before,
.fa-file-image-o:before {
  content: "\f1c5";
}
.fa-file-zip-o:before,
.fa-file-archive-o:before {
  content: "\f1c6";
}
.fa-file-sound-o:before,
.fa-file-audio-o:before {
  content: "\f1c7";
}
.fa-file-movie-o:before,
.fa-file-video-o:before {
  content: "\f1c8";
}
.fa-file-code-o:before {
  content: "\f1c9";
}
.fa-vine:before {
  content: "\f1ca";
}
.fa-codepen:before {
  content: "\f1cb";
}
.fa-jsfiddle:before {
  content: "\f1cc";
}
.fa-life-bouy:before,
.fa-life-buoy:before,
.fa-life-saver:before,
.fa-support:before,
.fa-life-ring:before {
  content: "\f1cd";
}
.fa-circle-o-notch:before {
  content: "\f1ce";
}
.fa-ra:before,
.fa-resistance:before,
.fa-rebel:before {
  content: "\f1d0";
}
.fa-ge:before,
.fa-empire:before {
  content: "\f1d1";
}
.fa-git-square:before {
  content: "\f1d2";
}
.fa-git:before {
  content: "\f1d3";
}
.fa-y-combinator-square:before,
.fa-yc-square:before,
.fa-hacker-news:before {
  content: "\f1d4";
}
.fa-tencent-weibo:before {
  content: "\f1d5";
}
.fa-qq:before {
  content: "\f1d6";
}
.fa-wechat:before,
.fa-weixin:before {
  content: "\f1d7";
}
.fa-send:before,
.fa-paper-plane:before {
  content: "\f1d8";
}
.fa-send-o:before,
.fa-paper-plane-o:before {
  content: "\f1d9";
}
.fa-history:before {
  content: "\f1da";
}
.fa-circle-thin:before {
  content: "\f1db";
}
.fa-header:before {
  content: "\f1dc";
}
.fa-paragraph:before {
  content: "\f1dd";
}
.fa-sliders:before {
  content: "\f1de";
}
.fa-share-alt:before {
  content: "\f1e0";
}
.fa-share-alt-square:before {
  content: "\f1e1";
}
.fa-bomb:before {
  content: "\f1e2";
}
.fa-soccer-ball-o:before,
.fa-futbol-o:before {
  content: "\f1e3";
}
.fa-tty:before {
  content: "\f1e4";
}
.fa-binoculars:before {
  content: "\f1e5";
}
.fa-plug:before {
  content: "\f1e6";
}
.fa-slideshare:before {
  content: "\f1e7";
}
.fa-twitch:before {
  content: "\f1e8";
}
.fa-yelp:before {
  content: "\f1e9";
}
.fa-newspaper-o:before {
  content: "\f1ea";
}
.fa-wifi:before {
  content: "\f1eb";
}
.fa-calculator:before {
  content: "\f1ec";
}
.fa-paypal:before {
  content: "\f1ed";
}
.fa-google-wallet:before {
  content: "\f1ee";
}
.fa-cc-visa:before {
  content: "\f1f0";
}
.fa-cc-mastercard:before {
  content: "\f1f1";
}
.fa-cc-discover:before {
  content: "\f1f2";
}
.fa-cc-amex:before {
  content: "\f1f3";
}
.fa-cc-paypal:before {
  content: "\f1f4";
}
.fa-cc-stripe:before {
  content: "\f1f5";
}
.fa-bell-slash:before {
  content: "\f1f6";
}
.fa-bell-slash-o:before {
  content: "\f1f7";
}
.fa-trash:before {
  content: "\f1f8";
}
.fa-copyright:before {
  content: "\f1f9";
}
.fa-at:before {
  content: "\f1fa";
}
.fa-eyedropper:before {
  content: "\f1fb";
}
.fa-paint-brush:before {
  content: "\f1fc";
}
.fa-birthday-cake:before {
  content: "\f1fd";
}
.fa-area-chart:before {
  content: "\f1fe";
}
.fa-pie-chart:before {
  content: "\f200";
}
.fa-line-chart:before {
  content: "\f201";
}
.fa-lastfm:before {
  content: "\f202";
}
.fa-lastfm-square:before {
  content: "\f203";
}
.fa-toggle-off:before {
  content: "\f204";
}
.fa-toggle-on:before {
  content: "\f205";
}
.fa-bicycle:before {
  content: "\f206";
}
.fa-bus:before {
  content: "\f207";
}
.fa-ioxhost:before {
  content: "\f208";
}
.fa-angellist:before {
  content: "\f209";
}
.fa-cc:before {
  content: "\f20a";
}
.fa-shekel:before,
.fa-sheqel:before,
.fa-ils:before {
  content: "\f20b";
}
.fa-meanpath:before {
  content: "\f20c";
}
.fa-buysellads:before {
  content: "\f20d";
}
.fa-connectdevelop:before {
  content: "\f20e";
}
.fa-dashcube:before {
  content: "\f210";
}
.fa-forumbee:before {
  content: "\f211";
}
.fa-leanpub:before {
  content: "\f212";
}
.fa-sellsy:before {
  content: "\f213";
}
.fa-shirtsinbulk:before {
  content: "\f214";
}
.fa-simplybuilt:before {
  content: "\f215";
}
.fa-skyatlas:before {
  content: "\f216";
}
.fa-cart-plus:before {
  content: "\f217";
}
.fa-cart-arrow-down:before {
  content: "\f218";
}
.fa-diamond:before {
  content: "\f219";
}
.fa-ship:before {
  content: "\f21a";
}
.fa-user-secret:before {
  content: "\f21b";
}
.fa-motorcycle:before {
  content: "\f21c";
}
.fa-street-view:before {
  content: "\f21d";
}
.fa-heartbeat:before {
  content: "\f21e";
}
.fa-venus:before {
  content: "\f221";
}
.fa-mars:before {
  content: "\f222";
}
.fa-mercury:before {
  content: "\f223";
}
.fa-intersex:before,
.fa-transgender:before {
  content: "\f224";
}
.fa-transgender-alt:before {
  content: "\f225";
}
.fa-venus-double:before {
  content: "\f226";
}
.fa-mars-double:before {
  content: "\f227";
}
.fa-venus-mars:before {
  content: "\f228";
}
.fa-mars-stroke:before {
  content: "\f229";
}
.fa-mars-stroke-v:before {
  content: "\f22a";
}
.fa-mars-stroke-h:before {
  content: "\f22b";
}
.fa-neuter:before {
  content: "\f22c";
}
.fa-genderless:before {
  content: "\f22d";
}
.fa-facebook-official:before {
  content: "\f230";
}
.fa-pinterest-p:before {
  content: "\f231";
}
.fa-whatsapp:before {
  content: "\f232";
}
.fa-server:before {
  content: "\f233";
}
.fa-user-plus:before {
  content: "\f234";
}
.fa-user-times:before {
  content: "\f235";
}
.fa-hotel:before,
.fa-bed:before {
  content: "\f236";
}
.fa-viacoin:before {
  content: "\f237";
}
.fa-train:before {
  content: "\f238";
}
.fa-subway:before {
  content: "\f239";
}
.fa-medium:before {
  content: "\f23a";
}
.fa-yc:before,
.fa-y-combinator:before {
  content: "\f23b";
}
.fa-optin-monster:before {
  content: "\f23c";
}
.fa-opencart:before {
  content: "\f23d";
}
.fa-expeditedssl:before {
  content: "\f23e";
}
.fa-battery-4:before,
.fa-battery:before,
.fa-battery-full:before {
  content: "\f240";
}
.fa-battery-3:before,
.fa-battery-three-quarters:before {
  content: "\f241";
}
.fa-battery-2:before,
.fa-battery-half:before {
  content: "\f242";
}
.fa-battery-1:before,
.fa-battery-quarter:before {
  content: "\f243";
}
.fa-battery-0:before,
.fa-battery-empty:before {
  content: "\f244";
}
.fa-mouse-pointer:before {
  content: "\f245";
}
.fa-i-cursor:before {
  content: "\f246";
}
.fa-object-group:before {
  content: "\f247";
}
.fa-object-ungroup:before {
  content: "\f248";
}
.fa-sticky-note:before {
  content: "\f249";
}
.fa-sticky-note-o:before {
  content: "\f24a";
}
.fa-cc-jcb:before {
  content: "\f24b";
}
.fa-cc-diners-club:before {
  content: "\f24c";
}
.fa-clone:before {
  content: "\f24d";
}
.fa-balance-scale:before {
  content: "\f24e";
}
.fa-hourglass-o:before {
  content: "\f250";
}
.fa-hourglass-1:before,
.fa-hourglass-start:before {
  content: "\f251";
}
.fa-hourglass-2:before,
.fa-hourglass-half:before {
  content: "\f252";
}
.fa-hourglass-3:before,
.fa-hourglass-end:before {
  content: "\f253";
}
.fa-hourglass:before {
  content: "\f254";
}
.fa-hand-grab-o:before,
.fa-hand-rock-o:before {
  content: "\f255";
}
.fa-hand-stop-o:before,
.fa-hand-paper-o:before {
  content: "\f256";
}
.fa-hand-scissors-o:before {
  content: "\f257";
}
.fa-hand-lizard-o:before {
  content: "\f258";
}
.fa-hand-spock-o:before {
  content: "\f259";
}
.fa-hand-pointer-o:before {
  content: "\f25a";
}
.fa-hand-peace-o:before {
  content: "\f25b";
}
.fa-trademark:before {
  content: "\f25c";
}
.fa-registered:before {
  content: "\f25d";
}
.fa-creative-commons:before {
  content: "\f25e";
}
.fa-gg:before {
  content: "\f260";
}
.fa-gg-circle:before {
  content: "\f261";
}
.fa-tripadvisor:before {
  content: "\f262";
}
.fa-odnoklassniki:before {
  content: "\f263";
}
.fa-odnoklassniki-square:before {
  content: "\f264";
}
.fa-get-pocket:before {
  content: "\f265";
}
.fa-wikipedia-w:before {
  content: "\f266";
}
.fa-safari:before {
  content: "\f267";
}
.fa-chrome:before {
  content: "\f268";
}
.fa-firefox:before {
  content: "\f269";
}
.fa-opera:before {
  content: "\f26a";
}
.fa-internet-explorer:before {
  content: "\f26b";
}
.fa-tv:before,
.fa-television:before {
  content: "\f26c";
}
.fa-contao:before {
  content: "\f26d";
}
.fa-500px:before {
  content: "\f26e";
}
.fa-amazon:before {
  content: "\f270";
}
.fa-calendar-plus-o:before {
  content: "\f271";
}
.fa-calendar-minus-o:before {
  content: "\f272";
}
.fa-calendar-times-o:before {
  content: "\f273";
}
.fa-calendar-check-o:before {
  content: "\f274";
}
.fa-industry:before {
  content: "\f275";
}
.fa-map-pin:before {
  content: "\f276";
}
.fa-map-signs:before {
  content: "\f277";
}
.fa-map-o:before {
  content: "\f278";
}
.fa-map:before {
  content: "\f279";
}
.fa-commenting:before {
  content: "\f27a";
}
.fa-commenting-o:before {
  content: "\f27b";
}
.fa-houzz:before {
  content: "\f27c";
}
.fa-vimeo:before {
  content: "\f27d";
}
.fa-black-tie:before {
  content: "\f27e";
}
.fa-fonticons:before {
  content: "\f280";
}
.fa-reddit-alien:before {
  content: "\f281";
}
.fa-edge:before {
  content: "\f282";
}
.fa-credit-card-alt:before {
  content: "\f283";
}
.fa-codiepie:before {
  content: "\f284";
}
.fa-modx:before {
  content: "\f285";
}
.fa-fort-awesome:before {
  content: "\f286";
}
.fa-usb:before {
  content: "\f287";
}
.fa-product-hunt:before {
  content: "\f288";
}
.fa-mixcloud:before {
  content: "\f289";
}
.fa-scribd:before {
  content: "\f28a";
}
.fa-pause-circle:before {
  content: "\f28b";
}
.fa-pause-circle-o:before {
  content: "\f28c";
}
.fa-stop-circle:before {
  content: "\f28d";
}
.fa-stop-circle-o:before {
  content: "\f28e";
}
.fa-shopping-bag:before {
  content: "\f290";
}
.fa-shopping-basket:before {
  content: "\f291";
}
.fa-hashtag:before {
  content: "\f292";
}
.fa-bluetooth:before {
  content: "\f293";
}
.fa-bluetooth-b:before {
  content: "\f294";
}
.fa-percent:before {
  content: "\f295";
}
.fa-gitlab:before {
  content: "\f296";
}
.fa-wpbeginner:before {
  content: "\f297";
}
.fa-wpforms:before {
  content: "\f298";
}
.fa-envira:before {
  content: "\f299";
}
.fa-universal-access:before {
  content: "\f29a";
}
.fa-wheelchair-alt:before {
  content: "\f29b";
}
.fa-question-circle-o:before {
  content: "\f29c";
}
.fa-blind:before {
  content: "\f29d";
}
.fa-audio-description:before {
  content: "\f29e";
}
.fa-volume-control-phone:before {
  content: "\f2a0";
}
.fa-braille:before {
  content: "\f2a1";
}
.fa-assistive-listening-systems:before {
  content: "\f2a2";
}
.fa-asl-interpreting:before,
.fa-american-sign-language-interpreting:before {
  content: "\f2a3";
}
.fa-deafness:before,
.fa-hard-of-hearing:before,
.fa-deaf:before {
  content: "\f2a4";
}
.fa-glide:before {
  content: "\f2a5";
}
.fa-glide-g:before {
  content: "\f2a6";
}
.fa-signing:before,
.fa-sign-language:before {
  content: "\f2a7";
}
.fa-low-vision:before {
  content: "\f2a8";
}
.fa-viadeo:before {
  content: "\f2a9";
}
.fa-viadeo-square:before {
  content: "\f2aa";
}
.fa-snapchat:before {
  content: "\f2ab";
}
.fa-snapchat-ghost:before {
  content: "\f2ac";
}
.fa-snapchat-square:before {
  content: "\f2ad";
}
.fa-pied-piper:before {
  content: "\f2ae";
}
.fa-first-order:before {
  content: "\f2b0";
}
.fa-yoast:before {
  content: "\f2b1";
}
.fa-themeisle:before {
  content: "\f2b2";
}
.fa-google-plus-circle:before,
.fa-google-plus-official:before {
  content: "\f2b3";
}
.fa-fa:before,
.fa-font-awesome:before {
  content: "\f2b4";
}
.fa-handshake-o:before {
  content: "\f2b5";
}
.fa-envelope-open:before {
  content: "\f2b6";
}
.fa-envelope-open-o:before {
  content: "\f2b7";
}
.fa-linode:before {
  content: "\f2b8";
}
.fa-address-book:before {
  content: "\f2b9";
}
.fa-address-book-o:before {
  content: "\f2ba";
}
.fa-vcard:before,
.fa-address-card:before {
  content: "\f2bb";
}
.fa-vcard-o:before,
.fa-address-card-o:before {
  content: "\f2bc";
}
.fa-user-circle:before {
  content: "\f2bd";
}
.fa-user-circle-o:before {
  content: "\f2be";
}
.fa-user-o:before {
  content: "\f2c0";
}
.fa-id-badge:before {
  content: "\f2c1";
}
.fa-drivers-license:before,
.fa-id-card:before {
  content: "\f2c2";
}
.fa-drivers-license-o:before,
.fa-id-card-o:before {
  content: "\f2c3";
}
.fa-quora:before {
  content: "\f2c4";
}
.fa-free-code-camp:before {
  content: "\f2c5";
}
.fa-telegram:before {
  content: "\f2c6";
}
.fa-thermometer-4:before,
.fa-thermometer:before,
.fa-thermometer-full:before {
  content: "\f2c7";
}
.fa-thermometer-3:before,
.fa-thermometer-three-quarters:before {
  content: "\f2c8";
}
.fa-thermometer-2:before,
.fa-thermometer-half:before {
  content: "\f2c9";
}
.fa-thermometer-1:before,
.fa-thermometer-quarter:before {
  content: "\f2ca";
}
.fa-thermometer-0:before,
.fa-thermometer-empty:before {
  content: "\f2cb";
}
.fa-shower:before {
  content: "\f2cc";
}
.fa-bathtub:before,
.fa-s15:before,
.fa-bath:before {
  content: "\f2cd";
}
.fa-podcast:before {
  content: "\f2ce";
}
.fa-window-maximize:before {
  content: "\f2d0";
}
.fa-window-minimize:before {
  content: "\f2d1";
}
.fa-window-restore:before {
  content: "\f2d2";
}
.fa-times-rectangle:before,
.fa-window-close:before {
  content: "\f2d3";
}
.fa-times-rectangle-o:before,
.fa-window-close-o:before {
  content: "\f2d4";
}
.fa-bandcamp:before {
  content: "\f2d5";
}
.fa-grav:before {
  content: "\f2d6";
}
.fa-etsy:before {
  content: "\f2d7";
}
.fa-imdb:before {
  content: "\f2d8";
}
.fa-ravelry:before {
  content: "\f2d9";
}
.fa-eercast:before {
  content: "\f2da";
}
.fa-microchip:before {
  content: "\f2db";
}
.fa-snowflake-o:before {
  content: "\f2dc";
}
.fa-superpowers:before {
  content: "\f2dd";
}
.fa-wpexplorer:before {
  content: "\f2de";
}
.fa-meetup:before {
  content: "\f2e0";
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}
index.html
/
platoer/rizi
platoer
UA-115820968-1
no
{
    "艺术的故事": "color:#155724;background-color:#d4edda;",
    "青泥莲花记": "color:#155724;background-color:#d4edda;"
}
$:/languages/zh-Hans
{
    "tiddlers": {
        "$:/language/Buttons/AdvancedSearch/Caption": {
            "title": "$:/language/Buttons/AdvancedSearch/Caption",
            "text": "高级查找"
        },
        "$:/language/Buttons/AdvancedSearch/Hint": {
            "title": "$:/language/Buttons/AdvancedSearch/Hint",
            "text": "高级查找"
        },
        "$:/language/Buttons/Cancel/Caption": {
            "title": "$:/language/Buttons/Cancel/Caption",
            "text": "取消"
        },
        "$:/language/Buttons/Cancel/Hint": {
            "title": "$:/language/Buttons/Cancel/Hint",
            "text": "放弃对此条目的更改"
        },
        "$:/language/Buttons/Clone/Caption": {
            "title": "$:/language/Buttons/Clone/Caption",
            "text": "克隆"
        },
        "$:/language/Buttons/Clone/Hint": {
            "title": "$:/language/Buttons/Clone/Hint",
            "text": "克隆此条目"
        },
        "$:/language/Buttons/Close/Caption": {
            "title": "$:/language/Buttons/Close/Caption",
            "text": "关闭"
        },
        "$:/language/Buttons/Close/Hint": {
            "title": "$:/language/Buttons/Close/Hint",
            "text": "关闭此条目"
        },
        "$:/language/Buttons/CloseAll/Caption": {
            "title": "$:/language/Buttons/CloseAll/Caption",
            "text": "全部关闭"
        },
        "$:/language/Buttons/CloseAll/Hint": {
            "title": "$:/language/Buttons/CloseAll/Hint",
            "text": "关闭所有条目"
        },
        "$:/language/Buttons/CloseOthers/Caption": {
            "title": "$:/language/Buttons/CloseOthers/Caption",
            "text": "关闭其他"
        },
        "$:/language/Buttons/CloseOthers/Hint": {
            "title": "$:/language/Buttons/CloseOthers/Hint",
            "text": "关闭其他条目"
        },
        "$:/language/Buttons/ControlPanel/Caption": {
            "title": "$:/language/Buttons/ControlPanel/Caption",
            "text": "控制台"
        },
        "$:/language/Buttons/ControlPanel/Hint": {
            "title": "$:/language/Buttons/ControlPanel/Hint",
            "text": "开启控制台"
        },
        "$:/language/Buttons/CopyToClipboard/Caption": {
            "title": "$:/language/Buttons/CopyToClipboard/Caption",
            "text": "复制到剪贴板"
        },
        "$:/language/Buttons/CopyToClipboard/Hint": {
            "title": "$:/language/Buttons/CopyToClipboard/Hint",
            "text": "将此文本复制到剪贴板"
        },
        "$:/language/Buttons/Delete/Caption": {
            "title": "$:/language/Buttons/Delete/Caption",
            "text": "删除"
        },
        "$:/language/Buttons/Delete/Hint": {
            "title": "$:/language/Buttons/Delete/Hint",
            "text": "删除此条目"
        },
        "$:/language/Buttons/Edit/Caption": {
            "title": "$:/language/Buttons/Edit/Caption",
            "text": "编辑"
        },
        "$:/language/Buttons/Edit/Hint": {
            "title": "$:/language/Buttons/Edit/Hint",
            "text": "编辑此条目"
        },
        "$:/language/Buttons/Encryption/Caption": {
            "title": "$:/language/Buttons/Encryption/Caption",
            "text": "加密"
        },
        "$:/language/Buttons/Encryption/Hint": {
            "title": "$:/language/Buttons/Encryption/Hint",
            "text": "设置或清除保存此维基的密码"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Caption",
            "text": "清除密码"
        },
        "$:/language/Buttons/Encryption/ClearPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/ClearPassword/Hint",
            "text": "清除密码且不加密保存此维基"
        },
        "$:/language/Buttons/Encryption/SetPassword/Caption": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Caption",
            "text": "设置密码"
        },
        "$:/language/Buttons/Encryption/SetPassword/Hint": {
            "title": "$:/language/Buttons/Encryption/SetPassword/Hint",
            "text": "设置加密保存此维基的密码"
        },
        "$:/language/Buttons/ExportPage/Caption": {
            "title": "$:/language/Buttons/ExportPage/Caption",
            "text": "导出所有条目"
        },
        "$:/language/Buttons/ExportPage/Hint": {
            "title": "$:/language/Buttons/ExportPage/Hint",
            "text": "导出所有条目"
        },
        "$:/language/Buttons/ExportTiddler/Caption": {
            "title": "$:/language/Buttons/ExportTiddler/Caption",
            "text": "导出此条目"
        },
        "$:/language/Buttons/ExportTiddler/Hint": {
            "title": "$:/language/Buttons/ExportTiddler/Hint",
            "text": "导出此条目"
        },
        "$:/language/Buttons/ExportTiddlers/Caption": {
            "title": "$:/language/Buttons/ExportTiddlers/Caption",
            "text": "导出条目"
        },
        "$:/language/Buttons/ExportTiddlers/Hint": {
            "title": "$:/language/Buttons/ExportTiddlers/Hint",
            "text": "导出条目"
        },
        "$:/language/Buttons/SidebarSearch/Hint": {
            "title": "$:/language/Buttons/SidebarSearch/Hint",
            "text": "选择侧边栏的查找字段"
        },
        "$:/language/Buttons/Fold/Caption": {
            "title": "$:/language/Buttons/Fold/Caption",
            "text": "收合条目"
        },
        "$:/language/Buttons/Fold/Hint": {
            "title": "$:/language/Buttons/Fold/Hint",
            "text": "收合此条目的内容"
        },
        "$:/language/Buttons/Unfold/Caption": {
            "title": "$:/language/Buttons/Unfold/Caption",
            "text": "展开条目"
        },
        "$:/language/Buttons/Unfold/Hint": {
            "title": "$:/language/Buttons/Unfold/Hint",
            "text": "展开此条目的内容"
        },
        "$:/language/Buttons/FoldOthers/Caption": {
            "title": "$:/language/Buttons/FoldOthers/Caption",
            "text": "收合其他条目"
        },
        "$:/language/Buttons/FoldOthers/Hint": {
            "title": "$:/language/Buttons/FoldOthers/Hint",
            "text": "收合其他已开启条目的内容"
        },
        "$:/language/Buttons/FoldAll/Caption": {
            "title": "$:/language/Buttons/FoldAll/Caption",
            "text": "收合所有条目"
        },
        "$:/language/Buttons/FoldAll/Hint": {
            "title": "$:/language/Buttons/FoldAll/Hint",
            "text": "收合所有已开启条目的内容"
        },
        "$:/language/Buttons/Fold/FoldBar/Caption": {
            "title": "$:/language/Buttons/Fold/FoldBar/Caption",
            "text": "收合栏"
        },
        "$:/language/Buttons/Fold/FoldBar/Hint": {
            "title": "$:/language/Buttons/Fold/FoldBar/Hint",
            "text": "可选的收合与展开条目的长条按钮"
        },
        "$:/language/Buttons/UnfoldAll/Caption": {
            "title": "$:/language/Buttons/UnfoldAll/Caption",
            "text": "展开所有条目"
        },
        "$:/language/Buttons/UnfoldAll/Hint": {
            "title": "$:/language/Buttons/UnfoldAll/Hint",
            "text": "展开所有已开启条目的内容"
        },
        "$:/language/Buttons/FullScreen/Caption": {
            "title": "$:/language/Buttons/FullScreen/Caption",
            "text": "全屏幕"
        },
        "$:/language/Buttons/FullScreen/Hint": {
            "title": "$:/language/Buttons/FullScreen/Hint",
            "text": "进入或离开全屏模式"
        },
        "$:/language/Buttons/Help/Caption": {
            "title": "$:/language/Buttons/Help/Caption",
            "text": "帮助"
        },
        "$:/language/Buttons/Help/Hint": {
            "title": "$:/language/Buttons/Help/Hint",
            "text": "显示帮助面板"
        },
        "$:/language/Buttons/Home/Caption": {
            "title": "$:/language/Buttons/Home/Caption",
            "text": "首页"
        },
        "$:/language/Buttons/Home/Hint": {
            "title": "$:/language/Buttons/Home/Hint",
            "text": "开启首页条目"
        },
        "$:/language/Buttons/Import/Caption": {
            "title": "$:/language/Buttons/Import/Caption",
            "text": "导入"
        },
        "$:/language/Buttons/Import/Hint": {
            "title": "$:/language/Buttons/Import/Hint",
            "text": "导入许多类型的文件包括文本、图像、TiddlyWiki 或 JSON"
        },
        "$:/language/Buttons/Info/Caption": {
            "title": "$:/language/Buttons/Info/Caption",
            "text": "信息"
        },
        "$:/language/Buttons/Info/Hint": {
            "title": "$:/language/Buttons/Info/Hint",
            "text": "显示此条目的信息"
        },
        "$:/language/Buttons/Language/Caption": {
            "title": "$:/language/Buttons/Language/Caption",
            "text": "语言"
        },
        "$:/language/Buttons/Language/Hint": {
            "title": "$:/language/Buttons/Language/Hint",
            "text": "选择用户介面语言"
        },
        "$:/language/Buttons/Manager/Caption": {
            "title": "$:/language/Buttons/Manager/Caption",
            "text": "条目管理器"
        },
        "$:/language/Buttons/Manager/Hint": {
            "title": "$:/language/Buttons/Manager/Hint",
            "text": "开启条目管理器"
        },
        "$:/language/Buttons/More/Caption": {
            "title": "$:/language/Buttons/More/Caption",
            "text": "更多"
        },
        "$:/language/Buttons/More/Hint": {
            "title": "$:/language/Buttons/More/Hint",
            "text": "更多动作"
        },
        "$:/language/Buttons/NewHere/Caption": {
            "title": "$:/language/Buttons/NewHere/Caption",
            "text": "添加子条目"
        },
        "$:/language/Buttons/NewHere/Hint": {
            "title": "$:/language/Buttons/NewHere/Hint",
            "text": "创建一个标签为此条目名称的新条目"
        },
        "$:/language/Buttons/NewJournal/Caption": {
            "title": "$:/language/Buttons/NewJournal/Caption",
            "text": "添加日志"
        },
        "$:/language/Buttons/NewJournal/Hint": {
            "title": "$:/language/Buttons/NewJournal/Hint",
            "text": "创建一个新的日志条目"
        },
        "$:/language/Buttons/NewJournalHere/Caption": {
            "title": "$:/language/Buttons/NewJournalHere/Caption",
            "text": "添加子日志"
        },
        "$:/language/Buttons/NewJournalHere/Hint": {
            "title": "$:/language/Buttons/NewJournalHere/Hint",
            "text": "创建一个标签含此条目名称的新日志条目"
        },
        "$:/language/Buttons/NewImage/Caption": {
            "title": "$:/language/Buttons/NewImage/Caption",
            "text": "添加图像"
        },
        "$:/language/Buttons/NewImage/Hint": {
            "title": "$:/language/Buttons/NewImage/Hint",
            "text": "创建一个新的图像条目"
        },
        "$:/language/Buttons/NewMarkdown/Caption": {
            "title": "$:/language/Buttons/NewMarkdown/Caption",
            "text": "添加 Markdown 条目"
        },
        "$:/language/Buttons/NewMarkdown/Hint": {
            "title": "$:/language/Buttons/NewMarkdown/Hint",
            "text": "创建一个新的 Markdown 条目"
        },
        "$:/language/Buttons/NewTiddler/Caption": {
            "title": "$:/language/Buttons/NewTiddler/Caption",
            "text": "添加条目"
        },
        "$:/language/Buttons/NewTiddler/Hint": {
            "title": "$:/language/Buttons/NewTiddler/Hint",
            "text": "创建一个新的条目"
        },
        "$:/language/Buttons/OpenWindow/Caption": {
            "title": "$:/language/Buttons/OpenWindow/Caption",
            "text": "开启于新窗口"
        },
        "$:/language/Buttons/OpenWindow/Hint": {
            "title": "$:/language/Buttons/OpenWindow/Hint",
            "text": "在新窗口中开启条目"
        },
        "$:/language/Buttons/Palette/Caption": {
            "title": "$:/language/Buttons/Palette/Caption",
            "text": "调色板"
        },
        "$:/language/Buttons/Palette/Hint": {
            "title": "$:/language/Buttons/Palette/Hint",
            "text": "选择调色板"
        },
        "$:/language/Buttons/Permalink/Caption": {
            "title": "$:/language/Buttons/Permalink/Caption",
            "text": "引用链接"
        },
        "$:/language/Buttons/Permalink/Hint": {
            "title": "$:/language/Buttons/Permalink/Hint",
            "text": "设置浏览器网址栏为直接链接到此条目"
        },
        "$:/language/Buttons/Permaview/Caption": {
            "title": "$:/language/Buttons/Permaview/Caption",
            "text": "永久链接"
        },
        "$:/language/Buttons/Permaview/Hint": {
            "title": "$:/language/Buttons/Permaview/Hint",
            "text": "设置浏览器网址栏为直接链接到当前所有已开启条目"
        },
        "$:/language/Buttons/Print/Caption": {
            "title": "$:/language/Buttons/Print/Caption",
            "text": "打印页面"
        },
        "$:/language/Buttons/Print/Hint": {
            "title": "$:/language/Buttons/Print/Hint",
            "text": "打印当前页面"
        },
        "$:/language/Buttons/Refresh/Caption": {
            "title": "$:/language/Buttons/Refresh/Caption",
            "text": "刷新"
        },
        "$:/language/Buttons/Refresh/Hint": {
            "title": "$:/language/Buttons/Refresh/Hint",
            "text": "执行维基的完全刷新"
        },
        "$:/language/Buttons/Save/Caption": {
            "title": "$:/language/Buttons/Save/Caption",
            "text": "确定"
        },
        "$:/language/Buttons/Save/Hint": {
            "title": "$:/language/Buttons/Save/Hint",
            "text": "确定对此条目的更改"
        },
        "$:/language/Buttons/SaveWiki/Caption": {
            "title": "$:/language/Buttons/SaveWiki/Caption",
            "text": "保存变更"
        },
        "$:/language/Buttons/SaveWiki/Hint": {
            "title": "$:/language/Buttons/SaveWiki/Hint",
            "text": "保存变更"
        },
        "$:/language/Buttons/StoryView/Caption": {
            "title": "$:/language/Buttons/StoryView/Caption",
            "text": "查看模式"
        },
        "$:/language/Buttons/StoryView/Hint": {
            "title": "$:/language/Buttons/StoryView/Hint",
            "text": "选择查看条目的视觉效果"
        },
        "$:/language/Buttons/HideSideBar/Caption": {
            "title": "$:/language/Buttons/HideSideBar/Caption",
            "text": "隐藏侧边栏"
        },
        "$:/language/Buttons/HideSideBar/Hint": {
            "title": "$:/language/Buttons/HideSideBar/Hint",
            "text": "隐藏侧边栏"
        },
        "$:/language/Buttons/ShowSideBar/Caption": {
            "title": "$:/language/Buttons/ShowSideBar/Caption",
            "text": "显示侧边栏"
        },
        "$:/language/Buttons/ShowSideBar/Hint": {
            "title": "$:/language/Buttons/ShowSideBar/Hint",
            "text": "显示侧边栏"
        },
        "$:/language/Buttons/TagManager/Caption": {
            "title": "$:/language/Buttons/TagManager/Caption",
            "text": "标签管理"
        },
        "$:/language/Buttons/TagManager/Hint": {
            "title": "$:/language/Buttons/TagManager/Hint",
            "text": "标签管理"
        },
        "$:/language/Buttons/Timestamp/Caption": {
            "title": "$:/language/Buttons/Timestamp/Caption",
            "text": "时间戳记"
        },
        "$:/language/Buttons/Timestamp/Hint": {
            "title": "$:/language/Buttons/Timestamp/Hint",
            "text": "选择修改是否更新时间戳记"
        },
        "$:/language/Buttons/Timestamp/On/Caption": {
            "title": "$:/language/Buttons/Timestamp/On/Caption",
            "text": "时间戳记开启"
        },
        "$:/language/Buttons/Timestamp/On/Hint": {
            "title": "$:/language/Buttons/Timestamp/On/Hint",
            "text": "条目被修改时,更新时间戳记"
        },
        "$:/language/Buttons/Timestamp/Off/Caption": {
            "title": "$:/language/Buttons/Timestamp/Off/Caption",
            "text": "时间戳记关闭"
        },
        "$:/language/Buttons/Timestamp/Off/Hint": {
            "title": "$:/language/Buttons/Timestamp/Off/Hint",
            "text": "条目被修改时,不更新时间戳记"
        },
        "$:/language/Buttons/Theme/Caption": {
            "title": "$:/language/Buttons/Theme/Caption",
            "text": "布景主题"
        },
        "$:/language/Buttons/Theme/Hint": {
            "title": "$:/language/Buttons/Theme/Hint",
            "text": "选择布景主题"
        },
        "$:/language/Buttons/Bold/Caption": {
            "title": "$:/language/Buttons/Bold/Caption",
            "text": "粗体"
        },
        "$:/language/Buttons/Bold/Hint": {
            "title": "$:/language/Buttons/Bold/Hint",
            "text": "套用粗体格式于所选文本"
        },
        "$:/language/Buttons/Clear/Caption": {
            "title": "$:/language/Buttons/Clear/Caption",
            "text": "清除"
        },
        "$:/language/Buttons/Clear/Hint": {
            "title": "$:/language/Buttons/Clear/Hint",
            "text": "清除图像为纯色"
        },
        "$:/language/Buttons/EditorHeight/Caption": {
            "title": "$:/language/Buttons/EditorHeight/Caption",
            "text": "编辑器高度"
        },
        "$:/language/Buttons/EditorHeight/Caption/Auto": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Auto",
            "text": "自动调整高度以适合内容"
        },
        "$:/language/Buttons/EditorHeight/Caption/Fixed": {
            "title": "$:/language/Buttons/EditorHeight/Caption/Fixed",
            "text": "固定高度︰"
        },
        "$:/language/Buttons/EditorHeight/Hint": {
            "title": "$:/language/Buttons/EditorHeight/Hint",
            "text": "选择文本编辑器的高度"
        },
        "$:/language/Buttons/Excise/Caption": {
            "title": "$:/language/Buttons/Excise/Caption",
            "text": "剪切"
        },
        "$:/language/Buttons/Excise/Caption/Excise": {
            "title": "$:/language/Buttons/Excise/Caption/Excise",
            "text": "执行剪切"
        },
        "$:/language/Buttons/Excise/Caption/MacroName": {
            "title": "$:/language/Buttons/Excise/Caption/MacroName",
            "text": "宏的名称︰"
        },
        "$:/language/Buttons/Excise/Caption/NewTitle": {
            "title": "$:/language/Buttons/Excise/Caption/NewTitle",
            "text": "新条目的名称︰"
        },
        "$:/language/Buttons/Excise/Caption/Replace": {
            "title": "$:/language/Buttons/Excise/Caption/Replace",
            "text": "替换剪切的文本为:"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Macro": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Macro",
            "text": "宏"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Link": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Link",
            "text": "链接"
        },
        "$:/language/Buttons/Excise/Caption/Replace/Transclusion": {
            "title": "$:/language/Buttons/Excise/Caption/Replace/Transclusion",
            "text": "嵌入"
        },
        "$:/language/Buttons/Excise/Caption/Tag": {
            "title": "$:/language/Buttons/Excise/Caption/Tag",
            "text": "将新条目的标签设为此条目的名称"
        },
        "$:/language/Buttons/Excise/Caption/TiddlerExists": {
            "title": "$:/language/Buttons/Excise/Caption/TiddlerExists",
            "text": "警示:条目已经存在"
        },
        "$:/language/Buttons/Excise/Hint": {
            "title": "$:/language/Buttons/Excise/Hint",
            "text": "剪切所选文本到一个新条目"
        },
        "$:/language/Buttons/Heading1/Caption": {
            "title": "$:/language/Buttons/Heading1/Caption",
            "text": "标题 1"
        },
        "$:/language/Buttons/Heading1/Hint": {
            "title": "$:/language/Buttons/Heading1/Hint",
            "text": "套用标题级别 1 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading2/Caption": {
            "title": "$:/language/Buttons/Heading2/Caption",
            "text": "标题 2"
        },
        "$:/language/Buttons/Heading2/Hint": {
            "title": "$:/language/Buttons/Heading2/Hint",
            "text": "套用标题级别 2 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading3/Caption": {
            "title": "$:/language/Buttons/Heading3/Caption",
            "text": "标题 3"
        },
        "$:/language/Buttons/Heading3/Hint": {
            "title": "$:/language/Buttons/Heading3/Hint",
            "text": "套用标题级别 3 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading4/Caption": {
            "title": "$:/language/Buttons/Heading4/Caption",
            "text": "标题 4"
        },
        "$:/language/Buttons/Heading4/Hint": {
            "title": "$:/language/Buttons/Heading4/Hint",
            "text": "套用标题级别 4 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading5/Caption": {
            "title": "$:/language/Buttons/Heading5/Caption",
            "text": "标题 5"
        },
        "$:/language/Buttons/Heading5/Hint": {
            "title": "$:/language/Buttons/Heading5/Hint",
            "text": "套用标题级别 5 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Heading6/Caption": {
            "title": "$:/language/Buttons/Heading6/Caption",
            "text": "标题 6"
        },
        "$:/language/Buttons/Heading6/Hint": {
            "title": "$:/language/Buttons/Heading6/Hint",
            "text": "套用标题级别 6 的格式于包含所选文本的列"
        },
        "$:/language/Buttons/Italic/Caption": {
            "title": "$:/language/Buttons/Italic/Caption",
            "text": "斜体"
        },
        "$:/language/Buttons/Italic/Hint": {
            "title": "$:/language/Buttons/Italic/Hint",
            "text": "套用斜体格式于所选文本"
        },
        "$:/language/Buttons/LineWidth/Caption": {
            "title": "$:/language/Buttons/LineWidth/Caption",
            "text": "线宽"
        },
        "$:/language/Buttons/LineWidth/Hint": {
            "title": "$:/language/Buttons/LineWidth/Hint",
            "text": "设置绘画的线条宽度"
        },
        "$:/language/Buttons/Link/Caption": {
            "title": "$:/language/Buttons/Link/Caption",
            "text": "链接"
        },
        "$:/language/Buttons/Link/Hint": {
            "title": "$:/language/Buttons/Link/Hint",
            "text": "创建维基文字链接"
        },
        "$:/language/Buttons/Linkify/Caption": {
            "title": "$:/language/Buttons/Linkify/Caption",
            "text": "维基链接"
        },
        "$:/language/Buttons/Linkify/Hint": {
            "title": "$:/language/Buttons/Linkify/Hint",
            "text": "套用维基链接于所选文字"
        },
        "$:/language/Buttons/ListBullet/Caption": {
            "title": "$:/language/Buttons/ListBullet/Caption",
            "text": "符号清单"
        },
        "$:/language/Buttons/ListBullet/Hint": {
            "title": "$:/language/Buttons/ListBullet/Hint",
            "text": "套用符号清单格式于包含所选文本的列"
        },
        "$:/language/Buttons/ListNumber/Caption": {
            "title": "$:/language/Buttons/ListNumber/Caption",
            "text": "数字清单"
        },
        "$:/language/Buttons/ListNumber/Hint": {
            "title": "$:/language/Buttons/ListNumber/Hint",
            "text": "套用数字清单格式于包含所选文本的列"
        },
        "$:/language/Buttons/MonoBlock/Caption": {
            "title": "$:/language/Buttons/MonoBlock/Caption",
            "text": "等宽区块"
        },
        "$:/language/Buttons/MonoBlock/Hint": {
            "title": "$:/language/Buttons/MonoBlock/Hint",
            "text": "套用等宽区块格式于包含所选文本的列"
        },
        "$:/language/Buttons/MonoLine/Caption": {
            "title": "$:/language/Buttons/MonoLine/Caption",
            "text": "等宽"
        },
        "$:/language/Buttons/MonoLine/Hint": {
            "title": "$:/language/Buttons/MonoLine/Hint",
            "text": "套用等宽字符格式于所选文本"
        },
        "$:/language/Buttons/Opacity/Caption": {
            "title": "$:/language/Buttons/Opacity/Caption",
            "text": "不透明度"
        },
        "$:/language/Buttons/Opacity/Hint": {
            "title": "$:/language/Buttons/Opacity/Hint",
            "text": "设置绘画的不透明度"
        },
        "$:/language/Buttons/Paint/Caption": {
            "title": "$:/language/Buttons/Paint/Caption",
            "text": "绘画颜色"
        },
        "$:/language/Buttons/Paint/Hint": {
            "title": "$:/language/Buttons/Paint/Hint",
            "text": "设置绘画的颜色"
        },
        "$:/language/Buttons/Picture/Caption": {
            "title": "$:/language/Buttons/Picture/Caption",
            "text": "图片"
        },
        "$:/language/Buttons/Picture/Hint": {
            "title": "$:/language/Buttons/Picture/Hint",
            "text": "插入图片"
        },
        "$:/language/Buttons/Preview/Caption": {
            "title": "$:/language/Buttons/Preview/Caption",
            "text": "预览"
        },
        "$:/language/Buttons/Preview/Hint": {
            "title": "$:/language/Buttons/Preview/Hint",
            "text": "显示预览窗格"
        },
        "$:/language/Buttons/PreviewType/Caption": {
            "title": "$:/language/Buttons/PreviewType/Caption",
            "text": "预览类型"
        },
        "$:/language/Buttons/PreviewType/Hint": {
            "title": "$:/language/Buttons/PreviewType/Hint",
            "text": "选择预览类型"
        },
        "$:/language/Buttons/Quote/Caption": {
            "title": "$:/language/Buttons/Quote/Caption",
            "text": "引言"
        },
        "$:/language/Buttons/Quote/Hint": {
            "title": "$:/language/Buttons/Quote/Hint",
            "text": "套用引言文本格式于包含所选文本的列"
        },
        "$:/language/Buttons/RotateLeft/Caption": {
            "title": "$:/language/Buttons/RotateLeft/Caption",
            "text": "向左旋转"
        },
        "$:/language/Buttons/RotateLeft/Hint": {
            "title": "$:/language/Buttons/RotateLeft/Hint",
            "text": "图像向左旋转 90 度"
        },
        "$:/language/Buttons/Size/Caption": {
            "title": "$:/language/Buttons/Size/Caption",
            "text": "图像大小"
        },
        "$:/language/Buttons/Size/Caption/Height": {
            "title": "$:/language/Buttons/Size/Caption/Height",
            "text": "高度︰"
        },
        "$:/language/Buttons/Size/Caption/Resize": {
            "title": "$:/language/Buttons/Size/Caption/Resize",
            "text": "调整图像的大小"
        },
        "$:/language/Buttons/Size/Caption/Width": {
            "title": "$:/language/Buttons/Size/Caption/Width",
            "text": "宽度:"
        },
        "$:/language/Buttons/Size/Hint": {
            "title": "$:/language/Buttons/Size/Hint",
            "text": "设置图像的大小"
        },
        "$:/language/Buttons/Stamp/Caption": {
            "title": "$:/language/Buttons/Stamp/Caption",
            "text": "印记"
        },
        "$:/language/Buttons/Stamp/Caption/New": {
            "title": "$:/language/Buttons/Stamp/Caption/New",
            "text": "添加您自己的"
        },
        "$:/language/Buttons/Stamp/Hint": {
            "title": "$:/language/Buttons/Stamp/Hint",
            "text": "插入一个预配置的文本片段"
        },
        "$:/language/Buttons/Stamp/New/Title": {
            "title": "$:/language/Buttons/Stamp/New/Title",
            "text": "在选单中显示的标题"
        },
        "$:/language/Buttons/Stamp/New/Text": {
            "title": "$:/language/Buttons/Stamp/New/Text",
            "text": "片段的文本。(记得在 `caption` 栏位中添加一个说明性的标题)。"
        },
        "$:/language/Buttons/Strikethrough/Caption": {
            "title": "$:/language/Buttons/Strikethrough/Caption",
            "text": "删除线"
        },
        "$:/language/Buttons/Strikethrough/Hint": {
            "title": "$:/language/Buttons/Strikethrough/Hint",
            "text": "套用删除线格式于所选文本"
        },
        "$:/language/Buttons/Subscript/Caption": {
            "title": "$:/language/Buttons/Subscript/Caption",
            "text": "下标"
        },
        "$:/language/Buttons/Subscript/Hint": {
            "title": "$:/language/Buttons/Subscript/Hint",
            "text": "套用下标格式于所选文本"
        },
        "$:/language/Buttons/Superscript/Caption": {
            "title": "$:/language/Buttons/Superscript/Caption",
            "text": "上标"
        },
        "$:/language/Buttons/Superscript/Hint": {
            "title": "$:/language/Buttons/Superscript/Hint",
            "text": "套用上标格式于所选文本"
        },
        "$:/language/Buttons/ToggleSidebar/Hint": {
            "title": "$:/language/Buttons/ToggleSidebar/Hint",
            "text": "切换显示或隐藏侧边栏"
        },
        "$:/language/Buttons/Transcludify/Caption": {
            "title": "$:/language/Buttons/Transcludify/Caption",
            "text": "嵌入"
        },
        "$:/language/Buttons/Transcludify/Hint": {
            "title": "$:/language/Buttons/Transcludify/Hint",
            "text": "套用嵌入于所选文字"
        },
        "$:/language/Buttons/Underline/Caption": {
            "title": "$:/language/Buttons/Underline/Caption",
            "text": "下划线"
        },
        "$:/language/Buttons/Underline/Hint": {
            "title": "$:/language/Buttons/Underline/Hint",
            "text": "套用下划线格式于所选文本"
        },
        "$:/language/ControlPanel/Advanced/Caption": {
            "title": "$:/language/ControlPanel/Advanced/Caption",
            "text": "高级"
        },
        "$:/language/ControlPanel/Advanced/Hint": {
            "title": "$:/language/ControlPanel/Advanced/Hint",
            "text": "关于此 TiddlyWiki 的内部信息"
        },
        "$:/language/ControlPanel/Appearance/Caption": {
            "title": "$:/language/ControlPanel/Appearance/Caption",
            "text": "视觉外观"
        },
        "$:/language/ControlPanel/Appearance/Hint": {
            "title": "$:/language/ControlPanel/Appearance/Hint",
            "text": "定制您的 TiddlyWiki 外观。"
        },
        "$:/language/ControlPanel/Basics/AnimDuration/Prompt": {
            "title": "$:/language/ControlPanel/Basics/AnimDuration/Prompt",
            "text": "动画持续时间"
        },
        "$:/language/ControlPanel/Basics/AutoFocus/Prompt": {
            "title": "$:/language/ControlPanel/Basics/AutoFocus/Prompt",
            "text": "编辑条目时的默认自动停留栏位"
        },
        "$:/language/ControlPanel/Basics/Caption": {
            "title": "$:/language/ControlPanel/Basics/Caption",
            "text": "基本"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/BottomHint",
            "text": "标题含空白时请使用 &#91;&#91;双中括弧&#93;&#93;,或者您可用 <$button set=\"$:/DefaultTiddlers\" setTo=\"[list[$:/StoryList]]\">保留开启中的条目顺序</$button>"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/Prompt",
            "text": "首页"
        },
        "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint": {
            "title": "$:/language/ControlPanel/Basics/DefaultTiddlers/TopHint",
            "text": "默认开启的条目"
        },
        "$:/language/ControlPanel/Basics/Language/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Language/Prompt",
            "text": "您好!当前的语言:"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Tags/Prompt",
            "text": "新日志条目的标签"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Text/Prompt",
            "text": "新日志条目的内容"
        },
        "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewJournal/Title/Prompt",
            "text": "新日志条目的名称"
        },
        "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewTiddler/Tags/Prompt",
            "text": "新条目的标签"
        },
        "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/NewTiddler/Title/Prompt",
            "text": "新条目的名称"
        },
        "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/OverriddenShadowTiddlers/Prompt",
            "text": "被覆盖的默认条目数量"
        },
        "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/ShadowTiddlers/Prompt",
            "text": "默认条目数量"
        },
        "$:/language/ControlPanel/Basics/Subtitle/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Subtitle/Prompt",
            "text": "副标题"
        },
        "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/SystemTiddlers/Prompt",
            "text": "系统条目数量"
        },
        "$:/language/ControlPanel/Basics/Tags/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tags/Prompt",
            "text": "标签数量"
        },
        "$:/language/ControlPanel/Basics/Tiddlers/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Tiddlers/Prompt",
            "text": "一般条目数量"
        },
        "$:/language/ControlPanel/Basics/Title/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Title/Prompt",
            "text": "标题"
        },
        "$:/language/ControlPanel/Basics/Username/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Username/Prompt",
            "text": "编辑者署名"
        },
        "$:/language/ControlPanel/Basics/Version/Prompt": {
            "title": "$:/language/ControlPanel/Basics/Version/Prompt",
            "text": "~TiddlyWiki 版本"
        },
        "$:/language/ControlPanel/EditorTypes/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Caption",
            "text": "编辑器类型"
        },
        "$:/language/ControlPanel/EditorTypes/Editor/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Editor/Caption",
            "text": "编辑器"
        },
        "$:/language/ControlPanel/EditorTypes/Hint": {
            "title": "$:/language/ControlPanel/EditorTypes/Hint",
            "text": "这些条目决定使用哪个编辑器来编辑特定条目类型。"
        },
        "$:/language/ControlPanel/EditorTypes/Type/Caption": {
            "title": "$:/language/ControlPanel/EditorTypes/Type/Caption",
            "text": "类型"
        },
        "$:/language/ControlPanel/Info/Caption": {
            "title": "$:/language/ControlPanel/Info/Caption",
            "text": "信息"
        },
        "$:/language/ControlPanel/Info/Hint": {
            "title": "$:/language/ControlPanel/Info/Hint",
            "text": "有关此 TiddlyWiki 的信息"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Prompt",
            "text": "在此输入快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Add/Caption",
            "text": "添加快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Caption",
            "text": "快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Hint",
            "text": "管理键盘快捷键分配"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/NoShortcuts/Caption",
            "text": "尚无指定快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Remove/Hint",
            "text": "删除快捷键"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/All": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/All",
            "text": "所有平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Mac",
            "text": "仅 Macintosh 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonMac",
            "text": "仅非 Macintosh 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Linux",
            "text": "仅 Linux 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonLinux",
            "text": "仅非 Linux 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/Windows",
            "text": "仅 Windows 平台"
        },
        "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows": {
            "title": "$:/language/ControlPanel/KeyboardShortcuts/Platform/NonWindows",
            "text": "仅非 Windows 平台"
        },
        "$:/language/ControlPanel/LoadedModules/Caption": {
            "title": "$:/language/ControlPanel/LoadedModules/Caption",
            "text": "已加载的模块"
        },
        "$:/language/ControlPanel/LoadedModules/Hint": {
            "title": "$:/language/ControlPanel/LoadedModules/Hint",
            "text": "这些是当前已加载的模块之源码条目。斜体的模块则无源码条目,通常是因为它们是在引导过程中设置。"
        },
        "$:/language/ControlPanel/Palette/Caption": {
            "title": "$:/language/ControlPanel/Palette/Caption",
            "text": "调色板"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Caption",
            "text": "复制"
        },
        "$:/language/ControlPanel/Palette/Editor/Clone/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Clone/Prompt",
            "text": "建议您修改前先复制此默认调色板"
        },
        "$:/language/ControlPanel/Palette/Editor/Delete/Hint": {
            "title": "$:/language/ControlPanel/Palette/Editor/Delete/Hint",
            "text": "从当前调色板中删除此项"
        },
        "$:/language/ControlPanel/Palette/Editor/Names/External/Show": {
            "title": "$:/language/ControlPanel/Palette/Editor/Names/External/Show",
            "text": "显示不属于当前调色板的颜色名称"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt/Modified": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt/Modified",
            "text": "此默认调色板已被修改过"
        },
        "$:/language/ControlPanel/Palette/Editor/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Editor/Prompt",
            "text": "编辑"
        },
        "$:/language/ControlPanel/Palette/Editor/Reset/Caption": {
            "title": "$:/language/ControlPanel/Palette/Editor/Reset/Caption",
            "text": "重置"
        },
        "$:/language/ControlPanel/Palette/HideEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/HideEditor/Caption",
            "text": "隐藏编辑器"
        },
        "$:/language/ControlPanel/Palette/Prompt": {
            "title": "$:/language/ControlPanel/Palette/Prompt",
            "text": "当前的调色板:"
        },
        "$:/language/ControlPanel/Palette/ShowEditor/Caption": {
            "title": "$:/language/ControlPanel/Palette/ShowEditor/Caption",
            "text": "显示编辑器"
        },
        "$:/language/ControlPanel/Plugins/Add/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Add/Hint",
            "text": "从官方插件库安装插件"
        },
        "$:/language/ControlPanel/Plugins/Add/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Add/Caption",
            "text": "获取更多插件"
        },
        "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint",
            "text": "此插件已经安装版本 <$text text=<<installedVersion>>/>"
        },
        "$:/language/ControlPanel/Plugins/AlsoRequires": {
            "title": "$:/language/ControlPanel/Plugins/AlsoRequires",
            "text": "还需要:"
        },
        "$:/language/ControlPanel/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Caption",
            "text": "插件"
        },
        "$:/language/ControlPanel/Plugins/Disable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Caption",
            "text": "禁用"
        },
        "$:/language/ControlPanel/Plugins/Disable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Disable/Hint",
            "text": "重新加载页面时禁用此插件"
        },
        "$:/language/ControlPanel/Plugins/Disabled/Status": {
            "title": "$:/language/ControlPanel/Plugins/Disabled/Status",
            "text": "(已禁用)"
        },
        "$:/language/ControlPanel/Plugins/Downgrade/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Downgrade/Caption",
            "text": "降级"
        },
        "$:/language/ControlPanel/Plugins/Empty/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Empty/Hint",
            "text": "无"
        },
        "$:/language/ControlPanel/Plugins/Enable/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Caption",
            "text": "启用"
        },
        "$:/language/ControlPanel/Plugins/Enable/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Enable/Hint",
            "text": "重新加载页面时启用此插件"
        },
        "$:/language/ControlPanel/Plugins/Install/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Install/Caption",
            "text": "安装"
        },
        "$:/language/ControlPanel/Plugins/Installed/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Installed/Hint",
            "text": "当前已安装的插件:"
        },
        "$:/language/ControlPanel/Plugins/Languages/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Caption",
            "text": "语言"
        },
        "$:/language/ControlPanel/Plugins/Languages/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Languages/Hint",
            "text": "语言包插件"
        },
        "$:/language/ControlPanel/Plugins/NoInfoFound/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NoInfoFound/Hint",
            "text": "无 ''\"<$text text=<<currentTab>>/>\"''"
        },
        "$:/language/ControlPanel/Plugins/NoInformation/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NoInformation/Hint",
            "text": "未提供信息"
        },
        "$:/language/ControlPanel/Plugins/NotInstalled/Hint": {
            "title": "$:/language/ControlPanel/Plugins/NotInstalled/Hint",
            "text": "尚未安装此插件"
        },
        "$:/language/ControlPanel/Plugins/OpenPluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/OpenPluginLibrary",
            "text": "开启插件程式库"
        },
        "$:/language/ControlPanel/Plugins/ClosePluginLibrary": {
            "title": "$:/language/ControlPanel/Plugins/ClosePluginLibrary",
            "text": "关闭插件程式库"
        },
        "$:/language/ControlPanel/Plugins/PluginWillRequireReload": {
            "title": "$:/language/ControlPanel/Plugins/PluginWillRequireReload",
            "text": "(需要重新加载)"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Caption",
            "text": "插件"
        },
        "$:/language/ControlPanel/Plugins/Plugins/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Plugins/Hint",
            "text": "插件"
        },
        "$:/language/ControlPanel/Plugins/Reinstall/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Reinstall/Caption",
            "text": "重新安装"
        },
        "$:/language/ControlPanel/Plugins/Themes/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Caption",
            "text": "布景主题"
        },
        "$:/language/ControlPanel/Plugins/Themes/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Themes/Hint",
            "text": "布景主题插件"
        },
        "$:/language/ControlPanel/Plugins/Update/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Update/Caption",
            "text": "更新"
        },
        "$:/language/ControlPanel/Plugins/Updates/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Updates/Caption",
            "text": "更新"
        },
        "$:/language/ControlPanel/Plugins/Updates/Hint": {
            "title": "$:/language/ControlPanel/Plugins/Updates/Hint",
            "text": "已安装插件的可用更新"
        },
        "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption": {
            "title": "$:/language/ControlPanel/Plugins/Updates/UpdateAll/Caption",
            "text": "更新 <<update-count>> 个插件"
        },
        "$:/language/ControlPanel/Plugins/SubPluginPrompt": {
            "title": "$:/language/ControlPanel/Plugins/SubPluginPrompt",
            "text": "提供 <<count>> 个可用的附加插件"
        },
        "$:/language/ControlPanel/Parsing/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Caption",
            "text": "解析"
        },
        "$:/language/ControlPanel/Parsing/Hint": {
            "title": "$:/language/ControlPanel/Parsing/Hint",
            "text": "在此您可以全域禁用或启用维基解析规则。要使更改生效,请保存并重新加载您的维基。禁用某些解析规则,会妨碍 <$text text=\"TiddlyWiki\"/> 正常运作。可使用[[安全模式|https://tiddlywiki.com/#SafeMode]]恢复正常操作。"
        },
        "$:/language/ControlPanel/Parsing/Block/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Block/Caption",
            "text": "区块解析规则"
        },
        "$:/language/ControlPanel/Parsing/Inline/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Inline/Caption",
            "text": "内联解析规则"
        },
        "$:/language/ControlPanel/Parsing/Pragma/Caption": {
            "title": "$:/language/ControlPanel/Parsing/Pragma/Caption",
            "text": "编译指示解析规则"
        },
        "$:/language/ControlPanel/Saving/Caption": {
            "title": "$:/language/ControlPanel/Saving/Caption",
            "text": "保存"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Description",
            "text": "允许下载保存模块的自动保存"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/AutoSave/Hint",
            "text": "启用下载保存模块的自动保存"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Caption": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Caption",
            "text": "下载保存模块"
        },
        "$:/language/ControlPanel/Saving/DownloadSaver/Hint": {
            "title": "$:/language/ControlPanel/Saving/DownloadSaver/Hint",
            "text": "这些设置适用于兼容 HTML5 的下载保存模块"
        },
        "$:/language/ControlPanel/Saving/General/Caption": {
            "title": "$:/language/ControlPanel/Saving/General/Caption",
            "text": "通用"
        },
        "$:/language/ControlPanel/Saving/General/Hint": {
            "title": "$:/language/ControlPanel/Saving/General/Hint",
            "text": "这些设置适用于所有已载入的保存模块"
        },
        "$:/language/ControlPanel/Saving/Hint": {
            "title": "$:/language/ControlPanel/Saving/Hint",
            "text": "用于通过保存模块将整个 TiddlyWiki 保存为单个文件的设置"
        },
        "$:/language/ControlPanel/Saving/GitService/Branch": {
            "title": "$:/language/ControlPanel/Saving/GitService/Branch",
            "text": "用于保存的目标分支"
        },
        "$:/language/ControlPanel/Saving/GitService/CommitMessage": {
            "title": "$:/language/ControlPanel/Saving/GitService/CommitMessage",
            "text": "由 TiddlyWiki 保存"
        },
        "$:/language/ControlPanel/Saving/GitService/Description": {
            "title": "$:/language/ControlPanel/Saving/GitService/Description",
            "text": "这些设置仅用于保存至 <<service-name>>"
        },
        "$:/language/ControlPanel/Saving/GitService/Filename": {
            "title": "$:/language/ControlPanel/Saving/GitService/Filename",
            "text": "目标文件的文件名称 (例如,`index.html`)"
        },
        "$:/language/ControlPanel/Saving/GitService/Path": {
            "title": "$:/language/ControlPanel/Saving/GitService/Path",
            "text": "目标文件的路径 (例如,`/wiki/`)"
        },
        "$:/language/ControlPanel/Saving/GitService/Repo": {
            "title": "$:/language/ControlPanel/Saving/GitService/Repo",
            "text": "目标存储库 (例如,`Jermolene/TiddlyWiki5`)"
        },
        "$:/language/ControlPanel/Saving/GitService/ServerURL": {
            "title": "$:/language/ControlPanel/Saving/GitService/ServerURL",
            "text": "服务器 API 网址"
        },
        "$:/language/ControlPanel/Saving/GitService/UserName": {
            "title": "$:/language/ControlPanel/Saving/GitService/UserName",
            "text": "用户名称"
        },
        "$:/language/ControlPanel/Saving/GitService/GitHub/Caption": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitHub/Caption",
            "text": "~GitHub 保存模块"
        },
        "$:/language/ControlPanel/Saving/GitService/GitHub/Password": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitHub/Password",
            "text": "密码、OAUTH 令牌,或个人存取令牌 (详见 [[GitHub 帮助页面|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]])"
        },
        "$:/language/ControlPanel/Saving/GitService/GitLab/Caption": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitLab/Caption",
            "text": "~GitLab 保存模块"
        },
        "$:/language/ControlPanel/Saving/GitService/GitLab/Password": {
            "title": "$:/language/ControlPanel/Saving/GitService/GitLab/Password",
            "text": "个人存取令牌的 API (详见 [[GitLab 帮助页面|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]])"
        },
        "$:/language/ControlPanel/Saving/GitService/Gitea/Caption": {
            "title": "$:/language/ControlPanel/Saving/GitService/Gitea/Caption",
            "text": "Gitea 保存模块"
        },
        "$:/language/ControlPanel/Saving/GitService/Gitea/Password": {
            "title": "$:/language/ControlPanel/Saving/GitService/Gitea/Password",
            "text": "个人存取令牌的 API (通过 Gitea 的 Web 界面:`设定 | 应用程序 | 产生新的令牌`)"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Advanced/Heading",
            "text": "高级设置"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/BackupDir",
            "text": "备份文件夹"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Backups": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Backups",
            "text": "备份"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Caption": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Caption",
            "text": "~TiddlySpot 保存模块"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Description": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Description",
            "text": "这些设置只适用于保存到 http://tiddlyspot.com 或兼容的远程服务器时。"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Filename": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Filename",
            "text": "上传文件名"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Heading": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Heading",
            "text": "~TiddlySpot"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Hint": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Hint",
            "text": "//默认之服务器网址 `http://<wikiname>.tiddlyspot.com/store.cgi`,可改为定制之服务器网址,例如 `http://example.com/store.php`。//"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/Password": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/Password",
            "text": "密码"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/ServerURL",
            "text": "服务器网址"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UploadDir",
            "text": "上传文件夹"
        },
        "$:/language/ControlPanel/Saving/TiddlySpot/UserName": {
            "title": "$:/language/ControlPanel/Saving/TiddlySpot/UserName",
            "text": "用户"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Caption": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Caption",
            "text": "自动保存"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Disabled/Description",
            "text": "不要自动保存变更"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Enabled/Description",
            "text": "自动保存变更"
        },
        "$:/language/ControlPanel/Settings/AutoSave/Hint": {
            "title": "$:/language/ControlPanel/Settings/AutoSave/Hint",
            "text": "当使用支持的保存模块时,在编辑期间尝试自动保存变更"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Caption": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Caption",
            "text": "驼峰式维基链接"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Hint": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Hint",
            "text": "您可以全域禁用驼峰式短语自动链接。须保存后重新加载,方才生效。"
        },
        "$:/language/ControlPanel/Settings/CamelCase/Description": {
            "title": "$:/language/ControlPanel/Settings/CamelCase/Description",
            "text": "启用自动驼峰式链接"
        },
        "$:/language/ControlPanel/Settings/Caption": {
            "title": "$:/language/ControlPanel/Settings/Caption",
            "text": "设置"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Caption",
            "text": "默认侧边栏页签"
        },
        "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint": {
            "title": "$:/language/ControlPanel/Settings/DefaultSidebarTab/Hint",
            "text": "指定默认显示的侧边栏页签"
        },
        "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption": {
            "title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Caption",
            "text": "更多侧边栏的默认页签"
        },
        "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint": {
            "title": "$:/language/ControlPanel/Settings/DefaultMoreSidebarTab/Hint",
            "text": "指定默认显示的更多侧栏页签"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Caption",
            "text": "编辑器工具栏"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Hint",
            "text": "启用或禁用编辑器工具栏︰"
        },
        "$:/language/ControlPanel/Settings/EditorToolbar/Description": {
            "title": "$:/language/ControlPanel/Settings/EditorToolbar/Description",
            "text": "显示编辑器工具栏"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Caption": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Caption",
            "text": "条目信息面板模式"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Hint": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Hint",
            "text": "控制条目信息面板何时关闭︰"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Popup/Description",
            "text": "条目信息面板自动关闭"
        },
        "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description": {
            "title": "$:/language/ControlPanel/Settings/InfoPanelMode/Sticky/Description",
            "text": "条目信息面板保持打开状态,直到明确关闭"
        },
        "$:/language/ControlPanel/Settings/Hint": {
            "title": "$:/language/ControlPanel/Settings/Hint",
            "text": "这些高级设置让您定制 TiddlyWiki 的行为。"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/Caption",
            "text": "条目开启行为"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/InsideRiver/Hint",
            "text": "从故事河//中//导航"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OutsideRiver/Hint",
            "text": "从故事河//外//导航"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAbove",
            "text": "开启于当前条目之上"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenBelow",
            "text": "开启于当前条目之下"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtTop",
            "text": "开启于故事河的顶端"
        },
        "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom": {
            "title": "$:/language/ControlPanel/Settings/LinkToBehaviour/OpenAtBottom",
            "text": "开启于故事河的底部"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Caption",
            "text": "维基链接"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Hint",
            "text": "选择是否要链接到尚未存在的条目"
        },
        "$:/language/ControlPanel/Settings/MissingLinks/Description": {
            "title": "$:/language/ControlPanel/Settings/MissingLinks/Description",
            "text": "启用链接到佚失条目"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Caption",
            "text": "网址栏导览"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Hint",
            "text": "在浏览器网址栏导览到条目时的行为:"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/No/Description",
            "text": "不更新网址栏"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permalink/Description",
            "text": "包含目标条目"
        },
        "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationAddressBar/Permaview/Description",
            "text": "包括目标条目和当前已开启的条目序列"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Caption",
            "text": "历史记录导览"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Hint",
            "text": "当导览到条目时,更新浏览器历史记录:"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/No/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/No/Description",
            "text": "不更新历史记录"
        },
        "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationHistory/Yes/Description",
            "text": "更新历史记录"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Caption",
            "text": "引用链接/固定链接 模式"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/Hint",
            "text": "选择 引用链接/固定链接 的处理方式:"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/CopyToClipboard/Description",
            "text": "将 引用链接/固定链接 网址复制到剪贴板"
        },
        "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description": {
            "title": "$:/language/ControlPanel/Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description",
            "text": "以 引用链接/固定链接 更新网址栏"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Caption",
            "text": "性能检测"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Hint",
            "text": "在浏览器的开发人员控制台,显示性能统计数据。需要重新加载才能生效。"
        },
        "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description": {
            "title": "$:/language/ControlPanel/Settings/PerformanceInstrumentation/Description",
            "text": "启用性能检测"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Caption",
            "text": "工具栏按钮样式"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Hint",
            "text": "选择工具栏按钮的样式:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Borderless",
            "text": "无边框"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Boxed",
            "text": "方框"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtonStyle/Styles/Rounded",
            "text": "圆形"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Caption": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Caption",
            "text": "工具栏按钮"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Hint": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Hint",
            "text": "默认的工具栏按钮外观:"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Icons/Description",
            "text": "包含图标"
        },
        "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description": {
            "title": "$:/language/ControlPanel/Settings/ToolbarButtons/Text/Description",
            "text": "包含文本"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Caption": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Caption",
            "text": "条目标题"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Hint": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Hint",
            "text": "可选地显示条目标题为链接"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/No/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/No/Description",
            "text": "不显示条目标题为链接"
        },
        "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description": {
            "title": "$:/language/ControlPanel/Settings/TitleLinks/Yes/Description",
            "text": "显示条目标题为链接"
        },
        "$:/language/ControlPanel/StoryView/Caption": {
            "title": "$:/language/ControlPanel/StoryView/Caption",
            "text": "查看模式"
        },
        "$:/language/ControlPanel/StoryView/Prompt": {
            "title": "$:/language/ControlPanel/StoryView/Prompt",
            "text": "当前的查看模式:"
        },
        "$:/language/ControlPanel/Stylesheets/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Caption",
            "text": "样式表"
        },
        "$:/language/ControlPanel/Stylesheets/Expand/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Expand/Caption",
            "text": "全部展开"
        },
        "$:/language/ControlPanel/Stylesheets/Hint": {
            "title": "$:/language/ControlPanel/Stylesheets/Hint",
            "text": "这是当前标签为 <<tag \"$:/tags/Stylesheet\">> 的样式表条目呈现的 CSS"
        },
        "$:/language/ControlPanel/Stylesheets/Restore/Caption": {
            "title": "$:/language/ControlPanel/Stylesheets/Restore/Caption",
            "text": "复原"
        },
        "$:/language/ControlPanel/Theme/Caption": {
            "title": "$:/language/ControlPanel/Theme/Caption",
            "text": "布景主题"
        },
        "$:/language/ControlPanel/Theme/Prompt": {
            "title": "$:/language/ControlPanel/Theme/Prompt",
            "text": "当前的布景主题:"
        },
        "$:/language/ControlPanel/TiddlerFields/Caption": {
            "title": "$:/language/ControlPanel/TiddlerFields/Caption",
            "text": "条目栏位"
        },
        "$:/language/ControlPanel/TiddlerFields/Hint": {
            "title": "$:/language/ControlPanel/TiddlerFields/Hint",
            "text": "这是本维基使用中的所有条目栏位(含系统条目的栏位,但默认条目的栏位除外)。"
        },
        "$:/language/ControlPanel/Toolbars/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/Caption",
            "text": "工具栏"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Caption",
            "text": "编辑工具栏"
        },
        "$:/language/ControlPanel/Toolbars/EditToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditToolbar/Hint",
            "text": "选择将显示哪些按钮于条目的编辑模式工具栏。拖放可改变顺序。"
        },
        "$:/language/ControlPanel/Toolbars/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/Hint",
            "text": "选择将显示哪些工具栏按钮"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Caption",
            "text": "页面工具栏"
        },
        "$:/language/ControlPanel/Toolbars/PageControls/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/PageControls/Hint",
            "text": "选择将显示哪些按钮于主页面的工具栏。拖放可改变顺序。"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Caption",
            "text": "编辑器工具栏"
        },
        "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/EditorToolbar/Hint",
            "text": "选择将显示哪些按钮于编辑器工具栏。请注意,某些按钮只会出现在编辑某一类型的条目时。拖放可改变顺序。"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Caption",
            "text": "查看工具栏"
        },
        "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint": {
            "title": "$:/language/ControlPanel/Toolbars/ViewToolbar/Hint",
            "text": "选择将显示哪些按钮于条目的查看模式工具栏。拖放可改变顺序。"
        },
        "$:/language/ControlPanel/Tools/Download/Full/Caption": {
            "title": "$:/language/ControlPanel/Tools/Download/Full/Caption",
            "text": "下载完整副本"
        },
        "$:/core/zh-Hans/readme": {
            "title": "$:/core/zh-Hans/readme",
            "text": "此插件包含 TiddlyWiki 的核心组件,包括:\n\n* JavaScript 代码模块\n* 图标\n* 创建 TiddlyWiki 的用户介面所需的模板\n* 核心所使用的可当地语系化字串的英国英语 (''en-GB'') 翻译\n"
        },
        "$:/language/Date/Long/Day/0": {
            "title": "$:/language/Date/Long/Day/0",
            "text": "周日"
        },
        "$:/language/Date/Long/Day/1": {
            "title": "$:/language/Date/Long/Day/1",
            "text": "周一"
        },
        "$:/language/Date/Long/Day/2": {
            "title": "$:/language/Date/Long/Day/2",
            "text": "周二"
        },
        "$:/language/Date/Long/Day/3": {
            "title": "$:/language/Date/Long/Day/3",
            "text": "周三"
        },
        "$:/language/Date/Long/Day/4": {
            "title": "$:/language/Date/Long/Day/4",
            "text": "周四"
        },
        "$:/language/Date/Long/Day/5": {
            "title": "$:/language/Date/Long/Day/5",
            "text": "周五"
        },
        "$:/language/Date/Long/Day/6": {
            "title": "$:/language/Date/Long/Day/6",
            "text": "周六"
        },
        "$:/language/Date/Long/Month/1": {
            "title": "$:/language/Date/Long/Month/1",
            "text": "一月"
        },
        "$:/language/Date/Long/Month/2": {
            "title": "$:/language/Date/Long/Month/2",
            "text": "二月"
        },
        "$:/language/Date/Long/Month/3": {
            "title": "$:/language/Date/Long/Month/3",
            "text": "三月"
        },
        "$:/language/Date/Long/Month/4": {
            "title": "$:/language/Date/Long/Month/4",
            "text": "四月"
        },
        "$:/language/Date/Long/Month/5": {
            "title": "$:/language/Date/Long/Month/5",
            "text": "五月"
        },
        "$:/language/Date/Long/Month/6": {
            "title": "$:/language/Date/Long/Month/6",
            "text": "六月"
        },
        "$:/language/Date/Long/Month/7": {
            "title": "$:/language/Date/Long/Month/7",
            "text": "七月"
        },
        "$:/language/Date/Long/Month/8": {
            "title": "$:/language/Date/Long/Month/8",
            "text": "八月"
        },
        "$:/language/Date/Long/Month/9": {
            "title": "$:/language/Date/Long/Month/9",
            "text": "九月"
        },
        "$:/language/Date/Long/Month/10": {
            "title": "$:/language/Date/Long/Month/10",
            "text": "十月"
        },
        "$:/language/Date/Long/Month/11": {
            "title": "$:/language/Date/Long/Month/11",
            "text": "十一月"
        },
        "$:/language/Date/Long/Month/12": {
            "title": "$:/language/Date/Long/Month/12",
            "text": "十二月"
        },
        "$:/language/Date/Period/am": {
            "title": "$:/language/Date/Period/am",
            "text": "上午"
        },
        "$:/language/Date/Period/pm": {
            "title": "$:/language/Date/Period/pm",
            "text": "下午"
        },
        "$:/language/Date/Short/Day/0": {
            "title": "$:/language/Date/Short/Day/0",
            "text": "日"
        },
        "$:/language/Date/Short/Day/1": {
            "title": "$:/language/Date/Short/Day/1",
            "text": "一"
        },
        "$:/language/Date/Short/Day/2": {
            "title": "$:/language/Date/Short/Day/2",
            "text": "二"
        },
        "$:/language/Date/Short/Day/3": {
            "title": "$:/language/Date/Short/Day/3",
            "text": "三"
        },
        "$:/language/Date/Short/Day/4": {
            "title": "$:/language/Date/Short/Day/4",
            "text": "四"
        },
        "$:/language/Date/Short/Day/5": {
            "title": "$:/language/Date/Short/Day/5",
            "text": "五"
        },
        "$:/language/Date/Short/Day/6": {
            "title": "$:/language/Date/Short/Day/6",
            "text": "六"
        },
        "$:/language/Date/Short/Month/1": {
            "title": "$:/language/Date/Short/Month/1",
            "text": "01月"
        },
        "$:/language/Date/Short/Month/2": {
            "title": "$:/language/Date/Short/Month/2",
            "text": "02月"
        },
        "$:/language/Date/Short/Month/3": {
            "title": "$:/language/Date/Short/Month/3",
            "text": "03月"
        },
        "$:/language/Date/Short/Month/4": {
            "title": "$:/language/Date/Short/Month/4",
            "text": "04月"
        },
        "$:/language/Date/Short/Month/5": {
            "title": "$:/language/Date/Short/Month/5",
            "text": "05月"
        },
        "$:/language/Date/Short/Month/6": {
            "title": "$:/language/Date/Short/Month/6",
            "text": "06月"
        },
        "$:/language/Date/Short/Month/7": {
            "title": "$:/language/Date/Short/Month/7",
            "text": "07月"
        },
        "$:/language/Date/Short/Month/8": {
            "title": "$:/language/Date/Short/Month/8",
            "text": "08月"
        },
        "$:/language/Date/Short/Month/9": {
            "title": "$:/language/Date/Short/Month/9",
            "text": "09月"
        },
        "$:/language/Date/Short/Month/10": {
            "title": "$:/language/Date/Short/Month/10",
            "text": "10月"
        },
        "$:/language/Date/Short/Month/11": {
            "title": "$:/language/Date/Short/Month/11",
            "text": "11月"
        },
        "$:/language/Date/Short/Month/12": {
            "title": "$:/language/Date/Short/Month/12",
            "text": "12月"
        },
        "$:/language/RelativeDate/Future/Days": {
            "title": "$:/language/RelativeDate/Future/Days",
            "text": "<<period>> 天后"
        },
        "$:/language/RelativeDate/Future/Hours": {
            "title": "$:/language/RelativeDate/Future/Hours",
            "text": "<<period>> 小时后"
        },
        "$:/language/RelativeDate/Future/Minutes": {
            "title": "$:/language/RelativeDate/Future/Minutes",
            "text": "<<period>> 分钟后"
        },
        "$:/language/RelativeDate/Future/Months": {
            "title": "$:/language/RelativeDate/Future/Months",
            "text": "<<period>> 个月后"
        },
        "$:/language/RelativeDate/Future/Second": {
            "title": "$:/language/RelativeDate/Future/Second",
            "text": "1 秒后"
        },
        "$:/language/RelativeDate/Future/Seconds": {
            "title": "$:/language/RelativeDate/Future/Seconds",
            "text": "<<period>> 秒后"
        },
        "$:/language/RelativeDate/Future/Years": {
            "title": "$:/language/RelativeDate/Future/Years",
            "text": "<<period>> 年后"
        },
        "$:/language/RelativeDate/Past/Days": {
            "title": "$:/language/RelativeDate/Past/Days",
            "text": "<<period>> 天前"
        },
        "$:/language/RelativeDate/Past/Hours": {
            "title": "$:/language/RelativeDate/Past/Hours",
            "text": "<<period>> 小时前"
        },
        "$:/language/RelativeDate/Past/Minutes": {
            "title": "$:/language/RelativeDate/Past/Minutes",
            "text": "<<period>> 分钟前"
        },
        "$:/language/RelativeDate/Past/Months": {
            "title": "$:/language/RelativeDate/Past/Months",
            "text": "<<period>> 个月前"
        },
        "$:/language/RelativeDate/Past/Second": {
            "title": "$:/language/RelativeDate/Past/Second",
            "text": "1 秒前"
        },
        "$:/language/RelativeDate/Past/Seconds": {
            "title": "$:/language/RelativeDate/Past/Seconds",
            "text": "<<period>> 秒前"
        },
        "$:/language/RelativeDate/Past/Years": {
            "title": "$:/language/RelativeDate/Past/Years",
            "text": "<<period>> 年前"
        },
        "$:/language/Docs/ModuleTypes/allfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/allfilteroperator",
            "text": "''all'' 筛选器算子的子算子。"
        },
        "$:/language/Docs/ModuleTypes/animation": {
            "title": "$:/language/Docs/ModuleTypes/animation",
            "text": "动画模块包含可用于 RevealWidget 的动画。"
        },
        "$:/language/Docs/ModuleTypes/authenticator": {
            "title": "$:/language/Docs/ModuleTypes/authenticator",
            "text": "定义内置 HTTP 服务器对请求的身份验证方式。"
        },
        "$:/language/Docs/ModuleTypes/bitmapeditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/bitmapeditoroperation",
            "text": "一个位图编辑器工具栏操作。"
        },
        "$:/language/Docs/ModuleTypes/command": {
            "title": "$:/language/Docs/ModuleTypes/command",
            "text": "可于 Node.js 执行的指令。"
        },
        "$:/language/Docs/ModuleTypes/config": {
            "title": "$:/language/Docs/ModuleTypes/config",
            "text": "加入 `$tw.config` 的数据。"
        },
        "$:/language/Docs/ModuleTypes/filteroperator": {
            "title": "$:/language/Docs/ModuleTypes/filteroperator",
            "text": "个别筛选器算子方法。"
        },
        "$:/language/Docs/ModuleTypes/global": {
            "title": "$:/language/Docs/ModuleTypes/global",
            "text": "加入 `$tw` 的全域数据。"
        },
        "$:/language/Docs/ModuleTypes/info": {
            "title": "$:/language/Docs/ModuleTypes/info",
            "text": "透过 [[$:/temp/info-plugin]] 伪插件,发布系统信息。"
        },
        "$:/language/Docs/ModuleTypes/isfilteroperator": {
            "title": "$:/language/Docs/ModuleTypes/isfilteroperator",
            "text": "''is'' 筛选器算子的运算符。"
        },
        "$:/language/Docs/ModuleTypes/library": {
            "title": "$:/language/Docs/ModuleTypes/library",
            "text": "一般用途的 JavaScript 模块的通用模块类型。"
        },
        "$:/language/Docs/ModuleTypes/macro": {
            "title": "$:/language/Docs/ModuleTypes/macro",
            "text": "JavaScript ''宏''定义。"
        },
        "$:/language/Docs/ModuleTypes/parser": {
            "title": "$:/language/Docs/ModuleTypes/parser",
            "text": "不同内容类型的解析器。"
        },
        "$:/language/Docs/ModuleTypes/route": {
            "title": "$:/language/Docs/ModuleTypes/route",
            "text": "定义内置 HTTP 服务器如何处理各个网址格式。"
        },
        "$:/language/Docs/ModuleTypes/saver": {
            "title": "$:/language/Docs/ModuleTypes/saver",
            "text": "于浏览器保存文件的不同的保存处理方法。"
        },
        "$:/language/Docs/ModuleTypes/startup": {
            "title": "$:/language/Docs/ModuleTypes/startup",
            "text": "启动时期的功能函数。"
        },
        "$:/language/Docs/ModuleTypes/storyview": {
            "title": "$:/language/Docs/ModuleTypes/storyview",
            "text": "查看模式用以自订 list 小部件的动画与行为。"
        },
        "$:/language/Docs/ModuleTypes/texteditoroperation": {
            "title": "$:/language/Docs/ModuleTypes/texteditoroperation",
            "text": "一个文本编辑器工具栏操作。"
        },
        "$:/language/Docs/ModuleTypes/tiddlerdeserializer": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerdeserializer",
            "text": "转换不同内容类型至条目。"
        },
        "$:/language/Docs/ModuleTypes/tiddlerfield": {
            "title": "$:/language/Docs/ModuleTypes/tiddlerfield",
            "text": "定义个别条目栏位的行为。"
        },
        "$:/language/Docs/ModuleTypes/tiddlermethod": {
            "title": "$:/language/Docs/ModuleTypes/tiddlermethod",
            "text": "添加方法至 `$tw.Tiddler` 原型。"
        },
        "$:/language/Docs/ModuleTypes/upgrader": {
            "title": "$:/language/Docs/ModuleTypes/upgrader",
            "text": "于升级/导入过程中,套用升级处理至条目。"
        },
        "$:/language/Docs/ModuleTypes/utils": {
            "title": "$:/language/Docs/ModuleTypes/utils",
            "text": "添加方法至 `$tw.utils`。"
        },
        "$:/language/Docs/ModuleTypes/utils-node": {
            "title": "$:/language/Docs/ModuleTypes/utils-node",
            "text": "将特定于 Node.js 的方法添加到 '$tw.utils'。"
        },
        "$:/language/Docs/ModuleTypes/widget": {
            "title": "$:/language/Docs/ModuleTypes/widget",
            "text": "封装 DOM 渲染和刷新的小部件。"
        },
        "$:/language/Docs/ModuleTypes/wikimethod": {
            "title": "$:/language/Docs/ModuleTypes/wikimethod",
            "text": "添加方法至 `$tw.Wiki`。"
        },
        "$:/language/Docs/ModuleTypes/wikirule": {
            "title": "$:/language/Docs/ModuleTypes/wikirule",
            "text": "WikiText 解析器的个别的语法规则。"
        },
        "$:/language/Docs/PaletteColours/alert-background": {
            "title": "$:/language/Docs/PaletteColours/alert-background",
            "text": "警示背景"
        },
        "$:/language/Docs/PaletteColours/alert-border": {
            "title": "$:/language/Docs/PaletteColours/alert-border",
            "text": "警示边框"
        },
        "$:/language/Docs/PaletteColours/alert-highlight": {
            "title": "$:/language/Docs/PaletteColours/alert-highlight",
            "text": "警示高亮度"
        },
        "$:/language/Docs/PaletteColours/alert-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/alert-muted-foreground",
            "text": "警示的低调前景"
        },
        "$:/language/Docs/PaletteColours/background": {
            "title": "$:/language/Docs/PaletteColours/background",
            "text": "一般背景"
        },
        "$:/language/Docs/PaletteColours/blockquote-bar": {
            "title": "$:/language/Docs/PaletteColours/blockquote-bar",
            "text": "引言条"
        },
        "$:/language/Docs/PaletteColours/button-background": {
            "title": "$:/language/Docs/PaletteColours/button-background",
            "text": "默认按钮背景"
        },
        "$:/language/Docs/PaletteColours/button-border": {
            "title": "$:/language/Docs/PaletteColours/button-border",
            "text": "默认按钮边框"
        },
        "$:/language/Docs/PaletteColours/button-foreground": {
            "title": "$:/language/Docs/PaletteColours/button-foreground",
            "text": "默认按钮前景"
        },
        "$:/language/Docs/PaletteColours/code-background": {
            "title": "$:/language/Docs/PaletteColours/code-background",
            "text": "代码背景"
        },
        "$:/language/Docs/PaletteColours/code-border": {
            "title": "$:/language/Docs/PaletteColours/code-border",
            "text": "代码边框"
        },
        "$:/language/Docs/PaletteColours/code-foreground": {
            "title": "$:/language/Docs/PaletteColours/code-foreground",
            "text": "代码前景"
        },
        "$:/language/Docs/PaletteColours/dirty-indicator": {
            "title": "$:/language/Docs/PaletteColours/dirty-indicator",
            "text": "未保存变更指示器"
        },
        "$:/language/Docs/PaletteColours/download-background": {
            "title": "$:/language/Docs/PaletteColours/download-background",
            "text": "下载按钮背景"
        },
        "$:/language/Docs/PaletteColours/download-foreground": {
            "title": "$:/language/Docs/PaletteColours/download-foreground",
            "text": "下载按钮前景"
        },
        "$:/language/Docs/PaletteColours/dragger-background": {
            "title": "$:/language/Docs/PaletteColours/dragger-background",
            "text": "拖动区背景"
        },
        "$:/language/Docs/PaletteColours/dragger-foreground": {
            "title": "$:/language/Docs/PaletteColours/dragger-foreground",
            "text": "拖动区前景"
        },
        "$:/language/Docs/PaletteColours/dropdown-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-background",
            "text": "下拉背景"
        },
        "$:/language/Docs/PaletteColours/dropdown-border": {
            "title": "$:/language/Docs/PaletteColours/dropdown-border",
            "text": "下拉边框"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background-selected",
            "text": "选定的下拉页签背景"
        },
        "$:/language/Docs/PaletteColours/dropdown-tab-background": {
            "title": "$:/language/Docs/PaletteColours/dropdown-tab-background",
            "text": "下拉页签背景"
        },
        "$:/language/Docs/PaletteColours/dropzone-background": {
            "title": "$:/language/Docs/PaletteColours/dropzone-background",
            "text": "拖放背景"
        },
        "$:/language/Docs/PaletteColours/external-link-background-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-hover",
            "text": "悬停外部链结背景"
        },
        "$:/language/Docs/PaletteColours/external-link-background-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-background-visited",
            "text": "已造访过的外部链结背景"
        },
        "$:/language/Docs/PaletteColours/external-link-background": {
            "title": "$:/language/Docs/PaletteColours/external-link-background",
            "text": "外部链结背景"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-hover",
            "text": "悬停外部链结前景"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground-visited": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground-visited",
            "text": "已造访过的外部链结前景"
        },
        "$:/language/Docs/PaletteColours/external-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/external-link-foreground",
            "text": "外部链结前景"
        },
        "$:/language/Docs/PaletteColours/foreground": {
            "title": "$:/language/Docs/PaletteColours/foreground",
            "text": "一般前景"
        },
        "$:/language/Docs/PaletteColours/menubar-background": {
            "title": "$:/language/Docs/PaletteColours/menubar-background",
            "text": "菜单列背景"
        },
        "$:/language/Docs/PaletteColours/menubar-foreground": {
            "title": "$:/language/Docs/PaletteColours/menubar-foreground",
            "text": "菜单列前景"
        },
        "$:/language/Docs/PaletteColours/message-background": {
            "title": "$:/language/Docs/PaletteColours/message-background",
            "text": "信息框背景"
        },
        "$:/language/Docs/PaletteColours/message-border": {
            "title": "$:/language/Docs/PaletteColours/message-border",
            "text": "信息边框"
        },
        "$:/language/Docs/PaletteColours/message-foreground": {
            "title": "$:/language/Docs/PaletteColours/message-foreground",
            "text": "信息框前景"
        },
        "$:/language/Docs/PaletteColours/modal-backdrop": {
            "title": "$:/language/Docs/PaletteColours/modal-backdrop",
            "text": "模块背景幕"
        },
        "$:/language/Docs/PaletteColours/modal-background": {
            "title": "$:/language/Docs/PaletteColours/modal-background",
            "text": "模块背景"
        },
        "$:/language/Docs/PaletteColours/modal-border": {
            "title": "$:/language/Docs/PaletteColours/modal-border",
            "text": "模块边框"
        },
        "$:/language/Docs/PaletteColours/modal-footer-background": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-background",
            "text": "模块页脚背景"
        },
        "$:/language/Docs/PaletteColours/modal-footer-border": {
            "title": "$:/language/Docs/PaletteColours/modal-footer-border",
            "text": "模块页脚边框"
        },
        "$:/language/Docs/PaletteColours/modal-header-border": {
            "title": "$:/language/Docs/PaletteColours/modal-header-border",
            "text": "模块标题边框"
        },
        "$:/language/Docs/PaletteColours/muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/muted-foreground",
            "text": "一般低调前景"
        },
        "$:/language/Docs/PaletteColours/notification-background": {
            "title": "$:/language/Docs/PaletteColours/notification-background",
            "text": "通知背景"
        },
        "$:/language/Docs/PaletteColours/notification-border": {
            "title": "$:/language/Docs/PaletteColours/notification-border",
            "text": "通知边框"
        },
        "$:/language/Docs/PaletteColours/page-background": {
            "title": "$:/language/Docs/PaletteColours/page-background",
            "text": "页面背景"
        },
        "$:/language/Docs/PaletteColours/pre-background": {
            "title": "$:/language/Docs/PaletteColours/pre-background",
            "text": "pre 背景"
        },
        "$:/language/Docs/PaletteColours/pre-border": {
            "title": "$:/language/Docs/PaletteColours/pre-border",
            "text": "pre 边框"
        },
        "$:/language/Docs/PaletteColours/primary": {
            "title": "$:/language/Docs/PaletteColours/primary",
            "text": "主颜色"
        },
        "$:/language/Docs/PaletteColours/select-tag-background": {
            "title": "$:/language/Docs/PaletteColours/select-tag-background",
            "text": "`<select>` 元素背景"
        },
        "$:/language/Docs/PaletteColours/select-tag-foreground": {
            "title": "$:/language/Docs/PaletteColours/select-tag-foreground",
            "text": "`<select>` 元素文本"
        },
        "$:/language/Docs/PaletteColours/sidebar-button-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-button-foreground",
            "text": "侧边栏按钮前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground-hover",
            "text": "悬停侧边栏控制项前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-controls-foreground",
            "text": "侧边栏控制项前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground-shadow": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground-shadow",
            "text": "侧边栏前景阴影"
        },
        "$:/language/Docs/PaletteColours/sidebar-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-foreground",
            "text": "侧边栏前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground-hover",
            "text": "悬停侧边栏低调前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-muted-foreground",
            "text": "侧边栏低调前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background-selected",
            "text": "侧边栏选定页签背景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-background": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-background",
            "text": "侧边栏页签背景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border-selected",
            "text": "侧边栏选定页签边框"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-border": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-border",
            "text": "侧边栏页签边框"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-divider": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-divider",
            "text": "侧边栏页签分隔线"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground-selected",
            "text": "侧边栏选定页签前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tab-foreground",
            "text": "侧边栏页签前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground-hover",
            "text": "侧边栏悬停条目链结前景"
        },
        "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/sidebar-tiddler-link-foreground",
            "text": "侧边栏条目链结前景"
        },
        "$:/language/Docs/PaletteColours/site-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/site-title-foreground",
            "text": "网站标题前景"
        },
        "$:/language/Docs/PaletteColours/static-alert-foreground": {
            "title": "$:/language/Docs/PaletteColours/static-alert-foreground",
            "text": "静态警示前景"
        },
        "$:/language/Docs/PaletteColours/tab-background-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-background-selected",
            "text": "选定的页签背景"
        },
        "$:/language/Docs/PaletteColours/tab-background": {
            "title": "$:/language/Docs/PaletteColours/tab-background",
            "text": "页签背景"
        },
        "$:/language/Docs/PaletteColours/tab-border-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-border-selected",
            "text": "选定的页签边框"
        },
        "$:/language/Docs/PaletteColours/tab-border": {
            "title": "$:/language/Docs/PaletteColours/tab-border",
            "text": "页签边框"
        },
        "$:/language/Docs/PaletteColours/tab-divider": {
            "title": "$:/language/Docs/PaletteColours/tab-divider",
            "text": "页签分隔线"
        },
        "$:/language/Docs/PaletteColours/tab-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground-selected",
            "text": "选定的页签前景"
        },
        "$:/language/Docs/PaletteColours/tab-foreground": {
            "title": "$:/language/Docs/PaletteColours/tab-foreground",
            "text": "页签前景"
        },
        "$:/language/Docs/PaletteColours/table-border": {
            "title": "$:/language/Docs/PaletteColours/table-border",
            "text": "表格边框"
        },
        "$:/language/Docs/PaletteColours/table-footer-background": {
            "title": "$:/language/Docs/PaletteColours/table-footer-background",
            "text": "表格页脚背景"
        },
        "$:/language/Docs/PaletteColours/table-header-background": {
            "title": "$:/language/Docs/PaletteColours/table-header-background",
            "text": "表格标题背景"
        },
        "$:/language/Docs/PaletteColours/tag-background": {
            "title": "$:/language/Docs/PaletteColours/tag-background",
            "text": "标签背景"
        },
        "$:/language/Docs/PaletteColours/tag-foreground": {
            "title": "$:/language/Docs/PaletteColours/tag-foreground",
            "text": "标签前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-background",
            "text": "条目背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-border",
            "text": "条目边框"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-hover",
            "text": "悬停的条目控制项前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground-selected",
            "text": "选定的条目控制项前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-controls-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-controls-foreground",
            "text": "条目控制项前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-background",
            "text": "条目编辑器背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border-image": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border-image",
            "text": "条目编辑器边框图片"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-border",
            "text": "条目编辑器边框"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-even": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-even",
            "text": "条目编辑器中偶数栏位背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd": {
            "title": "$:/language/Docs/PaletteColours/tiddler-editor-fields-odd",
            "text": "条目编辑器中奇数栏位背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-background",
            "text": "条目信息面板背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-border": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-border",
            "text": "条目信息面板边框"
        },
        "$:/language/Docs/PaletteColours/tiddler-info-tab-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-info-tab-background",
            "text": "条目信息面板页签背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-background": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-background",
            "text": "条目链结背景"
        },
        "$:/language/Docs/PaletteColours/tiddler-link-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-link-foreground",
            "text": "条目链结前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-subtitle-foreground",
            "text": "条目副标题前景"
        },
        "$:/language/Docs/PaletteColours/tiddler-title-foreground": {
            "title": "$:/language/Docs/PaletteColours/tiddler-title-foreground",
            "text": "条目标题前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-new-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-new-button",
            "text": "工具栏 '添加条目' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-options-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-options-button",
            "text": "工具栏 '选项' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-save-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-save-button",
            "text": "工具栏 '保存' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-info-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-info-button",
            "text": "工具栏 '资讯' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-edit-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-edit-button",
            "text": "工具栏 '编辑' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-close-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-close-button",
            "text": "工具栏 '关闭' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-delete-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-delete-button",
            "text": "工具栏 '删除' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-cancel-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-cancel-button",
            "text": "工具栏 '取消' 按钮前景"
        },
        "$:/language/Docs/PaletteColours/toolbar-done-button": {
            "title": "$:/language/Docs/PaletteColours/toolbar-done-button",
            "text": "工具栏 '完成  按钮前景"
        },
        "$:/language/Docs/PaletteColours/untagged-background": {
            "title": "$:/language/Docs/PaletteColours/untagged-background",
            "text": "未设标签的背景"
        },
        "$:/language/Docs/PaletteColours/very-muted-foreground": {
            "title": "$:/language/Docs/PaletteColours/very-muted-foreground",
            "text": "非常低调前景"
        },
        "$:/language/EditTemplate/Body/External/Hint": {
            "title": "$:/language/EditTemplate/Body/External/Hint",
            "text": "此条目显示保存于主要的 TiddlyWiki 文件之外的内容。你可以编辑其标签和字段,但不能直接编辑内容本身"
        },
        "$:/language/EditTemplate/Body/Placeholder": {
            "title": "$:/language/EditTemplate/Body/Placeholder",
            "text": "输入此条目的内容"
        },
        "$:/language/EditTemplate/Body/Preview/Type/Output": {
            "title": "$:/language/EditTemplate/Body/Preview/Type/Output",
            "text": "输出"
        },
        "$:/language/EditTemplate/Field/Remove/Caption": {
            "title": "$:/language/EditTemplate/Field/Remove/Caption",
            "text": "删除字段"
        },
        "$:/language/EditTemplate/Field/Remove/Hint": {
            "title": "$:/language/EditTemplate/Field/Remove/Hint",
            "text": "删除字段"
        },
        "$:/language/EditTemplate/Field/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Field/Dropdown/Caption",
            "text": "字段列表"
        },
        "$:/language/EditTemplate/Field/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Field/Dropdown/Hint",
            "text": "显示字段列表"
        },
        "$:/language/EditTemplate/Fields/Add/Button": {
            "title": "$:/language/EditTemplate/Fields/Add/Button",
            "text": "添加"
        },
        "$:/language/EditTemplate/Fields/Add/Button/Hint": {
            "title": "$:/language/EditTemplate/Fields/Add/Button/Hint",
            "text": "添加字段至条目"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/System": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/System",
            "text": "系统字段"
        },
        "$:/language/EditTemplate/Fields/Add/Dropdown/User": {
            "title": "$:/language/EditTemplate/Fields/Add/Dropdown/User",
            "text": "使用者字段"
        },
        "$:/language/EditTemplate/Fields/Add/Name/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Name/Placeholder",
            "text": "字段名称"
        },
        "$:/language/EditTemplate/Fields/Add/Prompt": {
            "title": "$:/language/EditTemplate/Fields/Add/Prompt",
            "text": "添加字段:"
        },
        "$:/language/EditTemplate/Fields/Add/Value/Placeholder": {
            "title": "$:/language/EditTemplate/Fields/Add/Value/Placeholder",
            "text": "字段内容"
        },
        "$:/language/EditTemplate/Shadow/Warning": {
            "title": "$:/language/EditTemplate/Shadow/Warning",
            "text": "这是一个默认条目。您做的任何更改将会覆盖来自 <<pluginLink>> 插件的默认版本。"
        },
        "$:/language/EditTemplate/Shadow/OverriddenWarning": {
            "title": "$:/language/EditTemplate/Shadow/OverriddenWarning",
            "text": "这是一个修改过的默认条目。删除此条目可以还原为 <<pluginLink>> 插件中的默认版本。"
        },
        "$:/language/EditTemplate/Tags/Add/Button": {
            "title": "$:/language/EditTemplate/Tags/Add/Button",
            "text": "添加"
        },
        "$:/language/EditTemplate/Tags/Add/Button/Hint": {
            "title": "$:/language/EditTemplate/Tags/Add/Button/Hint",
            "text": "添加标签"
        },
        "$:/language/EditTemplate/Tags/Add/Placeholder": {
            "title": "$:/language/EditTemplate/Tags/Add/Placeholder",
            "text": "标签名称"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Caption",
            "text": "标签清单"
        },
        "$:/language/EditTemplate/Tags/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Tags/Dropdown/Hint",
            "text": "显示标签清单"
        },
        "$:/language/EditTemplate/Title/BadCharacterWarning": {
            "title": "$:/language/EditTemplate/Title/BadCharacterWarning",
            "text": "请注意,避免在条目名称中使用这些字符:<<bad-chars>>"
        },
        "$:/language/EditTemplate/Title/Exists/Prompt": {
            "title": "$:/language/EditTemplate/Title/Exists/Prompt",
            "text": "目标条目已经存在"
        },
        "$:/language/EditTemplate/Title/Relink/Prompt": {
            "title": "$:/language/EditTemplate/Title/Relink/Prompt",
            "text": "将在其他条目的 //tags// 和 //list// 字段中的 ''<$text text=<<fromTitle>>/>'' 改为 ''<$text text=<<toTitle>>/>''"
        },
        "$:/language/EditTemplate/Title/References/Prompt": {
            "title": "$:/language/EditTemplate/Title/References/Prompt",
            "text": "下列对此条目的引用,不会自动更新:"
        },
        "$:/language/EditTemplate/Type/Dropdown/Caption": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Caption",
            "text": "内容类型清单"
        },
        "$:/language/EditTemplate/Type/Dropdown/Hint": {
            "title": "$:/language/EditTemplate/Type/Dropdown/Hint",
            "text": "显示内容类型清单"
        },
        "$:/language/EditTemplate/Type/Delete/Caption": {
            "title": "$:/language/EditTemplate/Type/Delete/Caption",
            "text": "删除内容类型"
        },
        "$:/language/EditTemplate/Type/Delete/Hint": {
            "title": "$:/language/EditTemplate/Type/Delete/Hint",
            "text": "删除内容类型"
        },
        "$:/language/EditTemplate/Type/Placeholder": {
            "title": "$:/language/EditTemplate/Type/Placeholder",
            "text": "内容类型"
        },
        "$:/language/EditTemplate/Type/Prompt": {
            "title": "$:/language/EditTemplate/Type/Prompt",
            "text": "类型:"
        },
        "$:/language/Exporters/StaticRiver": {
            "title": "$:/language/Exporters/StaticRiver",
            "text": "静态 HTML"
        },
        "$:/language/Exporters/JsonFile": {
            "title": "$:/language/Exporters/JsonFile",
            "text": "JSON 文件"
        },
        "$:/language/Exporters/CsvFile": {
            "title": "$:/language/Exporters/CsvFile",
            "text": "CSV 文件"
        },
        "$:/language/Exporters/TidFile": {
            "title": "$:/language/Exporters/TidFile",
            "text": "\".tid\" 文件"
        },
        "$:/language/Docs/Fields/_canonical_uri": {
            "title": "$:/language/Docs/Fields/_canonical_uri",
            "text": "外部图像条目的完整的 URI"
        },
        "$:/language/Docs/Fields/bag": {
            "title": "$:/language/Docs/Fields/bag",
            "text": "条目的来源集的名称"
        },
        "$:/language/Docs/Fields/caption": {
            "title": "$:/language/Docs/Fields/caption",
            "text": "显示于页签或按钮上的标题文字"
        },
        "$:/language/Docs/Fields/color": {
            "title": "$:/language/Docs/Fields/color",
            "text": "条目的 CSS 颜色值"
        },
        "$:/language/Docs/Fields/component": {
            "title": "$:/language/Docs/Fields/component",
            "text": "负责[[警示条目|AlertMechanism]]的组件名称"
        },
        "$:/language/Docs/Fields/created": {
            "title": "$:/language/Docs/Fields/created",
            "text": "条目的创建日期"
        },
        "$:/language/Docs/Fields/creator": {
            "title": "$:/language/Docs/Fields/creator",
            "text": "条目的创建者"
        },
        "$:/language/Docs/Fields/current-tiddler": {
            "title": "$:/language/Docs/Fields/current-tiddler",
            "text": "用于缓存[[浏览历史列表|HistoryMechanism]]的最上层条目"
        },
        "$:/language/Docs/Fields/dependents": {
            "title": "$:/language/Docs/Fields/dependents",
            "text": "插件的相依插件列表"
        },
        "$:/language/Docs/Fields/description": {
            "title": "$:/language/Docs/Fields/description",
            "text": "插件的说明、描述"
        },
        "$:/language/Docs/Fields/draft.of": {
            "title": "$:/language/Docs/Fields/draft.of",
            "text": "草稿条目,包含条目的标题、标签、栏位 ..."
        },
        "$:/language/Docs/Fields/draft.title": {
            "title": "$:/language/Docs/Fields/draft.title",
            "text": "草稿条目的标题"
        },
        "$:/language/Docs/Fields/footer": {
            "title": "$:/language/Docs/Fields/footer",
            "text": "wizard 的注脚"
        },
        "$:/language/Docs/Fields/icon": {
            "title": "$:/language/Docs/Fields/icon",
            "text": "条目的标题含有与条目关联的图标"
        },
        "$:/language/Docs/Fields/library": {
            "title": "$:/language/Docs/Fields/library",
            "text": "若设为 \"yes\",表示条目应该被保存为一个 JavaScript 程序库"
        },
        "$:/language/Docs/Fields/list": {
            "title": "$:/language/Docs/Fields/list",
            "text": "条目的列表,指定一些条目的标题清单"
        },
        "$:/language/Docs/Fields/list-before": {
            "title": "$:/language/Docs/Fields/list-before",
            "text": "前条目名称将被添加到条目排序清单中的设置条目名称之前,或若此栏位存在但是空的,则被添加于清单的前端"
        },
        "$:/language/Docs/Fields/list-after": {
            "title": "$:/language/Docs/Fields/list-after",
            "text": "当前条目名称将被添加到条目排序清单的设置条目名称之后,或若此栏位存在但是空的,则被添加于清单的尾端"
        },
        "$:/language/Docs/Fields/modified": {
            "title": "$:/language/Docs/Fields/modified",
            "text": "条目的最近修改日期与时间"
        },
        "$:/language/Docs/Fields/modifier": {
            "title": "$:/language/Docs/Fields/modifier",
            "text": "条目的最近修改者"
        },
        "$:/language/Docs/Fields/name": {
            "title": "$:/language/Docs/Fields/name",
            "text": "具可读性的插件条目的名称"
        },
        "$:/language/Docs/Fields/plugin-priority": {
            "title": "$:/language/Docs/Fields/plugin-priority",
            "text": "插件条目的优先级数值"
        },
        "$:/language/Docs/Fields/plugin-type": {
            "title": "$:/language/Docs/Fields/plugin-type",
            "text": "插件条目的类型"
        },
        "$:/language/Docs/Fields/released": {
            "title": "$:/language/Docs/Fields/released",
            "text": "TiddlyWiki 的发布日期"
        },
        "$:/language/Docs/Fields/revision": {
            "title": "$:/language/Docs/Fields/revision",
            "text": "条目存放于服务器中的修订版本"
        },
        "$:/language/Docs/Fields/source": {
            "title": "$:/language/Docs/Fields/source",
            "text": "条目的网址"
        },
        "$:/language/Docs/Fields/subtitle": {
            "title": "$:/language/Docs/Fields/subtitle",
            "text": "一个 wizard 的副标题"
        },
        "$:/language/Docs/Fields/tags": {
            "title": "$:/language/Docs/Fields/tags",
            "text": "条目的标签清单"
        },
        "$:/language/Docs/Fields/text": {
            "title": "$:/language/Docs/Fields/text",
            "text": "条目的内文"
        },
        "$:/language/Docs/Fields/throttle.refresh": {
            "title": "$:/language/Docs/Fields/throttle.refresh",
            "text": "如果存在,则限制此条目的刷新"
        },
        "$:/language/Docs/Fields/title": {
            "title": "$:/language/Docs/Fields/title",
            "text": "条目的唯一名称"
        },
        "$:/language/Docs/Fields/toc-link": {
            "title": "$:/language/Docs/Fields/toc-link",
            "text": "若设为: \"no\",则抑制目录树中的条目链接。"
        },
        "$:/language/Docs/Fields/type": {
            "title": "$:/language/Docs/Fields/type",
            "text": "条目的内容类型"
        },
        "$:/language/Docs/Fields/version": {
            "title": "$:/language/Docs/Fields/version",
            "text": "插件的版本信息"
        },
        "$:/language/Docs/Fields/_is_skinny": {
            "title": "$:/language/Docs/Fields/_is_skinny",
            "text": "如果存在,则表示必须从服务器加载条目的文本字段"
        },
        "$:/language/Filters/AllTiddlers": {
            "title": "$:/language/Filters/AllTiddlers",
            "text": "所有条目,不含系统条目"
        },
        "$:/language/Filters/RecentSystemTiddlers": {
            "title": "$:/language/Filters/RecentSystemTiddlers",
            "text": "最近修改的条目,包含系统条目"
        },
        "$:/language/Filters/RecentTiddlers": {
            "title": "$:/language/Filters/RecentTiddlers",
            "text": "最近修改的条目"
        },
        "$:/language/Filters/AllTags": {
            "title": "$:/language/Filters/AllTags",
            "text": "所有标签,不含系统标签"
        },
        "$:/language/Filters/Missing": {
            "title": "$:/language/Filters/Missing",
            "text": "缺失条目"
        },
        "$:/language/Filters/Drafts": {
            "title": "$:/language/Filters/Drafts",
            "text": "草稿条目"
        },
        "$:/language/Filters/Orphans": {
            "title": "$:/language/Filters/Orphans",
            "text": "孤立条目"
        },
        "$:/language/Filters/SystemTiddlers": {
            "title": "$:/language/Filters/SystemTiddlers",
            "text": "系统条目"
        },
        "$:/language/Filters/ShadowTiddlers": {
            "title": "$:/language/Filters/ShadowTiddlers",
            "text": "默认条目"
        },
        "$:/language/Filters/OverriddenShadowTiddlers": {
            "title": "$:/language/Filters/OverriddenShadowTiddlers",
            "text": "被覆写的默认条目"
        },
        "$:/language/Filters/SessionTiddlers": {
            "title": "$:/language/Filters/SessionTiddlers",
            "text": "自维基加载后修改的条目"
        },
        "$:/language/Filters/SystemTags": {
            "title": "$:/language/Filters/SystemTags",
            "text": "系统标签"
        },
        "$:/language/Filters/StoryList": {
            "title": "$:/language/Filters/StoryList",
            "text": "故事河中的条目,不含 ~$:/AdvancedSearch"
        },
        "$:/language/Filters/TypedTiddlers": {
            "title": "$:/language/Filters/TypedTiddlers",
            "text": "非维基文字条目"
        },
        "GettingStarted": {
            "title": "GettingStarted",
            "text": "\\define lingo-base() $:/language/ControlPanel/Basics/\n欢迎使用 ~TiddlyWiki 及参与 ~TiddlyWiki 社群\n\n开始将重要资讯存放于 ~TiddlyWiki 之前,确认您可以可靠地保存变更是很重要的。详细资讯请参阅 https://tiddlywiki.com/#GettingStarted\n\n!! 设置此 ~TiddlyWiki\n\n<div class=\"tc-control-panel\">\n\n|<$link to=\"$:/SiteTitle\"><<lingo Title/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteTitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/SiteSubtitle\"><<lingo Subtitle/Prompt>></$link> |<$edit-text tiddler=\"$:/SiteSubtitle\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/DefaultTiddlers\"><<lingo DefaultTiddlers/Prompt>></$link> |<<lingo DefaultTiddlers/TopHint>><br> <$edit tag=\"textarea\" tiddler=\"$:/DefaultTiddlers\"/><br>//<<lingo DefaultTiddlers/BottomHint>>// |\n</div>\n\n请参阅[[控制台|$:/ControlPanel]]查看更多选项。"
        },
        "$:/language/Help/build": {
            "title": "$:/language/Help/build",
            "description": "自动执行已配置的命令",
            "text": "生成指定的生成目标为当前 wiki。若未指定任何生成目标,则生成所有可用的目标。\n\n```\n--build <target> [<target> ...]\n```\n\n生成目标在 wiki 文件夹的 `tiddlywiki.info` 文件中定义。\n"
        },
        "$:/language/Help/clearpassword": {
            "title": "$:/language/Help/clearpassword",
            "description": "清除用于后续加密的密码",
            "text": "清除用于后续加密的密码\n\n```\n--clearpassword\n```\n"
        },
        "$:/language/Help/default": {
            "title": "$:/language/Help/default",
            "text": "\\define commandTitle()\n$:/language/Help/$(command)$\n\\end\n```\n用法: tiddlywiki [<wikifolder>] [--<command> [<args>...]...]\n```\n\n可用的命令:\n\n<ul>\n<$list filter=\"[commands[]sort[title]]\" variable=\"command\">\n<li><$link to=<<commandTitle>>><$macrocall $name=\"command\" $type=\"text/plain\" $output=\"text/plain\"/></$link>: <$transclude tiddler=<<commandTitle>> field=\"description\"/></li>\n</$list>\n</ul>\n\n取得关于某个命令的详细帮助:\n\n```\ntiddlywiki --help <command>\n```\n"
        },
        "$:/language/Help/deletetiddlers": {
            "title": "$:/language/Help/deletetiddlers",
            "description": "删除一组条目",
            "text": "<<.from-version \"5.1.20\">> 删除由筛选器标识的一组条目。\n\n```\n--deletetiddlers <filter>\n```\n"
        },
        "$:/language/Help/editions": {
            "title": "$:/language/Help/editions",
            "description": "列出可用的 TiddlyWiki 版本",
            "text": "列出可用版本的名称和描述。您可以用 `--init` 命令创建一个指定版本的新维基。\n\n```\n--editions\n```\n"
        },
        "$:/language/Help/fetch": {
            "title": "$:/language/Help/fetch",
            "description": "通过网址从维基撷取条目",
            "text": "通过 HTTP/HTTPS 撷取一个或多个文件,并导入匹配筛选器的条目,可选的转换传入的名称。\n\n```\n--fetch file <url> <import-filter> <transform-filter>\n--fetch files <url-filter> <import-filter> <transform-filter>\n--fetch raw-file <url> <transform-filter>\n--fetch raw-files <url-filter> <transform-filter>\n```\n\n \"file\" 和 \"files\" 选项撷取指定的文件,并尝试导入其中的条目(与将文件拖动到浏览器视窗中的处理相同)。 \"raw-file\" 和 \"raw-files\" 变选项撷取指定的文件,并将原始文件资料存储于条目,而不套用导入逻辑。\n\n使用 \"file\" and \"raw-file\" 选项为仅撷取单个文件,且第一个参数为要读取文件的网址。\n\n使用 \"files\" 和 \"raw-files\" 选项为撷取多个文件,且第一个参数是一个产生要读取文件的网址清单的筛选器。例如,给定标签为 \"remote-server\" 的一组具有字段 \"url\" 的条目,筛选器 `[tag[remote-server]get[url]]` 将取回所有可用的网址。\n\n对于 \"file\" 和 \"files\" 选项,the `<import-filter>` 参数指定一个筛选器,用于确定要导入哪些条目。如果未提供,则默认为 `[all[tiddlers]]`。\n\n对于所有选项,`<transform-filter>` 参数指定一个可选的筛选器,用于转换导入条目的名称。例如,`[addprefix[$:/myimports/]]` 会将前缀  `$:/myimports/` 加至每个名称。\n\n于 `--fetch` 之前使用 `--verbose` 命令,将在导入期间输出进度信息。\n\n请注意,TiddlyWiki 不会撷取一个已经加载插件的旧版本。\n\n以下示例从 https://tiddlywiki.com 取回所有非系统条目,并将其保存到一个 JSON 文件:\n\n```\ntiddlywiki --verbose --fetch file \"https://tiddlywiki.com/\" \"[!is[system]]\" \"\" --rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[!is[system]]\"\n```\n\n以下范例从 https://tiddlywiki.com 取回 \"favicon\" 文件,并将其保存在名为 \"output.ico\" 的文件中。请注意,在 \"--fetch\" 命令中引用的中间条目 \"Icon Tiddler\",因为它被用作转换筛选器来替换预设的名称,而 \"--savetiddler\" 命令没有引号,因为它是直接用作标题。\n\n```\ntiddlywiki --verbose --fetch raw-file \"https://tiddlywiki.com/favicon.ico\" \"[[Icon Tiddler]]\" --savetiddler \"Icon Tiddler\" output.ico\n```\n"
        },
        "$:/language/Help/help": {
            "title": "$:/language/Help/help",
            "description": "显示 TiddlyWiki 命令的说明",
            "text": "显示命令的帮助文本:\n\n```\n--help [<command>]\n```\n\n若省略命令名称,则显示可用命令的清单。\n"
        },
        "$:/language/Help/import": {
            "title": "$:/language/Help/import",
            "description": "从文件导入条目",
            "text": "从 TiddlyWiki 文件 (`.html`)、`.tiddler`、`.tid`、`.json` 或其他本机文件导入条目。必须明确指定解串器,而不像 load 命令,从文件扩展名推断解串器。\n\n```\n--import <filepath> <deserializer> [<title>] [<encoding>]\n```\n\n核心的解串器包括:\n\n* application/javascript\n* application/json\n* application/x-tiddler\n* application/x-tiddler-html-div\n* application/x-tiddlers\n* text/html\n* text/plain\n\n导入的条目名称,默认为文件名。\n\n编码默认为 \"utf8\",但用于导入二进制文件可以是 \"base64\"。\n\n请注意,TiddlyWiki 不会导入旧版本的已加载插件。\n"
        },
        "$:/language/Help/init": {
            "title": "$:/language/Help/init",
            "description": "初始化一个新的 wiki 文件夹",
            "text": "初始化一个空的 [[WikiFolder|WikiFolders]] 的指定版本的副本。\n\n```\n--init <edition> [<edition> ...]\n```\n\n例如:\n\n```\ntiddlywiki ./MyWikiFolder --init empty\n```\n\n注意:\n\n* 若有需要,将创建 wiki 文件夹目录\n* 其中 \"edition\" 默认为 ''empty''\n* 若 wiki 文件夹不是空的,则初始化命令将失败\n* 初始化命令会删除 'tiddlywiki.info' 文件内所有 'includeWikis' 的定义。\n* 当指定多个版本时,这些版本于初始化后,将覆写早期版本共用的所有文件 (故此最终的 `tiddlywiki.info` 文件将是从最近的版本复制而得)\n* `--editions` 传回所有可用版本的清单。\n"
        },
        "$:/language/Help/listen": {
            "title": "$:/language/Help/listen",
            "description": "为 TiddlyWiki 提供一个 HTTP 服务器接口",
            "text": "通过 HTTP 提供一个维基服务。\n\nlisten 命令使用[[命名的命令参数|NamedCommandParameters]]:\n\n```\n--listen [<name>=<value>]...\n```\n\n所有参数都是可选的, 具有安全的默认值, 可以按任意顺序指定。认可的参数有:\n\n* ''host'' - 可选的主机名称, (默认为 \"127.0.0.1\" 或名为 \"localhost\")\n* ''path-prefix'' - 可选的路径前缀\n* ''port'' - 侦听的埠号;非数值会被解译为一个系统环境变数,从其中提取埠号 (默认为 \"8080\")\n* ''credentials'' - 凭证 CSV 文件的路径名(相对于维基文件夹)\n* ''anon-username'' - 匿名用户的编辑署名\n* ''username'' - 可选的基本验证用户名称\n* ''password'' - 可选的基本验证密码\n* ''authenticated-user-header'' - 可选的标头名称,用于受信任身份验证\n* ''readers'' - 允许读取此维基的主体,以逗号分隔的清单\n* ''writers'' - 允许写入此维基的主体,以逗号分隔的清单\n* ''csrf-disable'' - 设置为 \"yes\" 以禁用 CSRF 检查 (默认为 \"no\")\n* ''root-tiddler'' - 服务的基本条目 (默认为 \"$:/core/save/all\")\n* ''root-render-type'' - 呈现的基本条目的内容类型 (默认为 \"text/plain\")\n* ''root-serve-type'' - 服务的基本条目的内容类型 (默认为 \"text/html\")\n* ''tls-cert'' - TLS 证书文件的路径名(相对于维基文件夹)\n* ''tls-key'' - TLS 密钥文件的路径名(相对于维基文件夹)\n* ''debug-level'' - 可选的调试级别;设置为 \"debug\" 来查看请求的详细信息;(默认为 \"none\")\n* ''gzip'' - 设为 \"yes\" 以启用某些 http 端点的 gzip 压缩 (默认为 \"no\")\n\n有关向整个本地网络开启实例的信息,以及可能的安全问题,请参阅 TiddlyWiki.com 的 WebServer 条目。\n"
        },
        "$:/language/Help/load": {
            "title": "$:/language/Help/load",
            "description": "从文件中加载条目",
            "text": "从 TiddlyWiki (`.html`), `.tiddler`, `.tid`, `.json` 或其他本机文件加载条目。应用的处理程序取决于导入文件的扩展名。如果您需要明确指定解串器和编码,请改用 `import` 命令。\n\n```\n--load <filepath> [noerror]\n--load <dirpath> [noerror]\n```\n\n默认情况下, 如果未找到条目,load 命令会引发错误。通过提供可选的 \"noerror\" 参数可以抑制该错误。\n\n从已加密的 TiddlyWiki 文件中加载条目,须使用 PasswordCommand 指定密码,例如:\n\n```\ntiddlywiki ./MyWiki --password pa55w0rd --load my_encrypted_wiki.html\n```\n\n请注意 TiddlyWiki 将不加载旧版本的已挂载的插件。\n"
        },
        "$:/language/Help/makelibrary": {
            "title": "$:/language/Help/makelibrary",
            "description": "构建升级处理所需的程式库插件",
            "text": "为升级处理构建 `$:/UpgradeLibrary` 条目。\n\n升级程式库被格式化为一个插件类型为 `library` 的一般插件条目。它包含 TiddlyWiki5 存储库中所有可用的插件、布景主题和语言包的副本。\n\n此命令仅供内部使用;它只是与使用者构建一个自订的升级程序相关。\n\n```\n--makelibrary <title>\n```\n\n标题参数默认为 `$:/UpgradeLibrary`。\n"
        },
        "$:/language/Help/notfound": {
            "title": "$:/language/Help/notfound",
            "text": "无此帮助项目"
        },
        "$:/language/Help/output": {
            "title": "$:/language/Help/output",
            "description": "设置后续命令的基准输出文件夹",
            "text": "设置后续命令的基准输出文件夹,默认为该版本文件夹的 `output` 子文件夹。\n\n```\n--output <pathname>\n```\n\n若指定的路径是相对路径,则它是被解析相对于当前的工作文件夹。例如:`--output .` 將輸出文件夹設置為當前工作文件夹。"
        },
        "$:/language/Help/password": {
            "title": "$:/language/Help/password",
            "description": "设置用以加密的密码",
            "text": "设置用以加密的密码\n\n```\n--password <password>\n```\n\n''请注意'':这不是用于提供 TiddlyWiki 具有密码保护功能。相反地,请看 [[ServerCommand]] 的密码选项说明。\n"
        },
        "$:/language/Help/render": {
            "title": "$:/language/Help/render",
            "description": "呈现个别条目到文件",
            "text": "呈现由筛选器标识的个别条目,并将结果保存到指定的文件。\n\n可选择性地指定范本条目名称。在此情况下,不是直接呈现每个条目,而是使用设为正在呈现的条目名称的 \"currentTiddler\" 变量,来呈现范本条目。\n\n也可以选择性地指定附加变量的名称和值。\n\n```\n--render <tiddler-filter> [<filename-filter>] [<render-type>] [<template>] [<name>] [<value>]\n```\n\n* ''tiddler-filter'': 标识要呈现的条目的筛选器\n* ''filename-filter'': 可选的筛选器,转换条目名称至路径名。如果省略,默认为 `[is[tiddler]addsuffix[.html]]`,其使用未改变的条目名称为文件名\n* ''template'': 可选的范本,用于呈现每个条目\n* ''render-type'': 可选的呈现类型:`text/html` (默认值) 会传回完整的 HTML 文本,而 `text/plain` 只会传回文本内容 (即其忽略 HTML 标记与其他不可印出的数据)\n* ''name'': 可选的变量名称\n* ''value'': 可选的变量值\n\n默认情况下,文件名被解析为相对于发行版文件夹的 `output` 子文件夹。`--output` 命令可用于将输出指到一个不同的文件夹。\n\n附注:\n\n* 输出目录不清除任何现有的文件\n* 文件名的路径中,任何不存在的文件夹,将自动创建。\n* 当正呈现的条目名称中带有空格,请注意同时使用命令行接口所要求的引号,与 TiddlyWiki 的双重方括号;`--render \"[[Motovun Jack.jpg]]\"`\n* 所选的项目被设置为当前正在呈现的条目名称,以此评估文件名筛选器,允条目名称用作基础计算的文件名。例如,`[encodeuricomponent[]addprefix[static/]]` 为每个条目名称套用 URI 编码,然后增加首码 `static/`\n* `--render` 命令是已弃用的 `--rendertiddler` 和 `--rendertiddlers` 的一个更灵活的替代命令。\n\n例子:\n\n* `--render \"[!is[system]]\" \"[encodeuricomponent[]addprefix[tiddlers/]addsuffix[.html]]\"` -- 呈现所有非系统条目为 \"tiddlers\" 子文件夹中的文件,文件名为 URL 编码的条目名称和扩展名 HTML\n"
        },
        "$:/language/Help/rendertiddler": {
            "title": "$:/language/Help/rendertiddler",
            "description": "呈现个别条目为指定的内容类型",
            "text": "(请注意:`--rendertiddler` 命令已被弃用,而支持新的、更灵活的 `--render` 命令)\n\n呈现个别条目为指定的[[内容类型|ContentType]],默认为 `text/html` 且保存为指定的文件名。\n\n还可以指定一个模板,在这种情况下,\"currentTiddler\" 变量设为正在呈现的条目 (第一个参数值) 与模板条目合并呈现。\n\n也能可选地指定附加变量的名称与其值。\n\n```\n--rendertiddler <title> <filename> [<type>] [<template>]\n```\n\n默认情况下,文件名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件夹。\n\n自动创建在文件名称的路径中任何缺少的文件夹。\n\n例如,以下命令通过使用核心模板 `$:/core/templates/exporters/JsonFile`,将所有匹配筛选器 `[tag[done]]` 的条目保存到名为 `output.json` 的 JSON 文件。\n\n```\n--rendertiddler \"$:/core/templates/exporters/JsonFile\" output.json text/plain \"\" exportFilter \"[tag[done]]\"\n```"
        },
        "$:/language/Help/rendertiddlers": {
            "title": "$:/language/Help/rendertiddlers",
            "description": "呈现符合筛选条件的条目为指定的内容类型",
            "text": "(请注意:`--rendertiddlers` 命令已被弃用,而支持新的、更灵活的 `--render` 命令)\n\n呈现符合筛选条的条目为指定的[[内容类型|ContentType]] (默认为 `text/html`) 与扩展名 (默认为 `.html`).\n\n```\n--rendertiddlers <filter> <template> <pathname> [<type>] [<extension>] [\"noclean\"]\n```\n\n例如:\n\n```\n--rendertiddlers [!is[system]] $:/core/templates/static.tiddler.html ./static text/plain\n```\n\n默认情况下,路径名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件。\n\n在目标文件夹中的任何文件都会被删除,除非指定 ''noclean'' 旗标。若缺少目标文件夹,则以递归方式创建。"
        },
        "$:/language/Help/save": {
            "title": "$:/language/Help/save",
            "description": "将个别原始条目保存到文件",
            "text": "将筛选器标识的个别条目,以原始文本或二进位格式,保存到指定的文件。\n\n```\n--save <tiddler-filter> <filename-filter>\n```\n\n* ''tiddler-filter'': 标识要保存的条目的筛选器\n* ''filename-filter'': 可选的筛选器,转换条目名称至路径名。如果省略,默认为 `[is[tiddler]]`,其使用未改变的条目名称为文件名\n\n附注:\n\n* 输出文件夹不清除任何现有的文件\n* 文件名的路径中,任何不存在的文件夹,将自动创建。\n* 当正保存的条目的名称中带有空格,请注意同时使用命令行接口所要求的引号,与 TiddlyWiki 的双重方括号;`--save  \"[[Motovun Jack.jpg]]\"`\n* 所选的项目被设置为当前正在保存的条目名称,以此评估文件名筛选器,允条目名称用作基础计算的文件名。例如,`[encodeuricomponent[]addprefix[static/]]` 为每个条目名称套用 URI 编码,然后增加首码 `static/`\n* `--save` 命令是已被弃用的 `--savetiddler` 和 `--savetiddlers` 的一个更灵活的替代命令。\n\n例子:\n\n* `--save \"[!is[system]is[image]]\" \"[encodeuricomponent[]addprefix[tiddlers/]]\"` -- 保存所有非系统的图像条目为 \"tiddlers\" 子文件夹中的文件,文件名为 URL 编码的条目名称"
        },
        "$:/language/Help/savetiddler": {
            "title": "$:/language/Help/savetiddler",
            "description": "将条目的原始内容保存到一个文件",
            "text": "(请注意:`--savetiddler` 命令已被弃用,而支持新的、更灵活的 `--save` 命令)\n\n保存个别条目的原始文本或二进制格式到指定的文件名。\n\n```\n--savetiddler <title> <filename>\n```\n\n默认情况下,文件名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件。\n\n自动创建在文件名称的路径中任何缺少的文件夹。\n"
        },
        "$:/language/Help/savetiddlers": {
            "title": "$:/language/Help/savetiddlers",
            "description": "将一群条目的原始内容保存到一个文件夹",
            "text": "(请注意:`--savetiddlers` 命令已被弃用,而支持新的、更灵活的 `--save` 命令)\n\n保存一群条目的原始文字或二进制格式到指定的文件夹。\n\n```\n--savetiddlers <filter> <pathname> [noclean]\n```\n\n默认情况下,路径名被解析为相对于版本文件夹的 `output` 子文件夹。 `--output` 命令可以用于将输出指定到一个不同的文件夹。\n\n保存指定的文件之前,会先清除输出目录的现有文件。可藉由指定 ''noclean'' 旗标,禁用该删除动作。\n\n自动创建在路径中任何缺少的文件夹。\n"
        },
        "$:/language/Help/savewikifolder": {
            "title": "$:/language/Help/savewikifolder",
            "description": "将维基保存到一个新的维基文件夹",
            "text": "<<.from-version \"5.1.20\">> 将当前维基保存为一个维基文件夹,包含条目、插件和配置:\n\n```\n--savewikifolder <wikifolderpath> [<filter>]\n```\n\n* 目标维基文件夹必须为空或不存在\n* 筛选器指定应包括哪些条目。其为可选,默认为 `[all[tiddlers]]`\n* 官方插件库中的插件,将替换为 `tiddlywiki.info` 文件中引用到的插件\n* 自订插件将解压缩到自己的文件夹中\n\n常见的用法是将一个 TiddlyWiki HTML 文件转换成维基文件夹:\n\n```\ntiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder\n```\n"
        },
        "$:/language/Help/server": {
            "title": "$:/language/Help/server",
            "description": "提供一个 HTTP 服务器介面到 TiddlyWiki (已弃用,支持新的 listen 命令)",
            "text": "在服务器中内置 TiddlyWiki5 是非常简单。虽与 TiddlyWeb 兼容,但不支持许多健全互联网面向的使用方式所需的功能。\n\n提供呈现一个指定条目,也可将个别条目编码成 JSON,且支持基本的 HTTP 操作 `GET`、`PUT` 及 `DELETE`.\n\n```\n--server <port> <root-tiddler> <root-render-type> <root-serve-type> <username> <password> <host> <path-prefix> <debug-level>\n```\n\n参数说明:\n\n* ''port'' - 要侦听的埠号;非数值会被解译为一个系统环境变数,从其中提取埠号 (默认为 \"8080\")\n* ''root-tiddler'' - 服务的基本条目 (默认为 \"$:/core/save/all\")\n* ''root-render-type'' - 呈现的基本条目的内容类型 (默认为 \"text/plain\")\n* ''root-serve-type'' - 服务的基本条目的内容类型 (默认为 \"text/html\")\n* ''username'' - 默认的编辑者署名\n* ''password'' - 可选的基本验证密码\n* ''host'' - 可选的主机名称, (默认为 \"127.0.0.1\" 或名为 \"localhost\")\n* ''path-prefix'' - 可选的路径前缀\n* ''debug-level'' - 可选的调试级别;设置为 \"debug\" 来查看请求的详细信息;(默认为 \"none\")\n\n若指定密码参数,浏览器将提示使用者输入用户名与密码。注意,密码系以明码方式传递,应只在受信任的网络或 HTTPS 上使用。\n\n例如:\n\n```\n--server 8080 $:/core/save/all text/plain text/html MyUserName passw0rd\n```\n\n若您需要设置主机名称或路径前缀,而不要求输入密码,则可以指定空字符串的使用者名和密码。\n\n```\n--server 8080 $:/core/save/all text/plain text/html \"\" \"\" 192.168.0.245\n```\n\n使用这样的位址,会将您的系统暴露给本地网络。有关向整个本地网络开启实例的信息,以及可能的安全问题,请参阅 TiddlyWiki.com 的 WebServer 条目。\n\n同时执行多个 TiddlyWiki 服务,须分别指定不同的埠号。使用环境变数,有助于将埠号传递给 Node.js 进程。本示例引用一个名为 \"MY_PORT_NUMBER\" 的环境变数:\n\n```\n--server MY_PORT_NUMBER $:/core/save/all text/plain text/html MyUserName passw0rd\n```"
        },
        "$:/language/Help/setfield": {
            "title": "$:/language/Help/setfield",
            "description": "准备用于外部条目",
            "text": "//请注意此命令是试验性的,且可能会更改或在最终定稿前被替换//\n\n设置一群条目的指定栏位到 wikifying 范本条目的结果,其中的  `currentTiddler` 变数设置为各该条目。\n\n```\n--setfield <filter> <fieldname> <templatetitle> <rendertype>\n```\n\n参数说明:\n\n* ''filter'' - 受影响的辨识条目的筛选条件\n* ''fieldname'' - 要修改的栏位(默认为 \"text\")\n* ''templatetitle'' - 该条目 wikify 到指定栏位。若为空白或丢失,则删除指定的栏位\n* ''rendertype'' - 要呈现的文本类型(默认为 \"text/plain\"; \"text/html\" 可以用于包含 HTML 标记))\n"
        },
        "$:/language/Help/unpackplugin": {
            "title": "$:/language/Help/unpackplugin",
            "description": "从插件解开附属的条目",
            "text": "提取插件的附属条目,将其建立为一般条目:\n\n```\n--unpackplugin <title>\n```\n"
        },
        "$:/language/Help/verbose": {
            "title": "$:/language/Help/verbose",
            "description": "触发详细的输出模式",
            "text": "触发显示详细的命令执行过程,可用于调试\n\n```\n--verbose\n```\n"
        },
        "$:/language/Help/version": {
            "title": "$:/language/Help/version",
            "description": "显示 TiddlyWiki 的版本编号",
            "text": "显示 TiddlyWiki 的版本编号。\n\n```\n--version\n```\n"
        },
        "$:/language/Import/Imported/Hint": {
            "title": "$:/language/Import/Imported/Hint",
            "text": "下列条目已被导入:"
        },
        "$:/language/Import/Listing/Cancel/Caption": {
            "title": "$:/language/Import/Listing/Cancel/Caption",
            "text": "取消"
        },
        "$:/language/Import/Listing/Hint": {
            "title": "$:/language/Import/Listing/Hint",
            "text": "这些条目已备妥导入:"
        },
        "$:/language/Import/Listing/Import/Caption": {
            "title": "$:/language/Import/Listing/Import/Caption",
            "text": "导入"
        },
        "$:/language/Import/Listing/Select/Caption": {
            "title": "$:/language/Import/Listing/Select/Caption",
            "text": "选择"
        },
        "$:/language/Import/Listing/Status/Caption": {
            "title": "$:/language/Import/Listing/Status/Caption",
            "text": "状态"
        },
        "$:/language/Import/Listing/Title/Caption": {
            "title": "$:/language/Import/Listing/Title/Caption",
            "text": "条目"
        },
        "$:/language/Import/Listing/Preview": {
            "title": "$:/language/Import/Listing/Preview",
            "text": "预览:"
        },
        "$:/language/Import/Listing/Preview/Text": {
            "title": "$:/language/Import/Listing/Preview/Text",
            "text": "文本"
        },
        "$:/language/Import/Listing/Preview/TextRaw": {
            "title": "$:/language/Import/Listing/Preview/TextRaw",
            "text": "文本 (原始)"
        },
        "$:/language/Import/Listing/Preview/Fields": {
            "title": "$:/language/Import/Listing/Preview/Fields",
            "text": "字段"
        },
        "$:/language/Import/Listing/Preview/Diff": {
            "title": "$:/language/Import/Listing/Preview/Diff",
            "text": "差异"
        },
        "$:/language/Import/Listing/Preview/DiffFields": {
            "title": "$:/language/Import/Listing/Preview/DiffFields",
            "text": "差异 (字段)"
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Incompatible",
            "text": "封锁的不兼容或过时插件"
        },
        "$:/language/Import/Upgrader/Plugins/Suppressed/Version": {
            "title": "$:/language/Import/Upgrader/Plugins/Suppressed/Version",
            "text": "封锁的插件 (由于传入的 <<incoming>> 较现有版本 <<existing>> 旧)"
        },
        "$:/language/Import/Upgrader/Plugins/Upgraded": {
            "title": "$:/language/Import/Upgrader/Plugins/Upgraded",
            "text": "升级插件,从 <<incoming>> 到 <<upgraded>>"
        },
        "$:/language/Import/Upgrader/State/Suppressed": {
            "title": "$:/language/Import/Upgrader/State/Suppressed",
            "text": "封锁的暂存状态条目"
        },
        "$:/language/Import/Upgrader/System/Suppressed": {
            "title": "$:/language/Import/Upgrader/System/Suppressed",
            "text": "封锁的系统条目"
        },
        "$:/language/Import/Upgrader/System/Warning": {
            "title": "$:/language/Import/Upgrader/System/Warning",
            "text": "核心模块条目"
        },
        "$:/language/Import/Upgrader/System/Alert": {
            "title": "$:/language/Import/Upgrader/System/Alert",
            "text": "您即将导入一个条目会覆盖一个核心模块条目。不建议这样做,因为可能会使系统不稳定。"
        },
        "$:/language/Import/Upgrader/ThemeTweaks/Created": {
            "title": "$:/language/Import/Upgrader/ThemeTweaks/Created",
            "text": "从 <$text text=<<from>>/> 迁移布景主题"
        },
        "$:/language/AboveStory/ClassicPlugin/Warning": {
            "title": "$:/language/AboveStory/ClassicPlugin/Warning",
            "text": "您貌似要加载为 ~TiddlyWiki 经典版设计的插件。请注意,[[这些插件无法运行于 TiddlyWiki 5.x.x 版|https://tiddlywiki.com/#TiddlyWikiClassic]]。检测到 ~TiddlyWiki 经典版插件:"
        },
        "$:/language/BinaryWarning/Prompt": {
            "title": "$:/language/BinaryWarning/Prompt",
            "text": "此条目包含二进制数据"
        },
        "$:/language/ClassicWarning/Hint": {
            "title": "$:/language/ClassicWarning/Hint",
            "text": "此条目以经典版 TiddlyWiki 标记格式撰写,不完全兼容新版 TiddlyWiki 的格式,详细信息请参阅:https://tiddlywiki.com/static/Upgrading。"
        },
        "$:/language/ClassicWarning/Upgrade/Caption": {
            "title": "$:/language/ClassicWarning/Upgrade/Caption",
            "text": "升级"
        },
        "$:/language/CloseAll/Button": {
            "title": "$:/language/CloseAll/Button",
            "text": "全部关闭"
        },
        "$:/language/ColourPicker/Recent": {
            "title": "$:/language/ColourPicker/Recent",
            "text": "最近︰"
        },
        "$:/language/ConfirmCancelTiddler": {
            "title": "$:/language/ConfirmCancelTiddler",
            "text": "您确定要放弃对条目 \"<$text text=<<title>>/>\" 的更改?"
        },
        "$:/language/ConfirmDeleteTiddler": {
            "title": "$:/language/ConfirmDeleteTiddler",
            "text": "您确定要删除条目 \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmOverwriteTiddler": {
            "title": "$:/language/ConfirmOverwriteTiddler",
            "text": "您确定要复写条目 \"<$text text=<<title>>/>\"?"
        },
        "$:/language/ConfirmEditShadowTiddler": {
            "title": "$:/language/ConfirmEditShadowTiddler",
            "text": "您即将要编辑默认条目,任何更改将会复盖默认的系统,使未来的升级不寻常。您确定要编辑 \"<$text text=<<title>>/>\"?"
        },
        "$:/language/Count": {
            "title": "$:/language/Count",
            "text": "计数"
        },
        "$:/language/DefaultNewTiddlerTitle": {
            "title": "$:/language/DefaultNewTiddlerTitle",
            "text": "新条目"
        },
        "$:/language/Diffs/CountMessage": {
            "title": "$:/language/Diffs/CountMessage",
            "text": "<<diff-count>> 个差异"
        },
        "$:/language/DropMessage": {
            "title": "$:/language/DropMessage",
            "text": "拖放到此处 (或按 ESC 键取消)"
        },
        "$:/language/Encryption/Cancel": {
            "title": "$:/language/Encryption/Cancel",
            "text": "取消"
        },
        "$:/language/Encryption/ConfirmClearPassword": {
            "title": "$:/language/Encryption/ConfirmClearPassword",
            "text": "您要清除密码吗?当保存此维基时,这将删除已套用的加密"
        },
        "$:/language/Encryption/Username": {
            "title": "$:/language/Encryption/Username",
            "text": "用户名称"
        },
        "$:/language/Encryption/Password": {
            "title": "$:/language/Encryption/Password",
            "text": "密码"
        },
        "$:/language/Encryption/PromptSetPassword": {
            "title": "$:/language/Encryption/PromptSetPassword",
            "text": "为此 TiddlyWiki 设置一个新密码"
        },
        "$:/language/Encryption/RepeatPassword": {
            "title": "$:/language/Encryption/RepeatPassword",
            "text": "重复输入密码"
        },
        "$:/language/Encryption/PasswordNoMatch": {
            "title": "$:/language/Encryption/PasswordNoMatch",
            "text": "密码不匹配"
        },
        "$:/language/Encryption/SetPassword": {
            "title": "$:/language/Encryption/SetPassword",
            "text": "设定密码"
        },
        "$:/language/Error/Caption": {
            "title": "$:/language/Error/Caption",
            "text": "错误"
        },
        "$:/language/Error/EditConflict": {
            "title": "$:/language/Error/EditConflict",
            "text": "服务器上的文件已更改"
        },
        "$:/language/Error/Filter": {
            "title": "$:/language/Error/Filter",
            "text": "筛选器错误"
        },
        "$:/language/Error/FilterSyntax": {
            "title": "$:/language/Error/FilterSyntax",
            "text": "筛选器运算式中的语法错误"
        },
        "$:/language/Error/IsFilterOperator": {
            "title": "$:/language/Error/IsFilterOperator",
            "text": "筛选器错误︰'is' 筛选器运算符的未知操作数"
        },
        "$:/language/Error/LoadingPluginLibrary": {
            "title": "$:/language/Error/LoadingPluginLibrary",
            "text": "加载插件程式库时,发生错误"
        },
        "$:/language/Error/NetworkErrorAlert": {
            "title": "$:/language/Error/NetworkErrorAlert",
            "text": "`<h2>''网络错误''</h2>与服务器的连缐似乎已中断。这可能表示您的网络连缐有问题。请尝试恢复网路连缐才能继续。<br><br>''恢复连缐时,所有未保存的更改,将自动同步''。`"
        },
        "$:/language/Error/RecursiveTransclusion": {
            "title": "$:/language/Error/RecursiveTransclusion",
            "text": "于 transclude 小部件中的递回嵌入错误"
        },
        "$:/language/Error/RetrievingSkinny": {
            "title": "$:/language/Error/RetrievingSkinny",
            "text": "简要条目清单撷取错误"
        },
        "$:/language/Error/SavingToTWEdit": {
            "title": "$:/language/Error/SavingToTWEdit",
            "text": "保存到 TWEdit 时,发生错误"
        },
        "$:/language/Error/WhileSaving": {
            "title": "$:/language/Error/WhileSaving",
            "text": "保存时,发生错误"
        },
        "$:/language/Error/XMLHttpRequest": {
            "title": "$:/language/Error/XMLHttpRequest",
            "text": "XMLHttpRequest 错误代码"
        },
        "$:/language/InternalJavaScriptError/Title": {
            "title": "$:/language/InternalJavaScriptError/Title",
            "text": "内部的 JavaScript 错误"
        },
        "$:/language/InternalJavaScriptError/Hint": {
            "title": "$:/language/InternalJavaScriptError/Hint",
            "text": "喔,真是令人尴尬。建议刷新您的浏览器,重新启动 TiddlyWiki"
        },
        "$:/language/InvalidFieldName": {
            "title": "$:/language/InvalidFieldName",
            "text": "栏位名称 \"<$text text=<<fieldName>>/>\" 包含无效字符,栏位名称只能包含小写字母、数字、底线 (`_`)、 连字号 (`-`) 和小数点 (`.`)"
        },
        "$:/language/LazyLoadingWarning": {
            "title": "$:/language/LazyLoadingWarning",
            "text": "<p>正在从 ''<$text text={{!!_canonical_uri}}/>'' 加载外部内容 ...</p><p>如果此信息未消失,可能是条目内容类型与外部内容的类型不匹配,或是您可能正在使用的浏览器,不支援单文件式维基的外部内容。请参阅 https://tiddlywiki.com/#ExternalText</p>"
        },
        "$:/language/LoginToTiddlySpace": {
            "title": "$:/language/LoginToTiddlySpace",
            "text": "登录 TiddlySpace"
        },
        "$:/language/Manager/Controls/FilterByTag/None": {
            "title": "$:/language/Manager/Controls/FilterByTag/None",
            "text": "(无)"
        },
        "$:/language/Manager/Controls/FilterByTag/Prompt": {
            "title": "$:/language/Manager/Controls/FilterByTag/Prompt",
            "text": "依标签筛选︰"
        },
        "$:/language/Manager/Controls/Order/Prompt": {
            "title": "$:/language/Manager/Controls/Order/Prompt",
            "text": "反向顺序"
        },
        "$:/language/Manager/Controls/Search/Placeholder": {
            "title": "$:/language/Manager/Controls/Search/Placeholder",
            "text": "搜寻"
        },
        "$:/language/Manager/Controls/Search/Prompt": {
            "title": "$:/language/Manager/Controls/Search/Prompt",
            "text": "搜寻︰"
        },
        "$:/language/Manager/Controls/Show/Option/Tags": {
            "title": "$:/language/Manager/Controls/Show/Option/Tags",
            "text": "标签"
        },
        "$:/language/Manager/Controls/Show/Option/Tiddlers": {
            "title": "$:/language/Manager/Controls/Show/Option/Tiddlers",
            "text": "条目"
        },
        "$:/language/Manager/Controls/Show/Prompt": {
            "title": "$:/language/Manager/Controls/Show/Prompt",
            "text": "显示︰"
        },
        "$:/language/Manager/Controls/Sort/Prompt": {
            "title": "$:/language/Manager/Controls/Sort/Prompt",
            "text": "排序︰"
        },
        "$:/language/Manager/Item/Colour": {
            "title": "$:/language/Manager/Item/Colour",
            "text": "颜色"
        },
        "$:/language/Manager/Item/Fields": {
            "title": "$:/language/Manager/Item/Fields",
            "text": "栏位"
        },
        "$:/language/Manager/Item/Icon/None": {
            "title": "$:/language/Manager/Item/Icon/None",
            "text": "(无)"
        },
        "$:/language/Manager/Item/Icon": {
            "title": "$:/language/Manager/Item/Icon",
            "text": "图标"
        },
        "$:/language/Manager/Item/RawText": {
            "title": "$:/language/Manager/Item/RawText",
            "text": "原始文字"
        },
        "$:/language/Manager/Item/Tags": {
            "title": "$:/language/Manager/Item/Tags",
            "text": "标签"
        },
        "$:/language/Manager/Item/Tools": {
            "title": "$:/language/Manager/Item/Tools",
            "text": "工具"
        },
        "$:/language/Manager/Item/WikifiedText": {
            "title": "$:/language/Manager/Item/WikifiedText",
            "text": "Wikified 文字"
        },
        "$:/language/MissingTiddler/Hint": {
            "title": "$:/language/MissingTiddler/Hint",
            "text": "佚失条目 \"<$text text=<<currentTiddler>>/>\" - 点击 {{||$:/core/ui/Buttons/edit}} 可创建此条目"
        },
        "$:/language/No": {
            "title": "$:/language/No",
            "text": "否"
        },
        "$:/language/OfficialPluginLibrary": {
            "title": "$:/language/OfficialPluginLibrary",
            "text": "~TiddlyWiki 官方插件程式库"
        },
        "$:/language/OfficialPluginLibrary/Hint": {
            "title": "$:/language/OfficialPluginLibrary/Hint",
            "text": "此为在 tiddlywiki.com 的 ~TiddlyWiki 官方插件程式库。由核心团队维护的插件、主题和语言包。"
        },
        "$:/language/PluginReloadWarning": {
            "title": "$:/language/PluginReloadWarning",
            "text": "请保存 {{$:/core/ui/Buttons/save-wiki}} 并刷新页面 {{$:/core/ui/Buttons/refresh}} ,使 ~JavaScript 插件的更改生效"
        },
        "$:/language/RecentChanges/DateFormat": {
            "title": "$:/language/RecentChanges/DateFormat",
            "text": "YYYY年0MM月0DD日"
        },
        "$:/language/SystemTiddler/Tooltip": {
            "title": "$:/language/SystemTiddler/Tooltip",
            "text": "此为系统条目"
        },
        "$:/language/SystemTiddlers/Include/Prompt": {
            "title": "$:/language/SystemTiddlers/Include/Prompt",
            "text": "包括系统条目"
        },
        "$:/language/TagManager/Colour/Heading": {
            "title": "$:/language/TagManager/Colour/Heading",
            "text": "颜色"
        },
        "$:/language/TagManager/Count/Heading": {
            "title": "$:/language/TagManager/Count/Heading",
            "text": "计数"
        },
        "$:/language/TagManager/Icon/Heading": {
            "title": "$:/language/TagManager/Icon/Heading",
            "text": "图标"
        },
        "$:/language/TagManager/Icons/None": {
            "title": "$:/language/TagManager/Icons/None",
            "text": "无"
        },
        "$:/language/TagManager/Info/Heading": {
            "title": "$:/language/TagManager/Info/Heading",
            "text": "信息"
        },
        "$:/language/TagManager/Tag/Heading": {
            "title": "$:/language/TagManager/Tag/Heading",
            "text": "标签"
        },
        "$:/language/Tiddler/DateFormat": {
            "title": "$:/language/Tiddler/DateFormat",
            "text": "YYYY年0MM月0DD日 0hh:0mm"
        },
        "$:/language/UnsavedChangesWarning": {
            "title": "$:/language/UnsavedChangesWarning",
            "text": "在此 TiddlyWiki 您有尚未保存的变更"
        },
        "$:/language/Yes": {
            "title": "$:/language/Yes",
            "text": "是"
        },
        "$:/language/Modals/Download": {
            "title": "$:/language/Modals/Download",
            "type": "text/vnd.tiddlywiki",
            "subtitle": "Download changes",
            "footer": "<$button message=\"tm-close-tiddler\">关闭</$button>",
            "help": "https://tiddlywiki.com/",
            "text": "您的浏览器只支援手动保存。\n\n要保存更动的维基,右键点击下方的下载链结,选择\"下载文件\"或\"保存文件\",然后选择文件夹或文件名。\n\n//您可以藉由按一下 Ctrl 键(Windows)或 options/ alt 键(Mac OS X)中的链接,稍微加速操作。您不会被提示文件夹或文件名,您的浏览器可能无法辨认它的文件名 -- 在做其他任何事之前,您可能需要重新命名扩展名为 `.html` 的文件。//\n\n在智能型手机上,不允许下载文件,但您可以标记链结,然后从一台可以正常保存维基的台式机的维基同步你的书签。"
        },
        "$:/language/Modals/SaveInstructions": {
            "title": "$:/language/Modals/SaveInstructions",
            "type": "text/vnd.tiddlywiki",
            "subtitle": "Save your work",
            "footer": "<$button message=\"tm-close-tiddler\">关闭</$button>",
            "help": "https://tiddlywiki.com/static/SavingChanges.html",
            "text": "您对此 wiki 的变更需被保存为 ~TiddlyWiki HTML 文件。\n\n!!! 桌面版浏览器\n\n# 从''文件''菜单点选 ''另存为''\n# 选定文件名及保存位置\n#* 某些浏览器依然需要明确指定文件格式为 ''Webpage, HTML only'' 或类似的。\n# 关闭此页签\n\n!!! 智能手机版浏览器\n\n# 为此页建立书签\n#* 若您已设置 iCloud 或 Google 同步,该书签将自动与之前开启及保存于您电脑的书签同步。\n# 关闭此页签\n\n//若您再次于 Mobile Safari 开启该书签,将会再看到此信息。若要继续使用该文件,只需点击下列 ''关闭'' 按钮//\n"
        },
        "$:/config/NewJournal/Title": {
            "title": "$:/config/NewJournal/Title",
            "text": "YYYY年0MM月0DD日"
        },
        "$:/config/NewJournal/Text": {
            "title": "$:/config/NewJournal/Text",
            "text": ""
        },
        "$:/config/NewJournal/Tags": {
            "title": "$:/config/NewJournal/Tags",
            "tags": "日志"
        },
        "$:/language/Notifications/Save/Done": {
            "title": "$:/language/Notifications/Save/Done",
            "text": "已保存 wiki"
        },
        "$:/language/Notifications/Save/Starting": {
            "title": "$:/language/Notifications/Save/Starting",
            "text": "开始保存 wiki"
        },
        "$:/language/Notifications/CopiedToClipboard/Succeeded": {
            "title": "$:/language/Notifications/CopiedToClipboard/Succeeded",
            "text": "已复制到剪贴板!"
        },
        "$:/language/Notifications/CopiedToClipboard/Failed": {
            "title": "$:/language/Notifications/CopiedToClipboard/Failed",
            "text": "无法复制到剪贴板!"
        },
        "$:/language/Search/DefaultResults/Caption": {
            "title": "$:/language/Search/DefaultResults/Caption",
            "text": "列表"
        },
        "$:/language/Search/Filter/Caption": {
            "title": "$:/language/Search/Filter/Caption",
            "text": "筛选"
        },
        "$:/language/Search/Filter/Hint": {
            "title": "$:/language/Search/Filter/Hint",
            "text": "以[[筛选表达式|https://tiddlywiki.com/static/Filters.html]]查找"
        },
        "$:/language/Search/Filter/Matches": {
            "title": "$:/language/Search/Filter/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/Search/Matches": {
            "title": "$:/language/Search/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/Search/Matches/All": {
            "title": "$:/language/Search/Matches/All",
            "text": "所有匹配:"
        },
        "$:/language/Search/Matches/Title": {
            "title": "$:/language/Search/Matches/Title",
            "text": "条目名称匹配:"
        },
        "$:/language/Search/Search": {
            "title": "$:/language/Search/Search",
            "text": "查找"
        },
        "$:/language/Search/Search/TooShort": {
            "title": "$:/language/Search/Search/TooShort",
            "text": "查找文本太短"
        },
        "$:/language/Search/Shadows/Caption": {
            "title": "$:/language/Search/Shadows/Caption",
            "text": "默认"
        },
        "$:/language/Search/Shadows/Hint": {
            "title": "$:/language/Search/Shadows/Hint",
            "text": "查找默认条目"
        },
        "$:/language/Search/Shadows/Matches": {
            "title": "$:/language/Search/Shadows/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/Search/Standard/Caption": {
            "title": "$:/language/Search/Standard/Caption",
            "text": "标准"
        },
        "$:/language/Search/Standard/Hint": {
            "title": "$:/language/Search/Standard/Hint",
            "text": "查找一般条目"
        },
        "$:/language/Search/Standard/Matches": {
            "title": "$:/language/Search/Standard/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/Search/System/Caption": {
            "title": "$:/language/Search/System/Caption",
            "text": "系统"
        },
        "$:/language/Search/System/Hint": {
            "title": "$:/language/Search/System/Hint",
            "text": "查找系统条目"
        },
        "$:/language/Search/System/Matches": {
            "title": "$:/language/Search/System/Matches",
            "text": "//<small><<resultCount>> 个条目符合条件</small>//"
        },
        "$:/language/SideBar/All/Caption": {
            "title": "$:/language/SideBar/All/Caption",
            "text": "全部"
        },
        "$:/language/SideBar/Contents/Caption": {
            "title": "$:/language/SideBar/Contents/Caption",
            "text": "目录"
        },
        "$:/language/SideBar/Drafts/Caption": {
            "title": "$:/language/SideBar/Drafts/Caption",
            "text": "草稿"
        },
        "$:/language/SideBar/Explorer/Caption": {
            "title": "$:/language/SideBar/Explorer/Caption",
            "text": "探索"
        },
        "$:/language/SideBar/Missing/Caption": {
            "title": "$:/language/SideBar/Missing/Caption",
            "text": "缺失"
        },
        "$:/language/SideBar/More/Caption": {
            "title": "$:/language/SideBar/More/Caption",
            "text": "更多"
        },
        "$:/language/SideBar/Open/Caption": {
            "title": "$:/language/SideBar/Open/Caption",
            "text": "开启"
        },
        "$:/language/SideBar/Orphans/Caption": {
            "title": "$:/language/SideBar/Orphans/Caption",
            "text": "孤立"
        },
        "$:/language/SideBar/Recent/Caption": {
            "title": "$:/language/SideBar/Recent/Caption",
            "text": "最近"
        },
        "$:/language/SideBar/Shadows/Caption": {
            "title": "$:/language/SideBar/Shadows/Caption",
            "text": "默认"
        },
        "$:/language/SideBar/System/Caption": {
            "title": "$:/language/SideBar/System/Caption",
            "text": "系统"
        },
        "$:/language/SideBar/Tags/Caption": {
            "title": "$:/language/SideBar/Tags/Caption",
            "text": "标签"
        },
        "$:/language/SideBar/Tags/Untagged/Caption": {
            "title": "$:/language/SideBar/Tags/Untagged/Caption",
            "text": "未设标签"
        },
        "$:/language/SideBar/Tools/Caption": {
            "title": "$:/language/SideBar/Tools/Caption",
            "text": "工具"
        },
        "$:/language/SideBar/Types/Caption": {
            "title": "$:/language/SideBar/Types/Caption",
            "text": "类型"
        },
        "$:/SiteSubtitle": {
            "title": "$:/SiteSubtitle",
            "text": "一个非线性的网页式笔记"
        },
        "$:/SiteTitle": {
            "title": "$:/SiteTitle",
            "text": "我的 ~TiddlyWiki"
        },
        "$:/language/Snippets/ListByTag": {
            "title": "$:/language/Snippets/ListByTag",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "依标签筛选的条目列表",
            "text": "<<list-links \"[tag[task]sort[title]]\">>\n"
        },
        "$:/language/Snippets/MacroDefinition": {
            "title": "$:/language/Snippets/MacroDefinition",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "宏的定义",
            "text": "\\define macroName(param1:\"默认值\",param2)\n宏的内容\n\\end\n"
        },
        "$:/language/Snippets/Table4x3": {
            "title": "$:/language/Snippets/Table4x3",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "4 x 3 的表格",
            "text": "|! | !一 | !二 | !三 | !四 |\n|! 1| | | | |\n|! 2| | | | |\n|! 3 | | | | |\n"
        },
        "$:/language/Snippets/TableOfContents": {
            "title": "$:/language/Snippets/TableOfContents",
            "tags": "$:/tags/TextEditor/Snippet",
            "caption": "目录",
            "text": "<div class=\"tc-table-of-contents\">\n\n<<toc-selective-expandable 'TableOfContents'>>\n\n</div>"
        },
        "$:/language/ThemeTweaks/ThemeTweaks": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks",
            "text": "主题调整"
        },
        "$:/language/ThemeTweaks/ThemeTweaks/Hint": {
            "title": "$:/language/ThemeTweaks/ThemeTweaks/Hint",
            "text": "您可以调整 ''Vanilla'' 布景主题的某些样貌。"
        },
        "$:/language/ThemeTweaks/Options": {
            "title": "$:/language/ThemeTweaks/Options",
            "text": "选项"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout",
            "text": "侧边栏布局"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fixed-Fluid",
            "text": "固定故事,浮动侧边栏"
        },
        "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed": {
            "title": "$:/language/ThemeTweaks/Options/SidebarLayout/Fluid-Fixed",
            "text": "浮动故事,固定侧边栏"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles",
            "text": "置顶标题"
        },
        "$:/language/ThemeTweaks/Options/StickyTitles/Hint": {
            "title": "$:/language/ThemeTweaks/Options/StickyTitles/Hint",
            "text": "使条目名称\"黏着\"于浏览器窗口的顶端"
        },
        "$:/language/ThemeTweaks/Options/CodeWrapping": {
            "title": "$:/language/ThemeTweaks/Options/CodeWrapping",
            "text": "在代码区块中折行"
        },
        "$:/language/ThemeTweaks/Settings": {
            "title": "$:/language/ThemeTweaks/Settings",
            "text": "设置"
        },
        "$:/language/ThemeTweaks/Settings/FontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/FontFamily",
            "text": "字型"
        },
        "$:/language/ThemeTweaks/Settings/CodeFontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/CodeFontFamily",
            "text": "代码字型"
        },
        "$:/language/ThemeTweaks/Settings/EditorFontFamily": {
            "title": "$:/language/ThemeTweaks/Settings/EditorFontFamily",
            "text": "编辑器字型"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImage": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImage",
            "text": "页面背景图像"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment",
            "text": "页面背景图像附属"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Scroll",
            "text": "随条目卷动"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageAttachment/Fixed",
            "text": "固定于窗口"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize",
            "text": "页面背景图像大小"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Auto",
            "text": "自动"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Cover",
            "text": "覆盖"
        },
        "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain": {
            "title": "$:/language/ThemeTweaks/Settings/BackgroundImageSize/Contain",
            "text": "包含"
        },
        "$:/language/ThemeTweaks/Metrics": {
            "title": "$:/language/ThemeTweaks/Metrics",
            "text": "大小"
        },
        "$:/language/ThemeTweaks/Metrics/FontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/FontSize",
            "text": "字体大小"
        },
        "$:/language/ThemeTweaks/Metrics/LineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/LineHeight",
            "text": "行高"
        },
        "$:/language/ThemeTweaks/Metrics/BodyFontSize": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyFontSize",
            "text": "条目本文的字体大小"
        },
        "$:/language/ThemeTweaks/Metrics/BodyLineHeight": {
            "title": "$:/language/ThemeTweaks/Metrics/BodyLineHeight",
            "text": "条目本文的行高"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft",
            "text": "故事左侧位置"
        },
        "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryLeft/Hint",
            "text": "故事河(条目区)的左边缘与页面左端的间距"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop",
            "text": "故事顶端位置"
        },
        "$:/language/ThemeTweaks/Metrics/StoryTop/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryTop/Hint",
            "text": "故事河(条目区)的上边缘与页面顶端的间距"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight",
            "text": "故事右侧位置"
        },
        "$:/language/ThemeTweaks/Metrics/StoryRight/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryRight/Hint",
            "text": "侧边栏的左边缘与页面左端的间距"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth",
            "text": "故事的宽度"
        },
        "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/StoryWidth/Hint",
            "text": "故事河的整体宽度"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth",
            "text": "条目宽度"
        },
        "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/TiddlerWidth/Hint",
            "text": "在故事河内"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint",
            "text": "侧边栏中断点"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarBreakpoint/Hint",
            "text": "故事河和侧边栏会并排显示的最小页面宽度"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth",
            "text": "侧边栏宽度"
        },
        "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint": {
            "title": "$:/language/ThemeTweaks/Metrics/SidebarWidth/Hint",
            "text": "在浮动-固定布局中,侧边栏的宽度"
        },
        "$:/language/TiddlerInfo/Advanced/Caption": {
            "title": "$:/language/TiddlerInfo/Advanced/Caption",
            "text": "高级"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Empty/Hint",
            "text": "无信息"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Heading",
            "text": "插件明细"
        },
        "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/PluginInfo/Hint",
            "text": "此插件包含以下预设条目:"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Heading",
            "text": "默认条目状态"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/NotShadow/Hint",
            "text": "<$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> 不是一个默认条目"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Hint",
            "text": "<$link to=<<infoTiddler>>><$text text=<<infoTiddler>>/></$link> 是一个默认条目"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/Shadow/Source",
            "text": "此条目定义于插件 <$link to=<<pluginTiddler>>><$text text=<<pluginTiddler>>/></$link>"
        },
        "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint": {
            "title": "$:/language/TiddlerInfo/Advanced/ShadowInfo/OverriddenShadow/Hint",
            "text": "已被一般条目覆写"
        },
        "$:/language/TiddlerInfo/Fields/Caption": {
            "title": "$:/language/TiddlerInfo/Fields/Caption",
            "text": "栏位"
        },
        "$:/language/TiddlerInfo/List/Caption": {
            "title": "$:/language/TiddlerInfo/List/Caption",
            "text": "列表"
        },
        "$:/language/TiddlerInfo/List/Empty": {
            "title": "$:/language/TiddlerInfo/List/Empty",
            "text": "此条目无指定列表"
        },
        "$:/language/TiddlerInfo/Listed/Caption": {
            "title": "$:/language/TiddlerInfo/Listed/Caption",
            "text": "被列于"
        },
        "$:/language/TiddlerInfo/Listed/Empty": {
            "title": "$:/language/TiddlerInfo/Listed/Empty",
            "text": "此条目未出现于其他条目的列表中"
        },
        "$:/language/TiddlerInfo/References/Caption": {
            "title": "$:/language/TiddlerInfo/References/Caption",
            "text": "参照"
        },
        "$:/language/TiddlerInfo/References/Empty": {
            "title": "$:/language/TiddlerInfo/References/Empty",
            "text": "无条目链接至此"
        },
        "$:/language/TiddlerInfo/Tagging/Caption": {
            "title": "$:/language/TiddlerInfo/Tagging/Caption",
            "text": "子条目"
        },
        "$:/language/TiddlerInfo/Tagging/Empty": {
            "title": "$:/language/TiddlerInfo/Tagging/Empty",
            "text": "无任何条目以此条目之标题为标签"
        },
        "$:/language/TiddlerInfo/Tools/Caption": {
            "title": "$:/language/TiddlerInfo/Tools/Caption",
            "text": "工具"
        },
        "$:/language/Docs/Types/application/javascript": {
            "title": "$:/language/Docs/Types/application/javascript",
            "description": "JavaScript 源码",
            "name": "application/javascript",
            "group": "开发者"
        },
        "$:/language/Docs/Types/application/json": {
            "title": "$:/language/Docs/Types/application/json",
            "description": "JSON 数据",
            "name": "application/json",
            "group": "开发者"
        },
        "$:/language/Docs/Types/application/x-tiddler-dictionary": {
            "title": "$:/language/Docs/Types/application/x-tiddler-dictionary",
            "description": "数据字典",
            "name": "application/x-tiddler-dictionary",
            "group": "开发者"
        },
        "$:/language/Docs/Types/image/gif": {
            "title": "$:/language/Docs/Types/image/gif",
            "description": "GIF 图像",
            "name": "image/gif",
            "group": "图像"
        },
        "$:/language/Docs/Types/image/jpeg": {
            "title": "$:/language/Docs/Types/image/jpeg",
            "description": "JPEG 图像",
            "name": "image/jpeg",
            "group": "图像"
        },
        "$:/language/Docs/Types/image/png": {
            "title": "$:/language/Docs/Types/image/png",
            "description": "PNG 图像",
            "name": "image/png",
            "group": "图像"
        },
        "$:/language/Docs/Types/image/svg+xml": {
            "title": "$:/language/Docs/Types/image/svg+xml",
            "description": "结构式矢量图",
            "name": "image/svg+xml",
            "group": "图像"
        },
        "$:/language/Docs/Types/image/x-icon": {
            "title": "$:/language/Docs/Types/image/x-icon",
            "description": "图标",
            "name": "image/x-icon",
            "group": "图像"
        },
        "$:/language/Docs/Types/text/css": {
            "title": "$:/language/Docs/Types/text/css",
            "description": "静态样式",
            "name": "text/css",
            "group": "开发者"
        },
        "$:/language/Docs/Types/text/html": {
            "title": "$:/language/Docs/Types/text/html",
            "description": "HTML 标记",
            "name": "text/html",
            "group": "文本"
        },
        "$:/language/Docs/Types/text/plain": {
            "title": "$:/language/Docs/Types/text/plain",
            "description": "纯文本",
            "name": "text/plain",
            "group": "文本"
        },
        "$:/language/Docs/Types/text/vnd.tiddlywiki": {
            "title": "$:/language/Docs/Types/text/vnd.tiddlywiki",
            "description": "TiddlyWiki 5",
            "name": "text/vnd.tiddlywiki",
            "group": "文本"
        },
        "$:/language/Docs/Types/text/x-tiddlywiki": {
            "title": "$:/language/Docs/Types/text/x-tiddlywiki",
            "description": "TiddlyWiki 2",
            "name": "text/x-tiddlywiki",
            "group": "文本"
        },
        "$:/config/Search/MinLength": {
            "title": "$:/config/Search/MinLength",
            "text": "1"
        },
        "$:/languages/zh-Hans/icon": {
            "title": "$:/languages/zh-Hans/icon",
            "type": "image/svg+xml",
            "text": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<svg xmlns=\"http://www.w3.org/2000/svg\" version=\"1.1\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"1500\" height=\"1000\" viewBox=\"-5 -5 30 20\">\n<title>Flag of the People's Republic of China</title>\n<rect fill=\"#de2910\" x=\"-5\" y=\"-5\" width=\"30\" height=\"20\"/>\n<defs>\n<polygon id=\"s\" points=\"0,-513674 301930,415571 -488533,-158734 488533,-158734 -301930,415571\"\nfill=\"#ffde00\" transform=\"scale(0.0000019467600073)\"/>\n</defs>\n<use xlink:href=\"#s\" transform=\"scale(3)\"/>\n<use xlink:href=\"#s\" transform=\"translate(5,-3) rotate(-120.963756)\"/>\n<use xlink:href=\"#s\" transform=\"translate(7,-1) rotate(-98.130102)\"/>\n<use xlink:href=\"#s\" transform=\"translate(7,2) rotate(-74.054604)\"/>\n<use xlink:href=\"#s\" transform=\"translate(5,4) rotate(-51.3401917)\"/>\n</svg>\n"
        }
    }
}
\define ref(label)
<$button popup="$:/state/$label$" class="tc-btn-invisible tc-slider"><sup style="color:
#94052f">$label$</sup></$button>
\end

\define definition(label,text)
<$reveal type="popup" state="$:/state/$label$" animate="yes">
<div class="tc-drop-down">
<dl>
<dt>$label$</dt> 
<span style="color:gray">
<dd>@@color:gray; <i class="fa fa fa-info-circle fa-2x fa-pull-left "></i>@@ $text$</dd>
</span> 
</dl>
</div>
</$reveal>
\end

\define footnote(label,text)
<<ref "$label$">>
<<definition "$label$" "$text$">>
\end

\define footnotes(label,text)
<<definition "$label$" "$text$">>
<sub><span style="color:gray">''$label$'' :  $text$  </span></sub>
\end
$:/palettes/Vanilla
alert-background: #ffe476
alert-border: #b99e2f
alert-highlight: #881122
alert-muted-foreground: #b99e2f
background: #ffffff
blockquote-bar: <<colour muted-foreground>>
button-background: 
button-foreground: 
button-border: 
code-background: #f7f7f9
code-border: #e1e1e8
code-foreground: #dd1144
dirty-indicator: #ff0000
download-background: #34c734
download-foreground: <<colour background>>
dragger-background: <<colour foreground>>
dragger-foreground: <<colour background>>
dropdown-background: <<colour background>>
dropdown-border: <<colour muted-foreground>>
dropdown-tab-background-selected: #fff
dropdown-tab-background: #ececec
dropzone-background: rgba(0,200,0,0.7)
external-link-background-hover: inherit
external-link-background-visited: inherit
external-link-background: inherit
external-link-foreground-hover: inherit
external-link-foreground-visited: #0000aa
external-link-foreground: #5778d8
foreground: #333333
message-background: #ecf2ff
message-border: #cfd6e6
message-foreground: #547599
modal-backdrop: <<colour foreground>>
modal-background: <<colour background>>
modal-border: #999999
modal-footer-background: #f5f5f5
modal-footer-border: #dddddd
modal-header-border: #eeeeee
muted-foreground: #bbb
notification-background: #ffffdd
notification-border: #999999
page-background: #f4f4f4
pre-background: #f5f5f5
pre-border: #cccccc
primary: #5778d8
sidebar-button-foreground: <<colour foreground>>
sidebar-controls-foreground-hover: #000000
sidebar-controls-foreground: #aaaaaa
sidebar-foreground-shadow: rgba(255,255,255, 0.8)
sidebar-foreground: #acacac
sidebar-muted-foreground-hover: #444444
sidebar-muted-foreground: #c0c0c0
sidebar-tab-background-selected: #f4f4f4
sidebar-tab-background: #e0e0e0
sidebar-tab-border-selected: <<colour tab-border-selected>>
sidebar-tab-border: <<colour tab-border>>
sidebar-tab-divider: #e4e4e4
sidebar-tab-foreground-selected: 
sidebar-tab-foreground: <<colour tab-foreground>>
sidebar-tiddler-link-foreground-hover: #444444
sidebar-tiddler-link-foreground: #999999
site-title-foreground: <<colour tiddler-title-foreground>>
static-alert-foreground: #aaaaaa
tab-background-selected: #ffffff
tab-background: #d8d8d8
tab-border-selected: #d8d8d8
tab-border: #cccccc
tab-divider: #d8d8d8
tab-foreground-selected: <<colour tab-foreground>>
tab-foreground: #666666
table-border: #dddddd
table-footer-background: #a8a8a8
table-header-background: #f0f0f0
tag-background: #ec6
tag-foreground: #ffffff
tiddler-background: <<colour background>>
tiddler-border: <<colour background>>
tiddler-controls-foreground-hover: #888888
tiddler-controls-foreground-selected: #444444
tiddler-controls-foreground: #cccccc
tiddler-editor-background: #f8f8f8
tiddler-editor-border-image: #ffffff
tiddler-editor-border: #cccccc
tiddler-editor-fields-even: #e0e8e0
tiddler-editor-fields-odd: #f0f4f0
tiddler-info-background: #f8f8f8
tiddler-info-border: #dddddd
tiddler-info-tab-background: #f8f8f8
tiddler-link-background: <<colour background>>
tiddler-link-foreground: <<colour primary>>
tiddler-subtitle-foreground: #c0c0c0
tiddler-title-foreground: #182955
toolbar-new-button: 
toolbar-options-button: 
toolbar-save-button: 
toolbar-info-button: 
toolbar-edit-button: 
toolbar-close-button: 
toolbar-delete-button: 
toolbar-cancel-button: 
toolbar-done-button: 
untagged-background: #999999
very-muted-foreground: #888888
<svg xmlns="http://www.w3.org/2000/svg" class="tc-image-button tc-image-view-fields" width="22pt" height="22pt" viewBox="0 0 24 24"><path d="M0 0h24v24H0z" fill="none"/><path d="M7 11H1v2h6v-2zm2.17-3.24L7.05 5.64 5.64 7.05l2.12 2.12 1.41-1.41zM13 1h-2v6h2V1zm5.36 6.05l-1.41-1.41-2.12 2.12 1.41 1.41 2.12-2.12zM17 11v2h6v-2h-6zm-5-2c-1.66 0-3 1.34-3 3s1.34 3 3 3 3-1.34 3-3-1.34-3-3-3zm2.83 7.24l2.12 2.12 1.41-1.41-2.12-2.12-1.41 1.41zm-9.19.71l1.41 1.41 2.12-2.12-1.41-1.41-2.12 2.12zM11 23h2v-6h-2v6z"/></svg>
<$reveal type="nomatch" state="$:/state/toggle-view-fields" text="show">
 <$button class="tc-btn-invisible" 
   set="$:/state/toggle-view-fields" 
   setTo="show"
   tooltip="Show tiddler fields"   
 > 
   {{$:/plugins/.mr/shiraz/images/view-fields.svg}}
   <$action-setfield $tiddler="$:/plugins/.mr/shiraz/viewtemplate/view-fields" tags="Tools $:/tags/ViewTemplate"/>
 </$button>
</$reveal>
<$reveal type="match" state="$:/state/toggle-view-fields" text="show">
 <$button class="tc-btn-invisible" 
   set="$:/state/toggle-view-fields" 
   setTo="hide"
   tooltip="Hide tiddler fields"
 >
    {{$:/plugins/.mr/shiraz/images/view-fields.svg}}
   <$action-setfield $tiddler="$:/plugins/.mr/shiraz/viewtemplate/view-fields" tags="Tools"/>
 </$button>
</$reveal>
\define lingo-base() $:/language/EditTemplate/
\define config-title()
$:/config/EditTemplateFields/Visibility/$(currentField)$
\end

\define config-filter()
[[hide]] -[title{$(config-title)$}]
\end

\define new-field()
<$vars name={{$:/temp/newfieldname}}>
<$reveal type="nomatch" text="" default=<<name>>>
<$button>
<$action-sendmessage $message="tm-add-field"
$name=<<name>>
$value={{$:/temp/newfieldvalue}}/>
<$action-deletetiddler $tiddler="$:/temp/newfieldname"/>
<$action-deletetiddler $tiddler="$:/temp/newfieldvalue"/>
<<lingo Fields/Add/Button>>
</$button>
</$reveal>
<$reveal type="match" text="" default=<<name>>>
<$button>
<<lingo Fields/Add/Button>>
</$button>
</$reveal>
</$vars>
\end

<div class="tc-edit-fields">
<table class="tc-edit-fields">
<tbody>
<$list filter="[all[current]fields[]] +[sort[title]]" variable="currentField">
<$list filter=<<config-filter>> variable="temp">
<tr class="tc-edit-field">
<td class="tc-edit-field-name">
<$text text=<<currentField>>/>:</td>
<td class="tc-edit-field-value">
<$edit-text tiddler=<<currentTiddler>> field=<<currentField>> placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}}/>
</td>
<td class="tc-edit-field-remove">
<$button class="tc-btn-invisible" tooltip={{$:/language/EditTemplate/Field/Remove/Hint}} aria-label={{$:/language/EditTemplate/Field/Remove/Caption}}>
<$action-deletefield $field=<<currentField>>/>
{{$:/core/images/delete-button}}
</$button>
</td>
</tr>
</$list>
</$list>
</tbody>
</table>
</div>

<$fieldmangler>
<div class="tc-edit-field-add">
<em class="tc-edit">
<<lingo Fields/Add/Prompt>>
</em>
<span class="tc-edit-field-add-name">
<$edit-text tiddler="$:/temp/newfieldname" tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<<qualify "$:/state/popup/field-dropdown">> class="tc-edit-texteditor tc-popup-handle"/>
</span>
<$button popup=<<qualify "$:/state/popup/field-dropdown">> class="tc-btn-invisible tc-btn-dropdown" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}</$button>
<$reveal state=<<qualify "$:/state/popup/field-dropdown">> type="nomatch" text="" default="">
<div class="tc-block-dropdown tc-edit-type-dropdown">
<$linkcatcher to="$:/temp/newfieldname">
<div class="tc-dropdown-item">
<<lingo Fields/Add/Dropdown/User>>
</div>
<$list filter="[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type"  variable="currentField">
<$link to=<<currentField>>>
<<currentField>>
</$link>
</$list>
<div class="tc-dropdown-item">
<<lingo Fields/Add/Dropdown/System>>
</div>
<$list filter="[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]" variable="currentField">
<$link to=<<currentField>>>
<<currentField>>
</$link>
</$list>
</$linkcatcher>
</div>
</$reveal>
<span class="tc-edit-field-add-value">
<$edit-text tiddler="$:/temp/newfieldvalue" tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class="tc-edit-texteditor"/>
</span>
<span class="tc-edit-field-add-button">
<$macrocall $name="new-field"/>
</span>
</div>
</$fieldmangler>
{
    "tiddlers": {
        "$:/plugins/danielo/encryptTiddler/Changelog": {
            "title": "$:/plugins/danielo/encryptTiddler/Changelog",
            "text": "!! V2.1\n* Added control panel.\n* Added ability to batch encrypt and decrypt tiddlers.\n* Added some documentation an language strings.\n\n"
        },
        "$:/plugins/danielo/encryptTiddler/control-panel/batch-encrypt": {
            "title": "$:/plugins/danielo/encryptTiddler/control-panel/batch-encrypt",
            "caption": "Batch Encryption",
            "text": "\\define lingo-base() $:/language/Search/\n<<lingo Filter/Hint>>\n{{$:/plugins/danielo/encryptTiddler/language/batch}}\n\n<$linkcatcher to=\"$:/temp/encrypt/filter\">\n\n<div class=\"tc-search tc-advanced-search\">\n<$edit-text tiddler=\"$:/temp/encrypt/filter\" type=\"search\" tag=\"input\" default=\"\" placeholder=\"filter tiddlers\"/>\n<$button popup=<<qualify \"$:/state/filterDropdown\">> class=\"tc-btn-invisible\">\n{{$:/core/images/down-arrow}}\n</$button>\n<$reveal state=\"$:/temp/encrypt/filter\" type=\"nomatch\" text=\"\">\n<$button class=\"tc-btn-invisible\">\n<$action-setfield $tiddler=\"$:/temp/encrypt/filter\" $field=\"text\" $value=\"\"/>\n{{$:/core/images/close-button}}\n</$button>\n\n\n<$edit-text tag=\"input\" tiddler=\"$:/temp/password\" placeholder=\"password\" type=\"password\" default=\"\" col=\"4\"/><$encryptTiddler passwordTiddler=\"$:/temp/password\" filter={{$:/temp/encrypt/filter}}>\n<$button message=\"tw-encrypt-tiddler\">\nEncrypt\n</$button>\n<$button message=\"tw-decrypt-tiddler\">\nDecrypt\n</$button>\n</$encryptTiddler>\n</$reveal>\n</div>\n\n<div class=\"tc-block-dropdown-wrapper\">\n<$reveal state=<<qualify \"$:/state/filterDropdown\">> type=\"nomatch\" text=\"\" default=\"\">\n<div class=\"tc-block-dropdown tc-edit-type-dropdown\">\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/Filter]!sort[]] -[[$:/core/Filters/SystemTags]] -[[$:/core/Filters/AllTags]]\"><$link to={{!!filter}}><$transclude field=\"description\"/></$link>\n</$list>\n</div>\n</$reveal>\n</div>\n\n</$linkcatcher>\n\n<$reveal state=\"$:/temp/encrypt/filter\" type=\"nomatch\" text=\"\">\n<$set name=\"resultCount\" value=\"\"\"<$count filter={{$:/temp/encrypt/filter}}/>\"\"\">\n<div class=\"tc-search-results\">\n<<lingo Filter/Matches>>\n<$list filter={{$:/temp/encrypt/filter}} template=\"$:/plugins/danielo/encryptTiddler/ui/listItemTemplate\"/>\n</div>\n</$set>\n</$reveal>"
        },
        "$:/plugins/danielo/encryptTiddler/control-panel": {
            "title": "$:/plugins/danielo/encryptTiddler/control-panel",
            "tags": "$:/tags/ControlPanel",
            "caption": "Encrypt Tiddlers",
            "text": "\\define prefix(name) $:/plugins/danielo/encryptTiddler/control-panel/$name$\n\n<$macrocall $name=\"tabs\" tabsList=\"[all[shadows+tiddlers]prefix[$:/plugins/danielo/encryptTiddler/control-panel/]]\" default=<<prefix \"batch-encrypt\">> state=\"$:/state/encryptTiddler/control-panel/tabs\">>"
        },
        "$:/plugins/danielo/encryptTiddler/crypt-batch-button": {
            "creator": "Danielo",
            "title": "$:/plugins/danielo/encryptTiddler/crypt-batch-button",
            "text": "<span title=\"Encrypt/Decrypt tiddler\" class=\"pc-batch-controls\">\n<$reveal state=<<qualify \"$:/state/encrypt\">> type=\"nomatch\" text={{!!title}} animate=\"no\"><$button set=<<qualify \"$:/state/encrypt\">> setTo={{!!title}} class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal><$reveal state=<<qualify \"$:/state/encrypt\">> type=\"match\" text={{!!title}} animate=\"no\"><$button set=<<qualify \"$:/state/encrypt\">> setTo=\"\" class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal>\n<$encryptTiddler passwordTiddler=\"$:/temp/password\" filter={{$:/temp/encrypt/filter}}><$reveal state=<<qualify \"$:/state/encrypt\">> type=\"match\" text={{!!title}} animate=\"yes\">\n<div class=\"tc-block-dropdown tw-crypt-dropdown\">\n<span class=\"tw-password-field\"><$edit-text tiddler=\"$:/temp/password\" tag=\"input\" type=\"password\" default=\"\" placeholder=\"password\" class=\"tc-edit-texteditor\"/></span>\n<span class=\"tw-crypt-button\"> <$button message=\"tw-encrypt-tiddler\"  set=<<qualify \"$:/state/encrypt\">> setTo=\"\" >Encrypt</$button> <$button message=\"tw-decrypt-tiddler\" set=<<qualify \"$:/state/encrypt\">> setTo=\"\" >Decrypt</$button></span>\n</div>\n</$reveal></$encryptTiddler>\n</span>"
        },
        "$:/plugins/danielo/encryptTiddler/crypt-button": {
            "created": "20140405233000477",
            "creator": "Danielo",
            "modified": "20140608121335075",
            "tags": "$:/tags/ViewToolbar button encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/crypt-button",
            "type": "text/vnd.tiddlywiki",
            "text": "<span title=\"Encrypt/Decrypt tiddler\"><$transclude tiddler=\"$:/plugins/danielo/encryptTiddler/openPopup\"/>\n</span><$encryptTiddler passwordTiddler=\"$:/temp/password\"><$reveal state=\"$:/state/encrypt\" type=\"match\" text={{!!title}} animate=\"yes\">\n<div class=\"tc-block-dropdown tw-crypt-dropdown\">\n<span class=\"tw-password-field\"><$edit-text tiddler=\"$:/temp/password\" tag=\"input\" type=\"password\" default=\"\" placeholder=\"password\" class=\"tc-edit-texteditor\"/></span>\n<span class=\"tw-crypt-button\"> <$list filter=\"[all[current]!has[encrypted]]\"> <$button message=\"tw-encrypt-tiddler\"  set=\"$:/state/encrypt\" setTo=\"\" >Encrypt</$button></$list><$list filter=\"[is[current]has[encrypted]]\"> <$button message=\"tw-decrypt-tiddler\" set=\"$:/state/encrypt\" setTo=\"\" >Decrypt</$button></$list></span>\n</div>\n</$reveal></$encryptTiddler>\n"
        },
        "$:/plugins/danielo/encryptTiddler/Encrypt-Tiddler": {
            "created": "20140406153742691",
            "creator": "pepito",
            "description": "add the hability to encrypt individual tiddlers",
            "modified": "20141029152631265",
            "modifier": "Danielo Rodriguez",
            "tags": "index plugins",
            "title": "$:/plugins/danielo/encryptTiddler/Encrypt-Tiddler",
            "type": "text/vnd.tiddlywiki",
            "caption": "readme",
            "text": "This plugin adds the ability to encrypt your tiddlers individually. This have several advantages:\n\n* You can specify a different password for each tiddler if you want.\n* You don't have to encrypt your whole wiky.\n* If you forget your password, you only lose a tiddler.\n* It's possible to edit the tiddler content , tags and fields ''except the encrypt field'' after encryption. Decrypting your tiddler will restore it to its original state when you encrypted it. This way you can hide the encrypted tiddlers as a \"different\" thing.\n* You can even encrypt images.\n* You can have sensible data in a day to day wiky.\n* I didn't try this, but theoretically you can apply double encryption by encrypting your wiki too."
        },
        "$:/plugins/danielo/encryptTiddler/encrypttiddler.js": {
            "text": "/*\\\ntitle: $:/plugins/danielo/encryptTiddler/encrypttiddler.js\ntype: application/javascript\nmodule-type: widget\n\nencrypttiddler widget\n\n```\n\n```\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar encryptTiddlerWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n\tthis.addEventListeners([\n\t\t\t{type: \"tw-encrypt-tiddler\", handler: \"handleEncryptevent\"},\n\t\t\t{type: \"tw-decrypt-tiddler\", handler: \"handleDecryptevent\"},\n\t\t\t]);\n};\n\n/*\nInherit from the base widget class\n*/\nencryptTiddlerWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nencryptTiddlerWidget.prototype.render = function(parent,nextSibling) {\n\tconsole.log(\"Render\");\n\tthis.parentDomNode = parent;\n\tthis.computeAttributes();\n\tthis.execute();\n\tthis.renderChildren(parent,nextSibling);\n};\n\n/*\nCompute the internal state of the widget\n*/\nencryptTiddlerWidget.prototype.execute = function() {\n\t// Get attributes\n\t this.tiddlerTitle=this.getAttribute(\"tiddler\",this.getVariable(\"currentTiddler\"));\n\t this.filter=this.getAttribute(\"filter\",undefined);\n \t this.passwordTiddler=this.getAttribute(\"passwordTiddler\");\n\t// Construct the child widgets\n\tconsole.log(this.targetTiddler);\n\t\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nencryptTiddlerWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.filter) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\treturn this.refreshChildren(changedTiddlers);\n\t}\n};\n\nencryptTiddlerWidget.prototype.getTiddlersToProcess = function(){\n\tif(this.filter){ //we have a filter to work with\n\t\treturn this.wiki.filterTiddlers(this.filter);\n\t}else{ //single tiddler case\n\t\tvar tiddler = this.wiki.getTiddler(this.tiddlerTitle);\n\t\treturn tiddler? [tiddler.fields.title] : [];\n\t}\n};\n\nencryptTiddlerWidget.prototype.handleEncryptevent = function(event){\n\tvar password = this.getPassword();\n\tvar tiddlers = this.getTiddlersToProcess();\n\n\tif(tiddlers.length > 0 && password){\n\t\tvar self = this;\n\t\t$tw.utils.each(tiddlers, function(title){\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tvar fields={text:\"!This is an encrypted Tiddler\",\n\t\t\t\t\t\t\t\t  encrypted:self.encryptFields(title,password)};\n\t\t\tself.saveTiddler(tiddler,fields);\n\t\t});\n\n\t}else{\n\t\tconsole.log(\"We did not find any tiddler to encrypt or password not set!\")\n\t}\n};\n\nencryptTiddlerWidget.prototype.handleDecryptevent = function(event){\n\tvar password =this.getPassword();\n\tvar tiddlers = this.getTiddlersToProcess();\n\n\tif(tiddlers.length > 0 && password){\n\t\tvar self = this;\n\t\t$tw.utils.each(tiddlers, function(title){\n\t\t\tvar tiddler = self.wiki.getTiddler(title);\n\t\t\tvar fields = self.decryptFields(tiddler,password);\n\t\t\tif(fields)self.saveTiddler(tiddler,fields);\n\t\t});\n\t}\n};\n\nencryptTiddlerWidget.prototype.saveTiddler=function(tiddler,fields){\n\tthis.wiki.addTiddler(  new $tw.Tiddler(this.wiki.getModificationFields(),tiddler,this.clearNonStandardFields(tiddler), fields ) )\n}\n\nencryptTiddlerWidget.prototype.encryptFields = function (title,password){\n\tvar jsonData=this.wiki.getTiddlerAsJson(title);\n\treturn $tw.crypto.encrypt(jsonData,password);\n\n};\n\nencryptTiddlerWidget.prototype.decryptFields = function(tiddler,password){\n\t\tvar JSONfields =$tw.crypto.decrypt(tiddler.fields.encrypted,password);\n\t\tif(JSONfields!==null){\n\t\t\treturn JSON.parse(JSONfields);\n\t\t}\n\t\tconsole.log(\"Error decrypting \"+tiddler.fields.title+\". Probably bad password\")\n\t\treturn false\n};\n\nencryptTiddlerWidget.prototype.getPassword = function(){\n\tvar tiddler=this.wiki.getTiddler(this.passwordTiddler);\n\tif(tiddler){\n\t\tvar password=tiddler.fields.text;\n\t\tthis.saveTiddler(tiddler); //reset password tiddler\n\t\treturn password;\n\t}\n\n\treturn false\n};\n\n// This function erases every field of a tiddler that is not standard and also\n// the text field\nencryptTiddlerWidget.prototype.clearNonStandardFields =function(tiddler) {\n\tvar standardFieldNames = \"title tags modified modifier created creator\".split(\" \");\n\t\tvar clearFields = {};\n\t\tfor(var fieldName in tiddler.fields) {\n\t\t\tif(standardFieldNames.indexOf(fieldName) === -1) {\n\t\t\t\tclearFields[fieldName] = undefined;\n\t\t\t}\n\t\t}\n\t\tconsole.log(\"Cleared fields \"+JSON.stringify(clearFields));\n\t\treturn clearFields;\n};\n\nexports.encryptTiddler = encryptTiddlerWidget;\n\n})();",
            "title": "$:/plugins/danielo/encryptTiddler/encrypttiddler.js",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/plugins/danielo/encryptTiddler/Filters/encrypted-tiddlers": {
            "title": "$:/plugins/danielo/encryptTiddler/Filters/encrypted-tiddlers",
            "description": "All encrypted tiddlers",
            "filter": "[has[encrypted]]",
            "tags": "$:/tags/Filter"
        },
        "$:/plugins/danielo/encryptTiddler/Filters/normal-unencrypted-tiddlers": {
            "title": "$:/plugins/danielo/encryptTiddler/Filters/normal-unencrypted-tiddlers",
            "filter": "[!is[system]!has[encrypted]]",
            "description": "Non-encrypted normal tiddlers",
            "tags": "$:/tags/Filter"
        },
        "$:/plugins/danielo/encryptTiddler/language/batch": {
            "title": "$:/plugins/danielo/encryptTiddler/language/batch",
            "text": "Use below controls to encrypt or decrypt a bunch of tiddlers. Encryption ''controls are hidden'' until you type something in the search box. All listed tiddlers will be affected. The presence of a small padlock (<span class=\"pc-listItem-lock\">{{$:/core/images/locked-padlock}}</span>) next to the tiddler title indicates that particular tiddler is already encrypted."
        },
        "$:/plugins/danielo/encryptTiddler/ui/listItemTemplate": {
            "title": "$:/plugins/danielo/encryptTiddler/ui/listItemTemplate",
            "text": "<div class=\"tc-menu-list-item\">\n<$link to={{!!title}}>\n<$view field=\"title\"/>\n<$list filter=\"[all[current]has[encrypted]]\">\n<span class=\"pc-listItem-lock\">{{$:/core/images/locked-padlock}}</span>\n</$list>\n</$link>\n</div>"
        },
        "$:/plugins/danielo/encryptTiddler/openPopup": {
            "created": "20140406151910358",
            "creator": "Danielo",
            "modified": "20140608121417975",
            "modifier": "pepito",
            "tags": "button encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/openPopup",
            "type": "text/vnd.tiddlywiki",
            "text": "<$reveal state=\"$:/state/encrypt\" type=\"nomatch\" text={{!!title}} animate=\"no\"><$button set=\"$:/state/encrypt\" setTo={{!!title}} class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal><$reveal state=\"$:/state/encrypt\" type=\"match\" text={{!!title}} animate=\"no\"><$button set=\"$:/state/encrypt\" setTo=\"\" class=\"tc-btn-invisible\">{{$:/plugins/danielo/encryptTiddler/unlocked}}</$button></$reveal>"
        },
        "$:/plugins/danielo/encryptTiddler/styles": {
            "created": "20140406110705085",
            "creator": "pepito",
            "modified": "20140608121510064",
            "modifier": "pepito",
            "tags": "$:/tags/Stylesheet encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/styles",
            "type": "text/plain",
            "text": ".tw-password-field {\n\tdisplay: inline-block;\n\twidth: 55%;\n  font-size:1em;\n  line-height:0;\n  margin:0;\n\tpadding-left:7%;\n}\n\n.pc-batch-controls .tw-crypt-dropdown{\n\tright: 0px;\n}\n\n.pc-batch-controls{\n\t\tposition:relative;\n}\n\n.pc-listItem-lock svg{\n\theight: 1em;\n\twidth: 1em;\n\tfill: #aaaaaa;\n}\n\n/*It is for use in combination with tc-block-dropdown */\n.tw-crypt-dropdown{\n      line-height:0;\n\t\t\tpadding-left:5px;\n\t\t\t}\n\n.tw-password-field input{\n       font-size:0.5em;\n\n}\n\n.tw-crypt-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n.tw-crypt-button button{\n\tfont-size:0.5em;\n}\n"
        },
        "$:/plugins/danielo/encryptTiddler/unlocked": {
            "created": "20140406101339943",
            "creator": "danielo515",
            "modified": "20140608121532690",
            "modifier": "danielo515",
            "tags": "encrypt export",
            "title": "$:/plugins/danielo/encryptTiddler/unlocked",
            "type": "text/vnd.tiddlywiki",
            "text": "<svg version=\"1.1\" id=\"Capa_1\" xmlns=\"http://www.w3.org/2000/svg\" class=\"tc-image-button\"\n\t viewBox=\"0 0 100 100\" style=\"enable-background:new 0 0 100 100;\" xml:space=\"preserve\">\n<g>\n\t<path d=\"M77.555,50H35.304V31.63c0-4.057,1.435-7.521,4.305-10.391c2.87-2.87,6.333-4.305,10.391-4.305\n\t\tc4.056,0,7.52,1.435,10.39,4.305s4.305,6.335,4.305,10.391c0,0.996,0.363,1.857,1.091,2.583c0.727,0.729,1.588,1.09,2.583,1.09\n\t\th3.674c0.995,0,1.856-0.361,2.583-1.09c0.727-0.727,1.091-1.588,1.091-2.583c0-7.079-2.517-13.136-7.549-18.17\n\t\tC63.136,8.428,57.08,5.912,50,5.912c-7.081,0-13.137,2.516-18.169,7.548c-5.033,5.034-7.549,11.091-7.549,18.17V50h-1.837\n\t\tc-1.531,0-2.833,0.536-3.904,1.608c-1.072,1.072-1.607,2.372-1.607,3.902v33.067c0,1.532,0.535,2.832,1.607,3.904\n\t\tc1.071,1.072,2.372,1.608,3.904,1.608h55.11c1.53,0,2.832-0.536,3.904-1.608c1.071-1.072,1.607-2.372,1.607-3.904V55.51\n\t\tc0-1.529-0.536-2.83-1.607-3.902C80.387,50.536,79.085,50,77.555,50z M54.315,72.937V83.72c0,2.173-1.762,3.935-3.935,3.935H49.62\n\t\tc-2.173,0-3.935-1.762-3.935-3.935V72.937c-2.31-1.443-3.852-4.001-3.852-6.925c0-4.511,3.657-8.167,8.167-8.167\n\t\ts8.167,3.657,8.167,8.167C58.167,68.937,56.625,71.495,54.315,72.937z\"/>\n</g>\n</svg>\n"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/flibbles/relink/js/bulkops.js": {
            "text": "/*\\\nmodule-type: startup\n\nReplaces the relinkTiddler defined in $:/core/modules/wiki-bulkops.js\n\nThis is a startup instead of a wikimethods module-type because it's the only\nway to ensure this runs after the old relinkTiddler method is applied.\n\n\\*/\n(function(){\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\n\nexports.name = \"redefine-relinkTiddler\";\nexports.synchronous = true;\n// load-modules is when wikimethods are applied in\n// ``$:/core/modules/startup/load-modules.js``\nexports.after = ['load-modules'];\n\nexports.startup = function() {\n\t$tw.Wiki.prototype.relinkTiddler = relinkTiddler;\n};\n\n/** Walks through all relinkable tiddlers and relinks them.\n *  This replaces the existing function in core Tiddlywiki.\n */\nfunction relinkTiddler(fromTitle, toTitle, options) {\n\tvar self = this;\n\tvar failures = this.eachRelinkableTiddler(\n\t\t\tfromTitle,\n\t\t\ttoTitle,\n\t\t\toptions,\n\t\t\tfunction(changes, tiddler) {\n\t\tvar newTiddler = new $tw.Tiddler(tiddler,changes,self.getModificationFields())\n\t\tnewTiddler = $tw.hooks.invokeHook(\"th-relinking-tiddler\",newTiddler,tiddler);\n\t\tself.addTiddler(newTiddler);\n\t});\n\tif (failures.length > 0) {\n\t\tlanguage.reportFailures(failures);\n\t}\n};\n\n})();\n",
            "module-type": "startup",
            "title": "$:/plugins/flibbles/relink/js/bulkops.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/errors.js": {
            "text": "/*\\\nmodule-type: library\n\nThis is the exception that gets thrown when a relink is impossible.\n  (Or the hoops we'd have to go through to make it work are more than the user\n   would want Relink to do, like create new tiddlers)\n\\*/\n\nfunction RelinkError() {};\nRelinkError.prototype = Object.create(Error);\nexports.RelinkError = RelinkError;\n\nfunction CannotRelinkError() { };\nCannotRelinkError.prototype = new RelinkError();\nexports.CannotRelinkError = CannotRelinkError\n\nfunction CannotFindMacroDefError(macroName) { this.macroName = macroName; };\nCannotFindMacroDefError.prototype = new RelinkError();\nexports.CannotFindMacroDefError = CannotFindMacroDefError;\n//Cannot find definition for ${macroName}. Make sure your macro whitelist is configured properly, and that you're macro is globally defined, or defined in all the places it's used.\n",
            "module-type": "library",
            "title": "$:/plugins/flibbles/relink/js/errors.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/language.js": {
            "text": "/*\\\nmodule-type: library\n\nThis handles all logging and alerts Relink emits.\n\n\\*/\n\nexports.logRelink = function(message, args, options) {\n\tif (options.quiet) {\n\t\treturn;\n\t}\n\tvar raw = exports.log[message];\n\tif (raw) {\n\t\t// This is cheap, but whatevs. To do a proper\n\t\t// rendering would require working through a wiki\n\t\t// object. Too heavy weight for log messages.\n\t\tvar msg = raw.replace(/<<([^<>]+)>>/g, function(match, key) {\n\t\t\treturn args[key] || (\"<<\"+key+\">>\");\n\t\t});\n\t\tif (raw.indexOf('%c') >= 0) {\n\t\t\t// Doing a little bit of bold so the user sees\n\t\t\t// where we had to jump through hoops.\n\t\t\tconsole.log(\"%c\" + msg, \"\", \"font-weight: bold;\");\n\t\t} else {\n\t\t\tconsole.log(msg);\n\t\t}\n\t} else {\n\t\tconsole.warn(\"No such log message: \" + message);\n\t}\n};\n\nexports.getString = function(title, options) {\n\ttitle = \"$:/plugins/flibbles/relink/language/\" + title;\n\treturn options.wiki.renderTiddler(\"text/plain\", title,\n\t                                  {variables: options.variables});\n};\n\nexports.failureAlert = \"Relink was unable to update the following tiddlers due to the complexity of the title:\";\n\nexports.reportFailures = function(failureList) {\n\tvar reportList = failureList.map(function(f) {return \"\\n   \" + f});\n\tconsole.warn(exports.failureAlert + reportList);\n};\n\nexports.log = {\n\t\"attribute\": \"Renaming '<<from>>' to '<<to>>' in <<<element>> <<attribute>> /> attribute of tiddler '<<tiddler>>'\",\n\t\"attribute-placeholder\": \"Renaming '<<from>>' to '<<to>>' in <<<element>> <<attribute>> /> attribute of tiddler '<<tiddler>>' %cby creating placeholder macros\",\n\t\"field\": \"Renaming '<<from>>' to '<<to>>' in <<field>> of tiddler '<<tiddler>>'\",\n\t\"filteredtransclude\": \"Renaming '<<from>>' to '<<to>>' in filtered transclusion of tiddler '<<tiddler>>'\",\n\t\"filteredtransclude-placeholder\": \"Renaming '<<from>>' to '<<to>>' in filtered transclusion of tiddler '<<tiddler>>' %cby creating placeholder macros\",\n\t\"filteredtransclude-placeholder-widget\": \"Renaming '<<from>>' to '<<to>>' in filtered transclusion of tiddler '<<tiddler>>' %cby converting it into a widget and creating placeholder macros\",\n\t\"filteredtransclude-widget\": \"Renaming '<<from>>' to '<<to>>' in filtered transclusion of tiddler '<<tiddler>>' %cby converting it into a widget\",\n\t\"image\": \"Renaming '<<from>>' to '<<to>>' in image of tiddler '<<tiddler>>'\",\n\t\"image-placeholder-widget\": \"Renaming '<<from>>' to '<<to>>' in image of tiddler '<<tiddler>>' %cby converting it into a widget and creating placeholder macros\",\n\t\"image-widget\": \"Renaming '<<from>>' to '<<to>>' in image of tiddler '<<tiddler>>' %cby converting it into a widget\",\n\t\"import\": \"Renaming '<<from>>' to '<<to>>' in \\\\import filter of tiddler '<<tiddler>>'\",\n\t\"import-placeholder\": \"Renaming '<<from>>' to '<<to>>' in \\\\import filter of tiddler '<<tiddler>>' %cby creating placeholder macros\",\n\t\"macrodef\": \"Renaming '<<from>>' to '<<to>>' in <<macro>> definition of tiddler '<<tiddler>>'\",\n\t\"macrodef-placeholder\": \"Renaming '<<from>>' to '<<to>>' in <<macro>> definition of tiddler '<<tiddler>>' %cby creating more placeholder macros\",\n\t\"prettylink\": \"Renaming '<<from>>' to '<<to>>' in prettylink of tiddler '<<tiddler>>'\",\n\t\"prettylink-placeholder\": \"Renaming '<<from>>' to '<<to>>' in prettylink of tiddler '<<tiddler>>' %cby converting it into a widget and creating placeholder macros\",\n\t\"prettylink-widget\": \"Renaming '<<from>>' to '<<to>>' in prettylink of tiddler '<<tiddler>>' %cby converting it into a widget\",\n\t\"transclude\": \"Renaming '<<from>>' to '<<to>>' in transclusion of tiddler '<<tiddler>>'\",\n\t\"transclude-placeholder\": \"Renaming '<<from>>' to '<<to>>' in transclusion of tiddler '<<tiddler>>' %cby converting it into a widget and creating placeholder macros\",\n\t\"transclude-widget\": \"Renaming '<<from>>' to '<<to>>' in transclusion of tiddler '<<tiddler>>' %cby converting it into a widget\",\n\t\"wikilink\": \"Renaming '<<from>>' to '<<to>>' in CamelCase link of tiddler '<<tiddler>>'\",\n\t\"wikilink-placeholder\": \"Renaming '<<from>>' to '<<to>>' in CamelCase link of tiddler '<<tiddler>>' %cby converting it into a widget and creating placeholder macros\",\n\t\"wikilink-pretty\": \"Renaming '<<from>>' to '<<to>>' in CamelCase link of tiddler '<<tiddler>>' %cby converting it into a prettylink\"\n};\n",
            "module-type": "library",
            "title": "$:/plugins/flibbles/relink/js/language.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/settings.js": {
            "text": "/*\\\nmodule-type: library\n\nThis handles the fetching and distribution of relink settings.\n\n\\*/\n\nvar fieldTypes = Object.create(null);\n\n$tw.modules.forEachModuleOfType(\"relinkfieldtype\", function(title, exports) {\n\tfieldTypes[exports.name] = exports;\n\t// For legacy reasons, some of the field types can go by other names\n\tif (exports.aliases) {\n\t\t$tw.utils.each(exports.aliases, function(alias) {\n\t\t\tfieldTypes[alias] = exports;\n\t\t});\n\t}\n});\n\n/**Returns a specific relinker.\n * This is useful for wikitext rules which need to parse a filter or a list\n */\nexports.getRelinker = function(name) {\n\treturn fieldTypes[name];\n};\n\nexports.getAttributes = function(options) {\n\treturn getSettings(options).attributes;\n};\n\nexports.getFields = function(options) {\n\treturn getSettings(options).fields;\n};\n\nexports.getMacros = function(options) {\n\treturn getSettings(options).macros;\n};\n\nexports.getOperators = function(options) {\n\treturn getSettings(options).operators;\n};\n\n/**Factories define methods that create settings given config tiddlers.\n * for factory method 'example', it will be called once for each:\n * \"$:/config/flibbles/relink/example/...\" tiddler that exists.\n * the argument \"key\" will be set to the contents of \"...\"\n *\n * The reason I build relink settings in this convoluted way is to minimize\n * the number of times tiddlywiki has to run through EVERY tiddler looking\n * for relink config tiddlers.\n *\n * Also, by exporting \"factories\", anyone who extends relink can patch in\n * their own factory methods to create settings that are generated exactly\n * once per rename.\n */\nexports.factories = {\n\tattributes: function(attributes, tiddler, key) {\n\t\tvar relinker = fieldTypes[tiddler.fields.text];\n\t\tif (relinker) {\n\t\t\tvar elem = root(key);\n\t\t\tvar attr = key.substr(elem.length+1);\n\t\t\tattributes[elem] = attributes[elem] || Object.create(null);\n\t\t\tattributes[elem][attr] = relinker;\n\t\t}\n\t},\n\tfields: function(fields, tiddler, name) {\n\t\tvar relinker = fieldTypes[tiddler.fields.text];\n\t\tif (relinker) {\n\t\t\tfields[name] = relinker;\n\t\t}\n\t},\n\tmacros: function(macros, tiddler, key) {\n\t\tvar relinker = fieldTypes[tiddler.fields.text];\n\t\tif (relinker) {\n\t\t\t// We take the last index, not the first, because macro\n\t\t\t// parameters can't have slashes, but macroNames can.\n\t\t\tvar name = dir(key);\n\t\t\tvar arg = key.substr(name.length+1);\n\t\t\tmacros[name] = macros[name] || Object.create(null);\n\t\t\tmacros[name][arg] = relinker;\n\t\t}\n\t},\n\toperators: function(operators, tiddler, name) {\n\t\tvar relinker = fieldTypes[tiddler.fields.text];\n\t\tif (relinker) {\n\t\t\toperators[name] = relinker;\n\t\t}\n\t}\n};\n\n/**We're caching the generated settings inside of options. Not exactly how\n * options was meant to be used, but it's fiiiiine.\n * The wiki global cache isn't a great place, because it'll get cleared many\n * times during a bulk relinking operation, and we can't recalculate this every\n * time without exploding a rename operation's time.\n * options works great. It only lasts just as long as the rename.\n * No longer, no shorter.\n */\nfunction getSettings(options) {\n\tvar secretCache = \"__relink_settings\";\n\tvar cache = options[secretCache];\n\tif (cache === undefined) {\n\t\tcache = options[secretCache] = compileSettings(options.wiki);\n\t}\n\treturn cache;\n};\n\nfunction compileSettings(wiki) {\n\tvar prefix = \"$:/config/flibbles/relink/\";\n\tvar settings = Object.create(null);\n\tfor (var name in exports.factories) {\n\t\tsettings[name] = Object.create(null);\n\t}\n\twiki.eachShadowPlusTiddlers(function(tiddler, title) {\n\t\tif (title.substr(0, prefix.length) === prefix) {\n\t\t\tvar remainder = title.substr(prefix.length);\n\t\t\tvar category = root(remainder);\n\t\t\tvar factory = exports.factories[category];\n\t\t\tif (factory) {\n\t\t\t\tvar name = remainder.substr(category.length+1);\n\t\t\t\tfactory(settings[category], tiddler, name);\n\t\t\t}\n\t\t}\n\t});\n\treturn settings;\n};\n\n/* Returns first bit of a path. path/to/tiddler -> path\n */\nfunction root(string) {\n\tvar index = string.indexOf('/');\n\tif (index >= 0) {\n\t\treturn string.substr(0, index);\n\t}\n};\n\n/* Returns all but the last bit of a path. path/to/tiddler -> path/to\n */\nfunction dir(string) {\n\tvar index = string.lastIndexOf('/');\n\tif (index >= 0) {\n\t\treturn string.substr(0, index);\n\t}\n}\n",
            "module-type": "library",
            "title": "$:/plugins/flibbles/relink/js/settings.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/wikimethods.js": {
            "text": "/*\\\nmodule-type: wikimethod\n\nIntroduces some utility methods used by Relink.\n\n\\*/\n\nvar errors = require('$:/plugins/flibbles/relink/js/errors');\n\nvar relinkOperations = Object.create(null);\n$tw.modules.applyMethods('relinkoperator', relinkOperations);\n\n/**Walks through all non-shadow tiddlers and sees which ones need to be relinked\n *\n * For each one, calls method on it with arguments (changes, tiddler, title)\n * Returns a list of tiddlers it would fail to update.\n */\nexports.eachRelinkableTiddler = function(fromTitle, toTitle, options, method) {\n\tvar data = this.getRelinkableTiddlers(fromTitle, toTitle, options);\n\tfor (var title in data.changes) {\n\t\tmethod(data.changes[title], this.getTiddler(title), title);\n\t}\n\treturn data.failures;\n};\n\n/** Returns a pair like this,\n *  { changes: {...}, failures: [] }\n */\nexports.getRelinkableTiddlers = function(fromTitle, toTitle, options) {\n\tvar cache = this.getGlobalCache(\"relink-\"+fromTitle, function() {\n\t\treturn Object.create(null);\n\t});\n\tif (!cache[toTitle]) {\n\t\tcache[toTitle] = getFreshRelinkableTiddlers(this, fromTitle, toTitle, options);\n\t}\n\treturn cache[toTitle];\n};\n\nfunction getFreshRelinkableTiddlers(wiki, fromTitle, toTitle, options) {\n\toptions = options || {};\n\toptions.wiki = options.wiki || wiki;\n\tfromTitle = (fromTitle || \"\").trim();\n\ttoTitle = (toTitle || \"\").trim();\n\tvar failures = [];\n\tvar changeList = Object.create(null);\n\tif(fromTitle && toTitle && fromTitle !== toTitle) {\n\t\tvar toUpdate = getRelinkFilter(wiki);\n\t\tvar tiddlerList = toUpdate.call(wiki); // no source or widget\n\t\tfor (var i = 0; i < tiddlerList.length; i++) {\n\t\t\tvar title = tiddlerList[i];\n\t\t\tvar tiddler = wiki.getTiddler(title);\n\t\t\t// Don't touch plugins or JavaScript modules\n\t\t\tif(tiddler\n\t\t\t&& !tiddler.fields[\"plugin-type\"]\n\t\t\t&& tiddler.fields.type !== \"application/javascript\") {\n\t\t\t\ttry {\n\t\t\t\t\tvar changes = Object.create(null);\n\t\t\t\t\tfor (var operation in relinkOperations) {\n\t\t\t\t\t\trelinkOperations[operation](tiddler, fromTitle, toTitle, changes, options);\n\t\t\t\t\t}\n\t\t\t\t\t// If any fields changed, update tiddler\n\t\t\t\t\tif(Object.keys(changes).length > 0) {\n\t\t\t\t\t\tchangeList[title] = changes;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {\n\t\t\t\t\tif (e instanceof errors.RelinkError) {\n\t\t\t\t\t\tfailures.push(title);\n\t\t\t\t\t} else {\n\t\t\t\t\t\t// Should we test for instanceof Error instead?: yes\n\t\t\t\t\t\t// Does that work in the testing environment?: no\n\t\t\t\t\t\tif (e.message) {\n\t\t\t\t\t\t\te.message = e.message + \"\\nWhen relinking '\" + title + \"'\";\n\t\t\t\t\t\t}\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn {changes: changeList, failures: failures};\n};\n\nfunction getRelinkFilter(wiki) {\n\tvar toUpdate = \"$:/config/flibbles/relink/to-update\";\n\treturn wiki.getCacheForTiddler(toUpdate, \"relink-toUpdate\", function() {\n\t\tvar tiddler = wiki.getTiddler(toUpdate);\n\t\tif (tiddler) {\n\t\t\tvar filter = wiki.compileFilter(tiddler.fields.text);\n\t\t\treturn filter;\n\t\t} else {\n\t\t\treturn wiki.allTitles;\n\t\t}\n\t});\n};\n\n/**Returns a list of tiddlers that would be renamed by a relink operations.\n */\nexports.relinkTiddlerDryRun = function(fromTitle, toTitle, options) {\n\tvar results = [];\n\tthis.eachRelinkableTiddler(\n\t\t\tfromTitle,\n\t\t\ttoTitle,\n\t\t\toptions,\n\t\t\tfunction(changes, tiddler, title) {\n\t\tresults.push(title);\n\t});\n\treturn results;\n};\n\nvar ImportVariablesWidget = require(\"$:/core/modules/widgets/importvariables.js\").importvariables;\n\nexports.relinkGlobalMacros = function() {\n\tif (!this._relinkWidget) {\n\t\tvar importWidget = this.relinkGenerateVariableWidget( \"[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]\");\n\t\tthis.addEventListener(\"change\", function(changes) {\n\t\t\timportWidget.refresh(changes);\n\t\t});\n\t\tthis._relinkWidget = importWidget;\n\t}\n\tvar rtn = this._relinkWidget;\n\twhile (rtn.children.length > 0) {\n\t\trtn = rtn.children[0];\n\t}\n\treturn rtn;\n};\n\nexports.relinkGenerateVariableWidget = function(filter, parent) {\n\tvar treeNode = { attributes: {\n\t\t\"filter\": {\n\t\t\ttype: \"string\",\n\t\t\tvalue: filter\n\t\t}\n\t}};\n\tvar importWidget = new ImportVariablesWidget(treeNode,{parentWidget: parent, wiki: this});\n\timportWidget.computeAttributes();\n\timportWidget.execute();\n\t// These two functions neuter the widget, so it never tries\n\t// to render.\n\timportWidget.findNextSiblingDomNode = function() {};\n\timportWidget.renderChildren(this.parentDomNode);\n\treturn importWidget;\n};\n",
            "module-type": "wikimethod",
            "title": "$:/plugins/flibbles/relink/js/wikimethods.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/filteroperators/impossible.js": {
            "text": "/*\\\nmodule-type: relinkfilteroperator\n\nGiven an input of toTitles, (probably just one), outputs all the tiddlers in\nwhich Relink would fail to update the operand to any of those given titles.\n\n`[[{terrible'}!!\"title\"]relink:impossible[fromTiddler]]`\n\nWould output all the tiddlers where Relink would fail to update `from here` to\n`{terrible'}!!\"title\"`\n\nI know, it's weird. You'd think it would test all incoming inputs instead of\nusing them as to fromTitle, but this is the only way to input both a fromTitle\nand a toTitle.\n\nResults are dominantly appanded if more than one input tiddler is given.\n\\*/\n\nexports.impossible = function(source,operator,options) {\n\tvar fromTitle = operator.operand,\n\t\tresults = [];\n\tif (fromTitle) {\n\t\tsource(function(toTiddler, toTitle) {\n\t\t\tvar fails = options.wiki.eachRelinkableTiddler(\n\t\t\t\tfromTitle, toTitle,\n\t\t\t\t$tw.utils.extend({quiet: true}, options),\n\t\t\t\tfunction(tiddler, title) {});\n\t\t\t$tw.utils.pushTop(results, fails);\n\t\t});\n\t}\n\treturn results;\n};\n",
            "module-type": "relinkfilteroperator",
            "title": "$:/plugins/flibbles/relink/js/filteroperators/impossible.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/filteroperators/references.js": {
            "text": "/*\\\nmodule-type: relinkfilteroperator\n\nGiven a title as an operand, returns all non-shadow tiddlers that have any\nsort of updatable reference to it.\n\n\n`relink:references[fromTiddler]]`\n\nReturns all tiddlers that reference `fromTiddler` somewhere inside them.\n\nInput is ignored. Maybe it shouldn't do this.\nAlso, maybe it should properly recon, instead of fake replacing the title with\n`__relink_dummy__`\n\\*/\n\nexports.references = function(source,operator,options) {\n\tvar fromTitle = operator.operand,\n\t\tresults = [];\n\tif (fromTitle) {\n\t\toptions.wiki.eachRelinkableTiddler(\n\t\t\tfromTitle, \"__relink_dummy__\",\n\t\t\t$tw.utils.extend({quiet: true}, options),\n\t\t\tfunction(changes, tiddler, title) {\n\t\t\t\tresults.push(title);\n\t\t\t});\n\t}\n\treturn results;\n};\n",
            "module-type": "relinkfilteroperator",
            "title": "$:/plugins/flibbles/relink/js/filteroperators/references.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/filteroperators/relink.js": {
            "text": "/*\\\nmodule-type: filteroperator\n\nThis filter acts as a namespace for several small, simple filters, such as\n\n`[relink:impossible[]]`\n\n\\*/\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar language = require('$:/plugins/flibbles/relink/js/language.js');\n\nvar relinkFilterOperators;\n\nfunction getRelinkFilterOperators() {\n\tif(!relinkFilterOperators) {\n\t\trelinkFilterOperators = {};\n\t\t$tw.modules.applyMethods(\"relinkfilteroperator\",\n\t\t                         relinkFilterOperators);\n\t}\n\treturn relinkFilterOperators;\n}\n\nexports.relink = function(source,operator,options) {\n\tvar suffixPair = parseSuffix(operator.suffix);\n\tvar relinkFilterOperator = getRelinkFilterOperators()[suffixPair[0]];\n\tif (relinkFilterOperator) {\n\t\tvar newOperator = $tw.utils.extend({}, operator);\n\t\tnewOperator.suffix = suffixPair[1];\n\t\treturn relinkFilterOperator(source, newOperator, options);\n\t} else {\n\t\treturn [language.getString(\"Error/RelinkFilterOperator\", options)];\n\t}\n};\n\nfunction parseSuffix(suffix) {\n\tvar index = suffix? suffix.indexOf(\":\"): -1;\n\tif (index >= 0) {\n\t\treturn [suffix.substr(0, index), suffix.substr(index+1)];\n\t} else {\n\t\treturn [suffix];\n\t}\n}\n",
            "module-type": "filteroperator",
            "title": "$:/plugins/flibbles/relink/js/filteroperators/relink.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/filteroperators/splitafter.js": {
            "text": "/*\\\ntitle: $:/core/modules/filters/splitbefore.js\ntype: application/javascript\nmodule-type: relinkfilteroperator\n\nFilter operator that splits each result on the last occurance of the specified separator and returns the last bit.\n\nWhat does this have to do with relink? Nothing. I need this so I can render\nthe configuration menu. I //could// use [splitregexp[]], but then I'd be\nlimited to Tiddlywiki v5.1.20 or later.\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n/*\nExport our filter function\n*/\nexports.splitafter = function(source,operator,options) {\n\tvar results = [];\n\tsource(function(tiddler,title) {\n\t\tvar index = title.lastIndexOf(operator.operand);\n\t\tif(index < 0) {\n\t\t\t$tw.utils.pushTop(results,title);\n\t\t} else {\n\t\t\t$tw.utils.pushTop(results,title.substr(index+1));\n\t\t}\n\t});\n\treturn results;\n};\n\n})();\n\n",
            "title": "$:/plugins/flibbles/relink/js/filteroperators/splitafter.js",
            "type": "application/javascript",
            "module-type": "relinkfilteroperator"
        },
        "$:/plugins/flibbles/relink/js/fieldtypes/filter.js": {
            "text": "/*\\\nThis specifies logic for updating filters to reflect title changes.\n\\*/\n\n/**Returns undefined if no change was made.\n */\n\nvar CannotRelinkError = require(\"$:/plugins/flibbles/relink/js/errors.js\").CannotRelinkError;\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar settings = require('$:/plugins/flibbles/relink/js/settings.js');\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\n\nexports.name = \"filter\";\n\nexports.relink = function(filter, fromTitle, toTitle, options) {\n\tif (!filter || filter.indexOf(fromTitle) < 0) {\n\t\treturn undefined;\n\t}\n\tvar relinker = new Rebuilder(filter);\n\tvar whitelist = settings.getOperators(options);\n\tvar p = 0, // Current position in the filter string\n\t\tmatch, noPrecedingWordBarrier,\n\t\twordBarrierRequired=false;\n\tvar whitespaceRegExp = /\\s+/mg,\n\t\toperandRegExp = /((?:\\+|\\-|~|=)?)(?:(\\[)|(?:\"([^\"]*)\")|(?:'([^']*)')|([^\\s\\[\\]]+))/mg;\n\twhile(p < filter.length) {\n\t\t// Skip any whitespace\n\t\twhitespaceRegExp.lastIndex = p;\n\t\tmatch = whitespaceRegExp.exec(filter);\n\t\tnoPrecedingWordBarrier = false;\n\t\tif(match && match.index === p) {\n\t\t\tp = p + match[0].length;\n\t\t} else if (p != 0) {\n\t\t\tif (wordBarrierRequired) {\n\t\t\t\trelinker.add(' ', p, p);\n\t\t\t\twordBarrierRequired = false;\n\t\t\t} else {\n\t\t\t\tnoPrecedingWordBarrier = true;\n\t\t\t}\n\t\t}\n\t\t// Match the start of the operation\n\t\tif(p < filter.length) {\n\t\t\tvar val;\n\t\t\toperandRegExp.lastIndex = p;\n\t\t\tmatch = operandRegExp.exec(filter);\n\t\t\tif(!match || match.index !== p) {\n\t\t\t\t// It's a bad filter\n\t\t\t\treturn undefined;\n\t\t\t}\n\t\t\tif(match[1]) { // prefix\n\t\t\t\tp++;\n\t\t\t}\n\t\t\tif(match[2]) { // Opening square bracket\n\t\t\t\t// We check if this is a standalone title,\n\t\t\t\t// like `[[MyTitle]]`. We treat those like\n\t\t\t\t// `\"MyTitle\"` or `MyTitle`. Not like a run.\n\t\t\t\tvar standaloneTitle = /\\[\\[([^\\]]+)\\]\\]/g;\n\t\t\t\tstandaloneTitle.lastIndex = p;\n\t\t\t\tvar alone = standaloneTitle.exec(filter);\n\t\t\t\tif (!alone || alone.index != p) {\n\t\t\t\t\t// It's a legit run\n\t\t\t\t\tp =parseFilterOperation(relinker,fromTitle,toTitle,filter,p,whitelist,options);\n\t\t\t\t\tif (p === undefined) {\n\t\t\t\t\t\t// The filter is malformed\n\t\t\t\t\t\t// We do nothing.\n\t\t\t\t\t\treturn undefined;\n\t\t\t\t\t}\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tbracketTitle = alone[1];\n\t\t\t\toperandRegExp.lastIndex = standaloneTitle.lastIndex;\n\t\t\t\tval = alone[1];\n\t\t\t} else {\n\t\t\t\t// standalone Double quoted string, single\n\t\t\t\t// quoted string, or noquote ahead.\n\t\t\t\tval = match[3] || match[4] || match[5];\n\t\t\t}\n\t\t\t// From here on, we're dealing with a standalone title\n\t\t\t// expression. like `\"MyTitle\"` or `[[MyTitle]]`\n\t\t\t// We're much more flexible about relinking these.\n\t\t\tvar preference = undefined;\n\t\t\tif (match[3]) {\n\t\t\t\tpreference = '\"';\n\t\t\t} else if (match[4]) {\n\t\t\t\tpreference = \"'\";\n\t\t\t} else if (match[5]) {\n\t\t\t\tpreference = '';\n\t\t\t}\n\t\t\tif (val === fromTitle) {\n\t\t\t\tvar newVal = wrapTitle(toTitle, preference);\n\t\t\t\tif (newVal === undefined) {\n\t\t\t\t\tif (!options.placeholder) {\n\t\t\t\t\t\tthrow new CannotRelinkError();\n\t\t\t\t\t}\n\t\t\t\t\tnewVal = \"[<\"+options.placeholder.getPlaceholderFor(toTitle)+\">]\";\n\t\t\t\t\toptions.usedPlaceholder = true;\n\t\t\t\t}\n\t\t\t\tif (newVal[0] != '[') {\n\t\t\t\t\t// not bracket enclosed\n\t\t\t\t\t// this requires whitespace\n\t\t\t\t\t// arnound it\n\t\t\t\t\tif (noPrecedingWordBarrier && !match[1]) {\n\t\t\t\t\t\trelinker.add(' ', p, p);\n\t\t\t\t\t}\n\t\t\t\t\twordBarrierRequired = true;\n\t\t\t\t}\n\t\t\t\trelinker.add(newVal,p,operandRegExp.lastIndex);\n\t\t\t}\n\t\t\tp = operandRegExp.lastIndex;\n\t\t}\n\t}\n\treturn relinker.results();\n};\n\nfunction wrapTitle(value, preference) {\n\tvar choices = {\n\t\t\"\": function(v) {return !/[\\s\\[\\]]/.test(v); },\n\t\t\"[\": canBePrettyOperand,\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; }\n\t};\n\tvar wrappers = {\n\t\t\"\": function(v) {return v; },\n\t\t\"[\": function(v) {return \"[[\"+v+\"]]\"; },\n\t\t\"'\": function(v) {return \"'\"+v+\"'\"; },\n\t\t'\"': function(v) {return '\"'+v+'\"'; }\n\t};\n\tif (choices[preference]) {\n\t\tif (choices[preference](value)) {\n\t\t\treturn wrappers[preference](value);\n\t\t}\n\t}\n\tfor (var quote in choices) {\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrappers[quote](value);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n}\n\nfunction parseFilterOperation(relinker, fromTitle, toTitle, filterString, p, whitelist, options) {\n\tvar nextBracketPos, operator;\n\t// Skip the starting square bracket\n\tif(filterString.charAt(p++) !== \"[\") {\n\t\t// Missing [ in filter expression\n\t\treturn undefined;\n\t}\n\t// Process each operator in turn\n\tdo {\n\t\toperator = {};\n\t\t// Check for an operator prefix\n\t\tif(filterString.charAt(p) === \"!\") {\n\t\t\tp++;\n\t\t}\n\t\t// Get the operator name\n\t\tnextBracketPos = filterString.substring(p).search(/[\\[\\{<\\/]/);\n\t\tif(nextBracketPos === -1) {\n\t\t\t// Missing [ in filter expression\n\t\t\treturn undefined;\n\t\t}\n\t\tnextBracketPos += p;\n\t\tvar bracket = filterString.charAt(nextBracketPos);\n\t\toperator.operator = filterString.substring(p,nextBracketPos);\n\n\t\t// Any suffix?\n\t\tvar colon = operator.operator.indexOf(':');\n\t\tif(colon > -1) {\n\t\t\toperator.suffix = operator.operator.substring(colon + 1);\n\t\t\toperator.operator = operator.operator.substring(0,colon) || \"field\";\n\t\t}\n\t\t// Empty operator means: title\n\t\telse if(operator.operator === \"\") {\n\t\t\toperator.operator = \"title\";\n\t\t}\n\n\t\tp = nextBracketPos + 1;\n\t\tswitch (bracket) {\n\t\t\tcase \"{\": // Curly brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"}\",p);\n\t\t\t\tvar operand = filterString.substring(p,nextBracketPos);\n\t\t\t\tvar ref = $tw.utils.parseTextReference(operand);\n\t\t\t\tif (ref.title === fromTitle) {\n\t\t\t\t\tif(!canBePrettyIndirect(toTitle)) {\n\t\t\t\t\t\tthrow new CannotRelinkError();\n\t\t\t\t\t}\n\t\t\t\t\tref.title = toTitle;\n\t\t\t\t\tvar newRef = refHandler.toString(ref);\n\t\t\t\t\t// We don't check the whitelist.\n\t\t\t\t\t// All indirect operands convert.\n\t\t\t\t\trelinker.add(newRef,p,nextBracketPos);\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase \"[\": // Square brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\"]\",p);\n\t\t\t\tvar operand = filterString.substring(p,nextBracketPos);\n\t\t\t\t// Check if this is a relevant operator\n\t\t\t\tvar handler = fieldType(whitelist, operator);\n\t\t\t\tif (!handler) {\n\t\t\t\t\t// This operator isn't managed. Bye.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tvar result = handler.relink(operand, fromTitle, toTitle, options);\n\t\t\t\tif (!result) {\n\t\t\t\t\t// The fromTitle wasn't in the operand.\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\tvar wrapped;\n\t\t\t\tif (!canBePrettyOperand(result)) {\n\t\t\t\t\tif (!options.placeholder) {\n\t\t\t\t\t\tthrow new CannotRelinkError();\n\t\t\t\t\t}\n\t\t\t\t\tvar ph = options.placeholder.getPlaceholderFor(result);\n\t\t\t\t\twrapped = \"<\"+ph+\">\";\n\t\t\t\t\toptions.usedPlaceholder = true;\n\t\t\t\t} else {\n\t\t\t\t\twrapped = \"[\"+result+\"]\";\n\t\t\t\t}\n\t\t\t\trelinker.add(wrapped, p-1, nextBracketPos+1);\n\t\t\t\tbreak;\n\t\t\tcase \"<\": // Angle brackets\n\t\t\t\tnextBracketPos = filterString.indexOf(\">\",p);\n\t\t\t\tbreak;\n\t\t\tcase \"/\": // regexp brackets\n\t\t\t\tvar rex = /^((?:[^\\\\\\/]*|\\\\.)*)\\/(?:\\(([mygi]+)\\))?/g,\n\t\t\t\t\trexMatch = rex.exec(filterString.substring(p));\n\t\t\t\tif(rexMatch) {\n\t\t\t\t\tnextBracketPos = p + rex.lastIndex - 1;\n\t\t\t\t}\n\t\t\t\telse {\n\t\t\t\t\t// Unterminated regular expression\n\t\t\t\t\treturn undefined;\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif(nextBracketPos === -1) {\n\t\t\t// Missing closing bracket in filter expression\n\t\t\t// return undefined;\n\t\t}\n\t\tp = nextBracketPos + 1;\n\n\t} while(filterString.charAt(p) !== \"]\");\n\t// Skip the ending square bracket\n\tif(filterString.charAt(p++) !== \"]\") {\n\t\t// Missing ] in filter expression\n\t\treturn undefined;\n\t}\n\t// Return the parsing position\n\treturn p;\n}\n\n// Returns the relinker needed for a given operator, or returns undefined.\nfunction fieldType(whitelist, operator) {\n\treturn whitelist[operator.operator] ||\n\t       (operator.suffix &&\n\t        whitelist[operator.operator + \":\" + operator.suffix]);\n};\n\nfunction canBePrettyOperand(value) {\n\treturn value.indexOf(']') < 0;\n};\n\nfunction canBePrettyIndirect(value) {\n\treturn value.indexOf('}') < 0;\n};\n",
            "module-type": "relinkfieldtype",
            "title": "$:/plugins/flibbles/relink/js/fieldtypes/filter.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/fieldtypes/list.js": {
            "text": "/*\\\nThis manages replacing titles that occur within stringLists, like,\n\nTiddlerA [[Tiddler with spaces]] [[Another Title]]\n\\*/\n\nvar CannotRelinkError = require(\"$:/plugins/flibbles/relink/js/errors.js\").CannotRelinkError;\n\nexports.name = \"list\";\n\n/**Returns undefined if no change was made.\n * Parameter: value can literally be a list. This can happen for builtin\n *            types 'list' and 'tag'. In those cases, we also return list.\n */\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tvar isModified = false,\n\t\tactualList = false,\n\t\tlist;\n\tif (typeof value !== \"string\") {\n\t\t// Not a string. Must be a list.\n\t\t// clone it, since we may make changes to this possibly\n\t\t// frozen list.\n\t\tlist = (value || []).slice(0);\n\t\tactualList = true;\n\t} else {\n\t\tlist = $tw.utils.parseStringArray(value || \"\");\n\t}\n\t$tw.utils.each(list,function (title,index) {\n\t\tif(title === fromTitle) {\n\t\t\tlist[index] = toTitle;\n\t\t\tisModified = true;\n\t\t}\n\t});\n\tif (isModified) {\n\t\t// It doesn't parse correctly alone, it won't\n\t\t// parse correctly in any list.\n\t\tif (!canBeListItem(toTitle)) {\n\t\t\tthrow new CannotRelinkError();\n\t\t}\n\t\tif (actualList) {\n\t\t\treturn list;\n\t\t} else {\n\t\t\treturn $tw.utils.stringifyList(list);\n\t\t}\n\t}\n\treturn undefined;\n};\n\nfunction canBeListItem(value) {\n\tvar regexp = /\\]\\][^\\S\\xA0]/m;\n\treturn !regexp.test(value);\n};\n",
            "module-type": "relinkfieldtype",
            "title": "$:/plugins/flibbles/relink/js/fieldtypes/list.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/fieldtypes/reference.js": {
            "text": "/*\\\nThis manages replacing titles that occur inside text references,\n\ntiddlerTitle\ntiddlerTitle!!field\n!!field\ntiddlerTitle##propertyIndex\n\\*/\n\nvar CannotRelinkError = require(\"$:/plugins/flibbles/relink/js/errors.js\").CannotRelinkError;\n\nexports.name = \"reference\";\n\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tvar reference = $tw.utils.parseTextReference(value);\n\tif (reference.title !== fromTitle) {\n\t\treturn undefined;\n\t}\n\treference.title = toTitle;\n\treturn exports.toString(reference);\n};\n\nexports.toString = function(textReference) {\n\tvar title = textReference.title || '';\n\tif (!exports.canBePretty(title)) {\n\t\tthrow new CannotRelinkError();\n\t}\n\tif (textReference.field) {\n\t\treturn title + \"!!\" + textReference.field;\n\t} else if (textReference.index) {\n\t\treturn title + \"##\" + textReference.index;\n\t}\n\treturn title;\n};\n\nexports.canBePretty = function(title)  {\n\treturn title.indexOf(\"!!\") < 0 && title.indexOf(\"##\") < 0;\n};\n",
            "module-type": "relinkfieldtype",
            "title": "$:/plugins/flibbles/relink/js/fieldtypes/reference.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/fieldtypes/title.js": {
            "text": "/*\\\nThis specifies logic for replacing a single-tiddler field. This is the\nsimplest kind of field type. One title swaps out for the other.\n\\*/\n\n// NOTE TO MODDERS: If you're making your own field types, the name must be\n//                  alpha characters only.\nexports.name = 'title';\n\n/**Returns undefined if no change was made.\n */\nexports.relink = function(value, fromTitle, toTitle, options) {\n\tif (value === fromTitle) {\n\t\treturn toTitle;\n\t}\n\treturn undefined;\n};\n\n// This is legacy support for when 'title' was known as 'field'\nexports.aliases = ['field', 'yes'];\n",
            "module-type": "relinkfieldtype",
            "title": "$:/plugins/flibbles/relink/js/fieldtypes/title.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/fields.js": {
            "text": "/*\\\n\nHandles all fields specified in the plugin configuration. Currently, this\nonly supports single-value fields.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar settings = require('$:/plugins/flibbles/relink/js/settings.js');\nvar log = require('$:/plugins/flibbles/relink/js/language.js').logRelink;\n\nexports['fields'] = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar fields = settings.getFields(options);\n\t$tw.utils.each(fields, function(handler, field) {\n\t\tvar input = tiddler.fields[field];\n\t\tvar value = handler.relink(input, fromTitle, toTitle, options);\n\t\tif (value !== undefined) {\n\t\t\tlog(\"field\", {\n\t\t\t\tfrom: fromTitle,\n\t\t\t\tto: toTitle,\n\t\t\t\ttiddler: tiddler.fields.title,\n\t\t\t\tfield: descriptor(field)\n\t\t\t}, options);\n\t\t\tchanges[field] = value;\n\t\t}\n\t});\n};\n\nfunction descriptor(field) {\n\tif (field === \"tags\") {\n\t\treturn \"tags\";\n\t} else {\n\t\treturn field + \" field\" ;\n\t}\n};\n",
            "module-type": "relinkoperator",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/fields.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text.js": {
            "text": "/*\\\n\nDepending on the tiddler type, this will apply textOperators which may\nrelink titles within the body.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar defaultOperator = \"text/vnd.tiddlywiki\";\n\nvar textOperators = Object.create(null);\n$tw.modules.applyMethods('relinktextoperator', textOperators);\n\nexports['text'] = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar text = tiddler.fields.text,\n\t\tbuilder = [],\n\t\tbuildIndex = 0;\n\tif (text && text.indexOf(fromTitle) >= 0) {\n\t\tvar type = tiddler.fields.type || defaultOperator;\n\t\tif (textOperators[type]) {\n\t\t\ttextOperators[type].call(this, tiddler, fromTitle, toTitle, changes, options);\n\t\t}\n\t}\n};\n",
            "module-type": "relinkoperator",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js": {
            "text": "/*\\\n\nChecks for fromTitle in a tiddler's text. If found, sees if it's relevant,\nand tries to swap it out if it is.\n\n\\*/\n\n/*jslint node: false, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar type = 'text/vnd.tiddlywiki';\nvar WikiParser = require(\"$:/core/modules/parsers/wikiparser/wikiparser.js\")[type];\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder.js\");\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar rules = Object.create(null);\n\n$tw.modules.forEachModuleOfType(\"relinkwikitextrule\", function(title, exports) {\n\tvar names = exports.name;\n\tif (typeof names === \"string\") {\n\t\tnames = [names];\n\t}\n\tfor (var i = 0; i < names.length; i++) {\n\t\trules[names[i]] = exports;\n\t}\n});\n\nfunction WikiRelinker(text, title, toTitle, options) {\n\tWikiParser.call(this, null, text, options);\n\tif (!this.relinkMethodsInjected) {\n\t\t$tw.utils.each([this.pragmaRuleClasses, this.blockRuleClasses, this.inlineRuleClasses], function(classList) {\n\t\t\tfor (var name in classList) {\n\t\t\t\tif (rules[name]) {\n\t\t\t\t\tdelete rules[name].name;\n\t\t\t\t\t$tw.utils.extend(classList[name].prototype, rules[name]);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\t\tWikiRelinker.prototype.relinkMethodsInjected = true;\n\t}\n\tthis.title = title;\n\tthis.toTitle = toTitle;\n\tthis.inlineRules = this.blockRules.concat(this.pragmaRules, this.inlineRules);\n\t// We work through relinkRules so we can change it later.\n\t// relinkRules is inlineRules so it gets touched up by amendRules().\n\tthis.relinkRules = this.inlineRules;\n\tthis.placeholders = Object.create(null);\n\tthis.reverseMap = Object.create(null);\n\tthis.knownMacros = Object.create(null);\n\tthis.widget = undefined;\n};\n\nWikiRelinker.prototype = Object.create(WikiParser.prototype);\nWikiRelinker.prototype.parsePragmas = function() {return []; };\nWikiRelinker.prototype.parseInlineRun = function() {};\nWikiRelinker.prototype.parseBlocks = function() {};\n\nWikiRelinker.prototype.getPlaceholderFor = function(value, category) {\n\tvar placeholder = this.reverseMap[value];\n\tif (placeholder) {\n\t\treturn placeholder;\n\t}\n\tvar number = 0;\n\tvar prefix = \"relink-\"\n\tif (category && category !== \"title\") {\n\t\t// I don't like \"relink-title-1\". \"relink-1\" should be for\n\t\t// titles. lists, and filters can have descriptors though.\n\t\tprefix += category + \"-\";\n\t}\n\tdo {\n\t\tnumber += 1;\n\t\tplaceholder = prefix + number;\n\t} while (this.knownMacros[placeholder]);\n\tthis.placeholders[placeholder] = value;\n\tthis.reverseMap[value] = placeholder;\n\tthis.reserve(placeholder);\n\treturn placeholder;\n};\n\nWikiRelinker.prototype.addWidget = function(widget) {\n\tthis.widget = widget;\n\twhile (this.widget.children.length > 0) {\n\t\tthis.widget = this.widget.children[0];\n\t}\n};\n\nWikiRelinker.prototype.getVariableWidget = function() {\n\tif (!this.widget) {\n\t\tthis.widget = this.wiki.relinkGlobalMacros();\n\t\tvar parentWidget = new Widget({}, {parentWidget: this.widget});\n\t\tparentWidget.setVariable(\"currentTiddler\", this.title);\n\t\tvar widget = new Widget({}, {parentWidget: parentWidget});\n\t\tthis.addWidget(widget);\n\t}\n\treturn this.widget;\n};\n\nWikiRelinker.prototype.reserve = function(macro) {\n\tthis.knownMacros[macro] = true;\n};\n\nWikiRelinker.prototype.getPreamble = function() {\n\tvar results = [];\n\tfor (var name in this.placeholders) {\n\t\tvar val = this.placeholders[name];\n\t\tresults.push(\"\\\\define \"+name+\"() \"+val+\"\\n\");\n\t}\n\tif (results.length > 0) {\n\t\treturn results.join('');\n\t} else {\n\t\treturn undefined;\n\t}\n};\n\nexports[type] = function(tiddler, fromTitle, toTitle, changes, options) {\n\tvar text = tiddler.fields.text,\n\t\tbuilder = new Rebuilder(text),\n\t\tparser = new WikiRelinker(text, tiddler.fields.title, toTitle, options),\n\t\tmatchingRule;\n\twhile (matchingRule = parser.findNextMatch(parser.relinkRules, parser.pos)) {\n\t\tif (matchingRule.rule.relink) {\n\t\t\tvar newSegment = matchingRule.rule.relink(tiddler, text, fromTitle, toTitle, options);\n\t\t\tif (newSegment !== undefined) {\n\t\t\t\tbuilder.add(newSegment, matchingRule.matchIndex, parser.pos);\n\t\t\t}\n\t\t} else {\n\t\t\tif (matchingRule.rule.matchRegExp !== undefined) {\n\t\t\t\tparser.pos = matchingRule.rule.matchRegExp.lastIndex;\n\t\t\t} else {\n\t\t\t\t// We can't easily determine the end of this\n\t\t\t\t// rule match. We'll \"parse\" it so that\n\t\t\t\t// parser.pos gets updated, but we throw away\n\t\t\t\t// the results.\n\t\t\t\tmatchingRule.rule.parse();\n\t\t\t}\n\t\t}\n\t}\n\tif (builder.changed()) {\n\t\tbuilder.prepend(parser.getPreamble());\n\t\tchanges.text = builder.results();\n\t}\n};\n",
            "module-type": "relinktextoperator",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles comment blocks. Or rather //doesn't// handle them, since we should\nignore their contents.\n\n\"<!-- [[Renamed Title]] -->\" will remain unchanged.\n\n\\*/\n\nexports.name = [\"commentinline\", \"commentblock\"];\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\tthis.parser.pos = this.endMatchRegExp.lastIndex;\n\treturn undefined;\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/comment.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement of filtered transclusions in wiki text like,\n\n{{{ [tag[docs]] }}}\n{{{ [tag[docs]] |tooltip}}}\n{{{ [tag[docs]] ||TemplateTitle}}}\n{{{ [tag[docs]] |tooltip||TemplateTitle}}}\n{{{ [tag[docs]] }}width:40;height:50;}.class.class\n\nThis renames both the list and the template field.\n\n\\*/\n\nexports.name = ['filteredtranscludeinline', 'filteredtranscludeblock'];\n\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/settings\").getRelinker('filter');\nvar log = require('$:/plugins/flibbles/relink/js/language.js').logRelink;\nvar utils = require(\"./utils.js\");\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\tvar m = this.match;\n\t\tfilter = m[1],\n\t\ttooltip = m[2],\n\t\ttemplate = m[3],\n\t\tstyle = m[4],\n\t\tclasses = m[5],\n\t\tparser = this.parser,\n\t\tlogArguments = {\n\t\t\tfrom: fromTitle,\n\t\t\tto: toTitle,\n\t\t\ttiddler: tiddler.fields.title\n\t\t};\n\tparser.pos = this.matchRegExp.lastIndex;\n\tvar modified = false;\n\tif ($tw.utils.trim(template) === fromTitle) {\n\t\t// preserves user-inputted whitespace\n\t\ttemplate = template.replace(fromTitle, toTitle);\n\t\tmodified = true;\n\t}\n\tvar extendedOptions = $tw.utils.extend({placeholder: this.parser}, options);\n\tvar relinkedFilter = filterHandler.relink(filter, fromTitle, toTitle, extendedOptions);\n\tvar message = \"filteredtransclude\";\n\tif (extendedOptions.usedPlaceholder) {\n\t\tmessage = \"filteredtransclude-placeholder\";\n\t}\n\tif (relinkedFilter !== undefined) {\n\t\tfilter = relinkedFilter;\n\t\tmodified = true;\n\t}\n\tif (!modified) {\n\t\treturn undefined;\n\t}\n\tif (canBePretty(filter) && canBePrettyTemplate(template)) {\n\t\tlog(message, logArguments, options);\n\t\treturn prettyList(filter, tooltip, template, style, classes);\n\t}\n\tmessage = message + \"-widget\";\n\tif (classes !== undefined) {\n\t\tclasses = classes.split('.').join(' ');\n\t}\n\tfunction wrap(name, value, treatAsTitle) {\n\t\tif (!value) {\n\t\t\treturn '';\n\t\t}\n\t\tvar wrappedValue = utils.wrapAttributeValue(value);\n\t\tif (wrappedValue === undefined) {\n\t\t\tvar category = treatAsTitle ? undefined : name;\n\t\t\twrappedValue = \"<<\"+parser.getPlaceholderFor(value,category)+\">>\";\n\t\t\tmessage = \"filteredtransclude-placeholder-widget\";\n\t\t}\n\t\treturn \" \"+name+\"=\"+wrappedValue;\n\t};\n\tvar widget = [\n\t\t\"<$list\",\n\t\twrap(\"filter\", filter),\n\t\twrap(\"tooltip\", tooltip),\n\t\twrap(\"template\", template, true),\n\t\twrap(\"style\", style),\n\t\twrap(\"itemClass\", classes),\n\t\t\"/>\"\n\t].join('');\n\tlog(message, logArguments, options);\n\treturn widget;\n};\n\nfunction canBePretty(filter) {\n\treturn filter.indexOf('|') < 0 && filter.indexOf('}}') < 0;\n};\n\nfunction canBePrettyTemplate(template) {\n\treturn !template || (\n\t\ttemplate.indexOf('|') < 0\n\t\t&& template.indexOf('{') < 0\n\t\t&& template.indexOf('}') < 0);\n};\n\nfunction prettyList(filter, tooltip, template, style, classes) {\n\tif (tooltip === undefined) {\n\t\ttooltip = '';\n\t} else {\n\t\ttooltip = \"|\" + tooltip;\n\t}\n\tif (template === undefined) {\n\t\ttemplate = '';\n\t} else {\n\t\ttemplate = \"||\" + template;\n\t}\n\tif (classes === undefined) {\n\t\tclasses = '';\n\t} else {\n\t\tclasses = \".\" + classes;\n\t}\n\tstyle = style || '';\n\treturn \"{{{\"+filter+tooltip+template+\"}}\"+style+\"}\"+classes;\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/filteredtransclude.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in attributes of widgets and html elements\nThis is configurable to select exactly which attributes of which elements\nshould be changed.\n\n<$link to=\"TiddlerTitle\" />\n\n\\*/\n\nvar utils = require(\"./utils.js\");\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar html = require(\"$:/core/modules/parsers/wikiparser/rules/html.js\");\nvar log = require('$:/plugins/flibbles/relink/js/language.js').logRelink;\nvar settings = require('$:/plugins/flibbles/relink/js/settings.js');\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/settings\").getRelinker('filter');\nvar macrocall = require(\"./macrocall.js\");\nvar CannotRelinkError = require(\"$:/plugins/flibbles/relink/js/errors.js\").CannotRelinkError;\n\nexports.name = \"html\";\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\tvar managedElement = settings.getAttributes(options)[this.nextTag.tag],\n\t\tbuilder = new Rebuilder(text, this.nextTag.start);\n\tvar importFilterAttr;\n\tfor (var attributeName in this.nextTag.attributes) {\n\t\tvar attr = this.nextTag.attributes[attributeName];\n\t\tvar nextEql = text.indexOf('=', attr.start);\n\t\t// This is the rare case of changing tiddler\n\t\t// \"true\" to something else when \"true\" is\n\t\t// implicit, like <$link to /> We ignore those.\n\t\tif (nextEql < 0 || nextEql > attr.end) {\n\t\t\tcontinue;\n\t\t}\n\t\tif (this.nextTag.tag === \"$importvariables\" && attributeName === \"filter\") {\n\t\t\timportFilterAttr = attr;\n\t\t}\n\t\tvar oldValue, quote, logMessage = \"attribute\";\n\t\tif (attr.type === \"string\") {\n\t\t\tvar handler = getAttributeHandler(this.nextTag, attributeName, options);\n\t\t\tif (!handler) {\n\t\t\t\t// We don't manage this attribute. Bye.\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tvar extendedOptions = $tw.utils.extend({placeholder: this.parser}, options);\n\t\t\toldValue = attr.value;\n\t\t\tvar value = handler.relink(attr.value, fromTitle, toTitle, extendedOptions);\n\t\t\tif (value === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (extendedOptions.usedPlaceholder) {\n\t\t\t\tlogMessage = \"attribute-placeholder\";\n\t\t\t}\n\t\t\tquote = utils.determineQuote(text, attr);\n\t\t\tattr.quotedValue = utils.wrapAttributeValue(value,quote);\n\t\t\tif (attr.quotedValue === undefined) {\n\t\t\t\t// The value was unquotable. We need to make\n\t\t\t\t// a macro in order to replace it.\n\t\t\t\tvalue = this.parser.getPlaceholderFor(value,handler.name)\n\t\t\t\tattr.type = \"macro\";\n\t\t\t\tattr.quotedValue = \"<<\"+value+\">>\";\n\t\t\t\tlogMessage = \"attribute-placeholder\";\n\t\t\t}\n\t\t\tattr.value = value;\n\t\t} else if (attr.type === \"indirect\") {\n\t\t\toldValue = attr.textReference;\n\t\t\tquote = \"{{\";\n\t\t\tvar ref = $tw.utils.parseTextReference(attr.textReference);\n\t\t\tif (ref.title !== fromTitle) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (toTitle.indexOf(\"}\") >= 0) {\n\t\t\t\t// Impossible replacement\n\t\t\t\tthrow new CannotRelinkError();\n\t\t\t}\n\t\t\tref.title = toTitle;\n\t\t\tattr.textReference = refHandler.toString(ref);\n\t\t\tattr.quotedValue = \"{{\"+attr.textReference+\"}}\";\n\t\t} else if (attr.type === \"filtered\") {\n\t\t\tvar extendedOptions = $tw.utils.extend({placeholder: this.parser}, options);\n\t\t\toldValue = attr.filter\n\t\t\tvar filter = filterHandler.relink(attr.filter, fromTitle, toTitle, extendedOptions);\n\t\t\tif (filter === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (!canBeFilterValue(filter)) {\n\t\t\t\t// Although I think we can actually do this one.\n\t\t\t\tthrow new CannotRelinkError();\n\t\t\t}\n\t\t\tattr.filter = filter;\n\t\t\tattr.quotedValue = \"{{{\" + filter + \"}}}\";\n\t\t\tquote = \"{{{\";\n\t\t} else if (attr.type === \"macro\") {\n\t\t\tvar macro = attr.value;\n\t\t\toldValue = attr.value;\n\t\t\tvar newMacro = macrocall.relinkMacroInvocation(macro, text, this.parser, fromTitle, toTitle, options);\n\t\t\tif (newMacro === undefined) {\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t\tif (macrocall.mustBeAWidget(newMacro)) {\n\t\t\t\tthrow new CannotRelinkError();\n\t\t\t}\n\t\t\tattr.value = newMacro;\n\t\t\t// TODO: Let's not hack like this. attr.value is\n\t\t\t// expected to be a string of the unquoted value below.\n\t\t\t// Make this better when I can.\n\t\t\toldValue.length = (macro.end-macro.start)-4;\n\t\t\tquote = \"<<\";\n\t\t\tattr.quotedValue = macrocall.macroToString(newMacro, text, this.parser, options);\n\t\t} else {\n\t\t\tcontinue;\n\t\t}\n\t\t// account for the quote if it's there.\n\t\t// We count backwards from the end to preserve whitespace\n\t\tvar valueStart = attr.end\n\t\t               - (quote.length*2)\n\t\t               - oldValue.length;\n\t\tbuilder.add(attr.quotedValue, valueStart, attr.end);\n\t\tvar logArguments = {\n\t\t\tfrom: fromTitle,\n\t\t\tto: toTitle,\n\t\t\ttiddler: tiddler.fields.title,\n\t\t\telement: this.nextTag.tag,\n\t\t\tattribute: attributeName\n\t\t};\n\t\tlog(logMessage, logArguments, options);\n\t}\n\tif (importFilterAttr) {\n\t\tvar importFilter = computeAttribute(importFilterAttr, this.parser, options);\n\t\tvar parentWidget = this.parser.getVariableWidget();\n\t\tvar varHolder = options.wiki.relinkGenerateVariableWidget(importFilter, parentWidget);\n\t\tthis.parser.addWidget(varHolder);\n\t}\n\tthis.parser.pos = this.nextTag.end;\n\treturn builder.results(this.nextTag.end);\n};\n\n/** Returns the field handler for the given attribute of the given widget.\n *  If this returns undefined, it means we don't handle it. So skip.\n */\nfunction getAttributeHandler(widget, attributeName, options) {\n\tif (widget.tag === \"$macrocall\") {\n\t\tvar nameAttr = widget.attributes[\"$name\"];\n\t\tvar macro = settings.getMacros(options)[nameAttr.value];\n\t\tif (macro) {\n\t\t\treturn macro[attributeName];\n\t\t}\n\t} else {\n\t\tvar element = settings.getAttributes(options)[widget.tag];\n\t\tif (element) {\n\t\t\treturn element[attributeName];\n\t\t}\n\t}\n\treturn undefined;\n};\n\nfunction computeAttribute(attribute, parser, options) {\n\tvar value;\n\tif(attribute.type === \"filtered\") {\n\t\tvar parentWidget = parser.getVariableWidget();\n\t\tvalue = options.wiki.filterTiddlers(attribute.filter,parentWidget)[0] || \"\";\n\t} else if(attribute.type === \"indirect\") {\n\t\tvar parentWidget = parser.getVariableWidget();\n\t\tvalue = options.wiki.getTextReference(attribute.textReference,\"\",parentWidget.variables.currentTiddler.value);\n\t} else if(attribute.type === \"macro\") {\n\t\tvar parentWidget = parser.getVariableWidget();\n\t\tvalue = parentWidget.getVariable(attribute.value.name,{params: attribute.value.params});\n\t} else { // String attribute\n\t\tvalue = attribute.value;\n\t}\n\treturn value;\n};\n\nfunction canBeFilterValue(value) {\n\treturn value.indexOf(\"}}}\") < 0 && value.substr(value.length-2) !== '}}';\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/html.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/image.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in wiki text inline rules, like,\n\n[img[tiddler.jpg]]\n\n[img width=23 height=24 [Description|tiddler.jpg]]\n\n\\*/\n\nvar log = require('$:/plugins/flibbles/relink/js/language.js').logRelink;\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar filterHandler = require(\"$:/plugins/flibbles/relink/js/settings\").getRelinker('filter');\nvar macrocall = require(\"./macrocall.js\");\nvar CannotRelinkError = require(\"$:/plugins/flibbles/relink/js/errors.js\").CannotRelinkError;\nvar utils = require(\"./utils.js\");\n\nexports.name = \"image\";\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\tvar ptr = this.nextImage.start;\n\tvar builder = new Rebuilder(text, ptr);\n\tvar makeWidget = false;\n\tvar logArguments = {\n\t\tfrom: fromTitle,\n\t\tto: toTitle,\n\t\ttiddler: tiddler.fields.title\n\t};\n\tif (this.nextImage.attributes.source.value === fromTitle && !canBePretty(toTitle, this.nextImage.attributes.tooltip)) {\n\t\tmakeWidget = true;\n\t\tbuilder.add(\"<$image\", ptr, ptr+4);\n\t}\n\tptr += 4; //[img\n\tvar inSource = false;\n\tfor (var attributeName in this.nextImage.attributes) {\n\t\tvar attr = this.nextImage.attributes[attributeName];\n\t\tif (attributeName === \"source\" || attributeName === \"tooltip\") {\n\t\t\tif (inSource) {\n\t\t\t\tptr = text.indexOf('|', ptr);\n\t\t\t} else {\n\t\t\t\tptr = text.indexOf('[', ptr);\n\t\t\t\tinSource = true;\n\t\t\t}\n\t\t\tif (makeWidget) {\n\t\t\t\tif (\" \\t\\n\".indexOf(text[ptr-1]) >= 0) {\n\t\t\t\t\tbuilder.add('', ptr, ptr+1);\n\t\t\t\t} else {\n\t\t\t\t\tbuilder.add(' ', ptr, ptr+1);\n\t\t\t\t}\n\t\t\t}\n\t\t\tptr += 1;\n\t\t}\n\t\tif (attributeName === \"source\") {\n\t\t\tptr = text.indexOf(attr.value, ptr);\n\t\t\tif (attr.value === fromTitle) {\n\t\t\t\tif (makeWidget) {\n\t\t\t\t\tvar quotedValue = utils.wrapAttributeValue(toTitle);\n\t\t\t\t\tif (quotedValue === undefined) {\n\t\t\t\t\t\tvar key = this.parser.getPlaceholderFor(toTitle);\n\t\t\t\t\t\tbuilder.add(\"source=<<\"+key+\">>\", ptr, ptr+fromTitle.length);\n\t\t\t\t\t\tlog(\"image-placeholder-widget\", logArguments, options);\n\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuilder.add(\"source=\"+quotedValue, ptr, ptr+fromTitle.length);\n\t\t\t\t\t\tlog(\"image-widget\", logArguments, options);\n\t\t\t\t\t}\n\n\n\t\t\t\t} else {\n\t\t\t\t\tbuilder.add(toTitle, ptr, ptr+fromTitle.length);\n\t\t\t\t\tlog(\"image\", logArguments, options);\n\t\t\t\t}\n\t\t\t}\n\t\t\tptr = text.indexOf(']]', ptr);\n\t\t\tif (makeWidget) {\n\t\t\t\tbuilder.add(\"/>\", ptr, ptr+2);\n\t\t\t}\n\t\t\tptr += 2;\n\t\t} else if (attributeName === \"tooltip\") {\n\t\t\tif (makeWidget) {\n\t\t\t\tptr = text.indexOf(attr.value, ptr);\n\t\t\t\tvar quotedValue = utils.wrapAttributeValue(attr.value);\n\t\t\t\tbuilder.add(\"tooltip=\"+quotedValue, ptr, ptr+attr.value.length);\n\t\t\t}\n\t\t} else {\n\t\t\tptr = relinkAttribute(attr, this.parser, builder, fromTitle, toTitle, options);\n\t\t}\n\t}\n\tthis.parser.pos = ptr;\n\treturn builder.results(ptr);\n};\n\nfunction relinkAttribute(attribute, parser, builder, fromTitle, toTitle, options) {\n\tvar text = builder.text;\n\tvar ptr = text.indexOf(attribute.name, attribute.start);\n\tptr += attribute.name.length;\n\tptr = text.indexOf('=', ptr);\n\tif (attribute.type === \"string\") {\n\t\tptr = text.indexOf(attribute.value, ptr)\n\t\tvar quote = utils.determineQuote(text, attribute);\n\t\t// ignore first quote. We already passed it\n\t\tptr += quote.length + attribute.value.length;\n\t} else if (attribute.type === \"indirect\") {\n\t\tptr = text.indexOf('{{', ptr);\n\t\tvar quote = \"{{\";\n\t\tvar ref = $tw.utils.parseTextReference(attribute.textReference);\n\t\tvar end = ptr + attribute.textReference.length + 4;\n\t\tif (ref.title === fromTitle) {\n\t\t\tif (toTitle.indexOf(\"}\") >= 0) {\n\t\t\t\tthrow new CannotRelinkError();\n\t\t\t}\n\t\t\tref.title = toTitle;\n\t\t\tvar value = refHandler.toString(ref);\n\t\t\tbuilder.add(\"{{\"+value+\"}}\", ptr, end);\n\t\t}\n\t\tptr = end;\n\t} else if (attribute.type === \"filtered\") {\n\t\tptr = text.indexOf('{{{', ptr);\n\t\tvar end = ptr + attribute.filter.length + 6;\n\t\tvar extendedOptions = $tw.utils.extend({placeholder: parser}, options);\n\t\tvar filter = filterHandler.relink(attribute.filter, fromTitle, toTitle, extendedOptions);\n\t\tif (filter !== undefined) {\n\t\t\tif (!canBeFilterValue(filter)) {\n\t\t\t\tthrow new CannotRelinkError();\n\t\t\t}\n\t\t\tattribute.filter = filter;\n\t\t\tvar quoted = \"{{{\"+filter+\"}}}\";\n\t\t\tbuilder.add(quoted, ptr, end);\n\t\t}\n\t\tptr = end;\n\t} else if (attribute.type === \"macro\") {\n\t\tptr = text.indexOf(\"<<\", ptr);\n\t\tvar end = attribute.value.end;\n\t\tvar macro = attribute.value;\n\t\toldValue = attribute.value;\n\t\tvar newMacro = macrocall.relinkMacroInvocation(macro, text, parser, fromTitle, toTitle, options);\n\t\tif (newMacro !== undefined) {\n\t\t\tif (macrocall.mustBeAWidget(newMacro)) {\n\t\t\t\tthrow new CannotRelinkError();\n\t\t\t}\n\t\t\tvar macroString = macrocall.macroToString(newMacro, text, parser, options);\n\t\t\tbuilder.add(macroString, ptr, end);\n\t\t}\n\t\tptr = end;\n\t}\n\treturn ptr;\n};\n\nfunction canBeFilterValue(value) {\n\treturn value.indexOf(\"}}}\") < 0 && value.substr(value.length-2) !== '}}';\n};\n\nfunction canBePretty(title, tooltip) {\n\treturn title.indexOf(']') < 0 && (tooltip || title.indexOf('|') < 0);\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/image.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles import pragmas\n\n\\import [tag[MyTiddler]]\n\\*/\n\nvar settings = require(\"$:/plugins/flibbles/relink/js/settings.js\");\nvar log = require(\"$:/plugins/flibbles/relink/js/language.js\").logRelink;\nvar filterRelinker = settings.getRelinker('filter');\n\nexports.name = \"import\";\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\t// In this one case, I'll let the parser parse out the filter and move\n\t// the ptr.\n\tvar start = this.matchRegExp.lastIndex;\n\tvar parseTree = this.parse();\n\tvar filter = parseTree[0].attributes.filter.value;\n\n\tvar extendedOptions = $tw.utils.extend({placeholder: this.parser},options);\n\tvar value = filterRelinker.relink(filter, fromTitle, toTitle, extendedOptions);\n\tvar rtn = undefined;\n\tif (value !== undefined) {\n\t\tvar message = extendedOptions.usedPlaceholder ? \"import-placeholder\" : \"import\";\n\t\tlog(message, {\n\t\t\tfrom: fromTitle,\n\t\t\tto: toTitle,\n\t\t\ttiddler: tiddler.fields.title\n\t\t}, options);\n\t\tvar newline = text.substring(start+filter.length, this.parser.pos);\n\t\tfilter = value;\n\t\trtn = \"\\\\import \" + value + newline;\n\t}\n\n\t// Before we go, we need to actually import the variables\n\t// it's calling for.\n\tvar parentWidget = this.parser.getVariableWidget();\n\tvar variableHolder = options.wiki.relinkGenerateVariableWidget(filter, parentWidget);\n\tthis.parser.addWidget(variableHolder);\n\n\treturn rtn;\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/import.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles macro calls.\n\n<<myMacro '[[MyFilter]]' 'myTitle'>>\n\n\\*/\n\nvar utils = require(\"./utils.js\");\nvar Rebuilder = require(\"$:/plugins/flibbles/relink/js/utils/rebuilder\");\nvar log = require('$:/plugins/flibbles/relink/js/language.js').logRelink;\nvar settings = require('$:/plugins/flibbles/relink/js/settings.js');\nvar CannotFindMacroDefError = require(\"$:/plugins/flibbles/relink/js/errors.js\").CannotFindMacroDefError;\n\nexports.name = [\"macrocallinline\", \"macrocallblock\"];\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\t// Get all the details of the match\n\tvar macroName = this.match[1],\n\t\tparamString = this.match[2],\n\t\tmacroText = this.match[0];\n\t// Move past the macro call\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar start = this.matchRegExp.lastIndex - this.match[0].length;\n\tvar managedMacro = settings.getMacros(options)[macroName];\n\tif (!managedMacro) {\n\t\t// We don't manage this macro. Bye.\n\t\treturn undefined;\n\t}\n\tvar offset = macroName.length+2;\n\toffset = $tw.utils.skipWhiteSpace(macroText, offset);\n\tvar params = parseParams(paramString, offset+start);\n\tvar macroInfo = {\n\t\tname: macroName,\n\t\tstart: start,\n\t\tend: this.matchRegExp.lastIndex,\n\t\tparams: params\n\t};\n\tvar results = this.relinkMacroInvocation(macroInfo, text, this.parser, fromTitle, toTitle, options);\n\tif (results) {\n\t\treturn this.macroToString(results, text, this.parser, options);\n\t} else {\n\t\treturn undefined;\n\t}\n};\n\n/**Processes the given macro,\n * macro: {name:, params:, start:, end:}\n * each parameters: {name:, end:, value:}\n * Macro invocation returned is the same, but relinked, and may have new keys:\n * parameters: {type: macro, start:, newValue: (quoted replacement value)}\n */\nexports.relinkMacroInvocation = function(macro, text, parser, fromTitle, toTitle, options) {\n\tvar managedMacro = settings.getMacros(options)[macro.name];\n\tvar modified = false;\n\tif (!managedMacro) {\n\t\t// We don't manage this macro. Bye.\n\t\treturn undefined;\n\t}\n\tif (macro.params.every(function(p) {\n\t\treturn p.value.indexOf(fromTitle) < 0;\n\t})) {\n\t\t// We cut early if the fromTitle doesn't even appear\n\t\t// anywhere in the title. This is to avoid any headache\n\t\t// about finding macro definitions (and any resulting\n\t\t// exceptions if there isn't even a title to replace.\n\t\treturn undefined;\n\t}\n\tvar outMacro = $tw.utils.extend({}, macro);\n\toutMacro.params = macro.params.slice();\n\tfor (var managedArg in managedMacro) {\n\t\tvar index = getParamIndexWithinMacrocall(macro.name, managedArg, macro.params, parser, options);\n\t\tif (index < 0) {\n\t\t\t// this arg either was not supplied, or we can't find\n\t\t\t// the definition, so we can't tie it to an anonymous\n\t\t\t// argument. Either way, move on to the next.\n\t\t\tcontinue;\n\t\t}\n\t\tvar param = macro.params[index];\n\t\tvar handler = managedMacro[managedArg];\n\t\tvar extendedOptions = $tw.utils.extend({placeholder: parser}, options);\n\t\tvar value = handler.relink(param.value, fromTitle, toTitle, extendedOptions);\n\t\tif (value === undefined) {\n\t\t\tcontinue;\n\t\t}\n\t\tvar quote = utils.determineQuote(text, param);\n\t\tvar quoted = utils.wrapParameterValue(value, quote);\n\t\tvar newParam = $tw.utils.extend({}, param);\n\t\tif (quoted === undefined) {\n\t\t\tvar ph = parser.getPlaceholderFor(value,handler.name);\n\t\t\tnewParam.newValue = \"<<\"+ph+\">>\";\n\t\t\tnewParam.type = \"macro\";\n\t\t} else {\n\t\t\tnewParam.start = newParam.end - (newParam.value.length + (quote.length*2));\n\t\t\tnewParam.value = value;\n\t\t\tnewParam.newValue = quoted;\n\t\t}\n\t\toutMacro.params[index] = newParam;\n\t\tmodified = true;\n\t}\n\tif (modified) {\n\t\treturn outMacro;\n\t}\n\treturn undefined;\n};\n\nexports.mustBeAWidget = function(macro) {\n\tfor (var i = 0; i < macro.params.length; i++) {\n\t\tif (macro.params[i].type === \"macro\") {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false\n};\n\n/**Given a macro object ({name:, params:, start: end:}), and the text where\n * it was parsed from, returns a new macro that maintains any syntactic\n * structuring.\n */\nexports.macroToString = function(macro, text, parser, options) {\n\tif (exports.mustBeAWidget(macro)) {\n\t\tvar names = getParamNames(macro.name, macro.params, parser, options);\n\t\tvar attrs = [];\n\t\tfor (var i = 0; i < macro.params.length; i++) {\n\t\t\tvar p = macro.params[i];\n\t\t\tvar val;\n\t\t\tif (p.newValue) {\n\t\t\t\tval = p.newValue;\n\t\t\t} else {\n\t\t\t\tval = utils.wrapAttributeValue(p.value);\n\t\t\t}\n\t\t\tattrs.push(\" \"+names[i]+\"=\"+val);\n\t\t}\n\t\treturn \"<$macrocall $name=\"+utils.wrapAttributeValue(macro.name)+attrs.join('')+\"/>\";\n\t} else {\n\t\tvar builder = new Rebuilder(text, macro.start);\n\t\tfor (var i = 0; i < macro.params.length; i++) {\n\t\t\tvar param = macro.params[i];\n\t\t\tif (param.newValue) {\n\t\t\t\tbuilder.add(param.newValue, param.start, param.end);\n\t\t\t}\n\t\t}\n\t\treturn builder.results(macro.end);\n\t}\n};\n\nfunction getParamIndexWithinMacrocall(macroName, param, params, parser, options) {\n\tvar index, i;\n\tfor (i = 0; i < params.length; i++) {\n\t\tif (params[i].name === param) {\n\t\t\treturn i;\n\t\t}\n\t}\n\tvar expectedIndex = indexOfParameterDef(macroName, param, parser, options);\n\t// We've got to skip over all the named parameter instances.\n\tif (expectedIndex >= 0) {\n\t\tvar anonI = 0;\n\t\tfor (i = 0; i < params.length; i++) {\n\t\t\tif (params[i].name === undefined) {\n\t\t\t\tif (anonI === expectedIndex) {\n\t\t\t\t\treturn i;\n\t\t\t\t}\n\t\t\t\tanonI++;\n\t\t\t} else {\n\t\t\t\tvar indexOfOther = indexOfParameterDef(macroName, params[i].name, parser, options);\n\t\t\t\tif (indexOfOther < expectedIndex) {\n\t\t\t\t\tanonI++;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\treturn -1;\n};\n\n// Looks up the definition of a macro, and figures out what the expected index\n// is for the given parameter.\nfunction indexOfParameterDef(macroName, paramName, parser, options) {\n\tvar def = getDefinition(macroName, parser, options);\n\tvar params = def.params || [];\n\tfor (var i = 0; i < params.length; i++) {\n\t\tif (params[i].name === paramName) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\n\nfunction getParamNames(macroName, params, parser, options) {\n\tvar used = Object.create(null);\n\tvar rtn = new Array(params.length);\n\tvar anonsExist = false;\n\tvar i;\n\tfor (i = 0; i < params.length; i++) {\n\t\tvar name = params[i].name;\n\t\tif (name) {\n\t\t\trtn[i] = name;\n\t\t\tused[name] = true;\n\t\t} else {\n\t\t\tanonsExist = true;\n\t\t}\n\t}\n\tif (anonsExist) {\n\t\tvar defParams = getDefinition(macroName, parser, options).params || [];\n\t\tvar defPtr = 0;\n\t\tfor (i = 0; i < params.length; i++) {\n\t\t\tif (rtn[i] === undefined) {\n\t\t\t\twhile(defPtr < defParams.length && used[defParams[defPtr].name]) {\n\t\t\t\t\tdefPtr++;\n\t\t\t\t}\n\t\t\t\tif (defPtr >= defParams.length) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t\trtn[i] = defParams[defPtr].name;\n\t\t\t\tused[defParams[defPtr].name] = true;\n\t\t\t}\n\t\t}\n\t}\n\treturn rtn;\n};\n\n/** Returns undefined if the definition cannot be found.\n */\nfunction getDefinition (macroName, parser, options) {\n\tvar variableContainer = parser.getVariableWidget();\n\tvar def = variableContainer.variables[macroName];\n\tif (!def) {\n\t\t// Check with the macro modules\n\t\tif ($tw.utils.hop($tw.macros, macroName)) {\n\t\t\tdef = $tw.macros[macroName];\n\t\t} else {\n\t\t\tthrow new CannotFindMacroDefError(macroName);\n\t\t}\n\t}\n\treturn def;\n};\n\nfunction parseParams(paramString, pos) {\n\tvar params = [],\n\t\treParam = /\\s*(?:([A-Za-z0-9\\-_]+)\\s*:)?(?:\\s*(?:\"\"\"([\\s\\S]*?)\"\"\"|\"([^\"]*)\"|'([^']*)'|\\[\\[([^\\]]*)\\]\\]|([^\"'\\s]+)))/mg,\n\t\tparamMatch = reParam.exec(paramString);\n\twhile(paramMatch) {\n\t\t// Process this parameter\n\t\tvar paramInfo = {\n\t\t\tvalue: paramMatch[2] || paramMatch[3] || paramMatch[4] || paramMatch[5] || paramMatch[6]\n\t\t};\n\t\tif(paramMatch[1]) {\n\t\t\tparamInfo.name = paramMatch[1];\n\t\t}\n\t\t//paramInfo.start = pos;\n\t\tparamInfo.end = reParam.lastIndex + pos;\n\t\tparams.push(paramInfo);\n\t\t// Find the next match\n\t\tparamMatch = reParam.exec(paramString);\n\t}\n\treturn params;\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrocall.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles pragma macro definitions. Except we only update placeholder macros\nthat we may have previously install.\n\n\\define relink-?() Tough title\n\n\\*/\n\nvar log = require('$:/plugins/flibbles/relink/js/language.js').logRelink;\nvar settings = require(\"$:/plugins/flibbles/relink/js/settings\");\n\nexports.name = \"macrodef\";\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\tvar setParseTreeNode = this.parse();\n\tvar parentWidget = this.parser.getVariableWidget();\n\tvar setWidget = parentWidget.makeChildWidget(setParseTreeNode[0]);\n\tsetWidget.computeAttributes();\n\tsetWidget.execute();\n\tthis.parser.addWidget(setWidget);\n\t// Parse set the pos pointer, but we don't want to skip the macro body.\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar m = this.match;\n\t// This macro is not available should we need to make one.\n\tthis.parser.reserve(m[1]);\n\t// !m[3] means it's not a multiline macrodef\n\tvar placeholder = /^relink-(?:(\\w+)-)?(\\d+)$/.exec(m[1]);\n\tif (placeholder && m[2] === '' && !m[3]) {\n\t\tthis.parser.pos = $tw.utils.skipWhiteSpace(text, this.parser.pos);\n\t\tvar valueRegExp = /([^\\n\\r]+)(\\r?\\n)/mg;\n\t\tvalueRegExp.lastIndex = this.parser.pos;\n\t\tvar match = valueRegExp.exec(text);\n\t\tif (match) {\n\t\t\tvar handler = settings.getRelinker(placeholder[1] || 'title');\n\t\t\t\t// This is a filter\n\t\t\tvar extendedOptions = $tw.utils.extend({placeholder: this.parser}, options);\n\t\t\tvar value = handler.relink(match[1], fromTitle, toTitle, extendedOptions);\n\t\t\tif (value !== undefined) {\n\t\t\t\tvar message = \"macrodef\";\n\t\t\t\tif (extendedOptions.usedPlaceholder) {\n\t\t\t\t\tmessage = \"macrodef-placeholder\";\n\t\t\t\t}\n\t\t\t\tlog(message, {\n\t\t\t\t\tfrom: fromTitle,\n\t\t\t\t\tto: toTitle,\n\t\t\t\t\ttiddler: tiddler.fields.title,\n\t\t\t\t\tmacro: m[1]\n\t\t\t\t}, options);\n\t\t\t\tthis.parser.pos += match[0].length;\n\t\t\t\treturn \"\\\\define \"+m[1]+\"() \"+value+match[2];\n\t\t\t}\n\t\t}\n\t}\n\treturn undefined;\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/macrodef.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement in wiki text inline rules, like,\n\n[[Introduction]]\n\n[[link description|TiddlerTitle]]\n\n\\*/\n\nvar log = require('$:/plugins/flibbles/relink/js/language.js').logRelink;\nvar utils = require(\"./utils.js\");\n\nexports.name = \"prettylink\";\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar caption, quoted, m = this.match;\n\tif (m[2] === fromTitle) {\n\t\t// format is [[caption|MyTiddler]]\n\t\tcaption = m[1];\n\t} else if (m[2] !== undefined || m[1] !== fromTitle) {\n\t\t// format is [[MyTiddler]], and it doesn't match\n\t\treturn undefined;\n\t}\n\tvar logArguments = {\n\t\tfrom: fromTitle,\n\t\tto: toTitle,\n\t\ttiddler: tiddler.fields.title\n\t};\n\tif (utils.canBePretty(toTitle)) {\n\t\tlog(\"prettylink\", logArguments, options);\n\t\treturn prettyLink(toTitle, caption);\n\t} else if (caption === undefined) {\n\t\t// If we don't have a caption, we have to resort to placeholders\n\t\t// anyway to prevent link/caption desync from later relinks.\n\t\t// It doesn't matter whether the toTitle is quotable\n\t\tlog(\"prettylink-placeholder\", logArguments, options);\n\t\tvar ph = this.parser.getPlaceholderFor(toTitle);\n\t\treturn \"<$link to=<<\"+ph+\">>><$text text=<<\"+ph+\">>/></$link>\";\n\t} else if (quoted = utils.wrapAttributeValue(toTitle)) {\n\t\tlog(\"prettylink-widget\", logArguments, options);\n\t\treturn \"<$link to=\"+quoted+\">\"+caption+\"</$link>\";\n\t} else {\n\t\tlog(\"prettylink-placeholder\", logArguments, options);\n\t\tvar ph = this.parser.getPlaceholderFor(toTitle);\n\t\treturn \"<$link to=<<\"+ph+\">>>\"+caption+\"</$link>\";\n\t}\n};\n\nfunction prettyLink(title, caption) {\n\tif (caption) {\n\t\treturn \"[[\" + caption + \"|\" + title + \"]]\";\n\t} else {\n\t\treturn \"[[\" + title + \"]]\";\n\t}\n};\n\nfunction isSafe(value) {\n\treturn value.indexOf(\"]]\") < 0 && value[value.length-1] !== ']';\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/prettylink.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nParses and acknowledges any pragma rules a tiddler has.\n\n\\rules except html wikilink\n\n\\*/\n\nexports.name = \"rules\";\n\n/**This is all we have to do. The rules rule doesn't parse. It just amends\n * the rules, which is exactly what I want it to do too.\n * It also takes care of moving the pos pointer forward.\n */\nexports.relink = function() { this.parse(); };\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/rules.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles replacement of transclusions in wiki text like,\n\n{{RenamedTiddler}}\n{{RenamedTiddler||TemplateTitle}}\n\nThis renames both the tiddler and the template field.\n\n\\*/\n\nvar log = require('$:/plugins/flibbles/relink/js/language.js').logRelink;\nvar refHandler = require(\"$:/plugins/flibbles/relink/js/fieldtypes/reference\");\nvar utils = require(\"./utils.js\");\n\nexports.name = ['transcludeinline', 'transcludeblock'];\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\tvar m = this.match,\n\t\treference = m[1],\n\t\ttemplate = m[2],\n\t\tquoted,\n\t\tlogArguments = {\n\t\t\tfrom: fromTitle,\n\t\t\tto: toTitle,\n\t\t\ttiddler: tiddler.fields.title\n\t\t};\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tvar trimmedRef = $tw.utils.trim(reference);\n\tvar ref = $tw.utils.parseTextReference(trimmedRef);\n\t// This block takes care of 99% of all cases\n\tif (canBePrettyTemplate(toTitle) &&\n\t\t// title part has one extra restriction\n\t    (ref.title !== fromTitle || refHandler.canBePretty(toTitle))) {\n\t\tvar modified = false;\n\t\tif (ref.title === fromTitle) {\n\t\t\tmodified = true;\n\t\t\tref.title = toTitle;\n\t\t\tvar refString = refHandler.toString(ref);\n\t\t\t// preserve user's whitespace\n\t\t\treference = reference.replace(trimmedRef, refString);\n\t\t}\n\t\tif ($tw.utils.trim(template) === fromTitle) {\n\t\t\tmodified = true;\n\t\t\t// preserve user's whitespace\n\t\t\ttemplate = template.replace(fromTitle, toTitle);\n\t\t}\n\t\tif (modified) {\n\t\t\tlog(\"transclude\", logArguments, options);\n\t\t\treturn prettyTransclude(reference, template);\n\t\t}\n\t\treturn undefined;\n\t}\n\t// Now for the 1%...\n\tif (ref.title === fromTitle) {\n\t\tvar resultTitle = utils.wrapAttributeValue(toTitle);\n\t\tif (resultTitle === undefined) {\n\t\t\tresultTitle = \"<<\"+this.parser.getPlaceholderFor(toTitle)+\">>\";\n\t\t\tlog(\"transclude-placeholder\", logArguments, options);\n\t\t} else {\n\t\t\tlog(\"transclude-widget\", logArguments, options);\n\t\t}\n\t\tif ($tw.utils.trim(template) === fromTitle) {\n\t\t\t// Now for this bizarre-ass use-case, where both the\n\t\t\t// title and template are being replaced.\n\t\t\tvar attrs = this.transcludeAttributes(ref.field, ref.index);\n\t\t\treturn \"<$tiddler tiddler=\"+resultTitle+\"><$transclude tiddler=\"+resultTitle+attrs+\"/></$tiddler>\";\n\t\t} else {\n\t\t\tref.title = undefined;\n\t\t\treturn \"<$tiddler tiddler=\"+resultTitle+\">\"+prettyTransclude(ref, template)+\"</$tiddler>\";\n\t\t}\n\t}\n\tif ($tw.utils.trim(template) === fromTitle) {\n\t\tvar resultTemplate = utils.wrapAttributeValue(toTitle);\n\t\tvar message = \"transclude-widget\";\n\t\tvar rtn;\n\t\tif (resultTemplate === undefined) {\n\t\t\tresultTemplate = \"<<\"+this.parser.getPlaceholderFor(toTitle)+\">>\";\n\t\t\tmessage = \"transclude-placeholder\";\n\t\t}\n\t\tif (ref.title) {\n\t\t\tvar resultTitle = utils.wrapAttributeValue(ref.title);\n\t\t\tif (resultTitle === undefined) {\n\t\t\t\t// This is one of the rare cases were we need\n\t\t\t\t// to placeholder a title OTHER than the one\n\t\t\t\t// we're changing.\n\t\t\t\tresultTitle = \"<<\"+this.parser.getPlaceholderFor(ref.title)+\">>\";\n\t\t\t\tmessage = \"transclude-placeholder\";\n\t\t\t}\n\t\t\tvar attrs = this.transcludeAttributes(ref.field, ref.index);\n\t\t\trtn = \"<$tiddler tiddler=\"+resultTitle+\"><$transclude tiddler=\"+resultTemplate+attrs+\"/></$tiddler>\";\n\t\t} else {\n\t\t\trtn = \"<$transclude tiddler=\"+resultTemplate+\"/>\";\n\t\t}\n\t\tlog(message, logArguments, options);\n\t\treturn rtn;\n\t}\n\treturn undefined;\n};\n\nfunction canBePrettyTemplate(value) {\n\treturn value.indexOf('}') < 0 && value.indexOf('{') < 0 && value.indexOf('|') < 0;\n};\n\n/**Returns attributes for a transclude widget.\n * only field or index should be used, not both, but both will return\n * the intuitive (albeit useless) result.\n */\nexports.transcludeAttributes = function(field, index) {\n\treturn rtn = [\n\t\twrapAttribute(this.parser, \"field\", field),\n\t\twrapAttribute(this.parser, \"index\", index)\n\t].join('');\n};\n\nfunction wrapAttribute(wikiRelinker, name, value) {\n\tif (value) {\n\t\tvar wrappedValue = utils.wrapAttributeValue(value);\n\t\tif (wrappedValue === undefined) {\n\t\t\twrappedValue = \"<<\"+wikiRelinker.getPlaceholderFor(value, name)+\">>\";\n\t\t}\n\t\treturn \" \"+name+\"=\"+wrappedValue;\n\t}\n\treturn '';\n};\n\nfunction prettyTransclude(textReference, template) {\n\tif (typeof textReference !== \"string\") {\n\t\ttextReference = refHandler.toString(textReference);\n\t}\n\tif (!textReference) {\n\t\ttextReference = '';\n\t}\n\tif (template !== undefined) {\n\t\treturn \"{{\"+textReference+\"||\"+template+\"}}\";\n\t} else {\n\t\treturn \"{{\"+textReference+\"}}\";\n\t}\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/transclude.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js": {
            "text": "/*\\\nmodule-type: library\n\nUtility methods for the wikitext relink rules.\n\n\\*/\n\n/**Finds an appropriate quote mark for a given value.\n *\n *Tiddlywiki doesn't have escape characters for attribute values. Instead,\n * we just have to find the type of quotes that'll work for the given title.\n * There exist titles that simply can't be quoted.\n * If it can stick with the preference, it will.\n *\n * return: Returns the wrapped value, or undefined if it's impossible to wrap\n */\nexports.wrapAttributeValue = function(value, preference) {\n\tvar whitelist = [\"\", \"'\", '\"', '\"\"\"'];\n\tvar choices = {\n\t\t\"\": function(v) {return !/([\\/\\s<>\"'=])/.test(v); },\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; },\n\t\t'\"\"\"': function(v) {return v.indexOf('\"\"\"') < 0 && v[v.length-1] != '\"';}\n\t};\n\tif (choices[preference] && choices[preference](value)) {\n\t\treturn wrap(value, preference);\n\t}\n\tfor (var i = 0; i < whitelist.length; i++) {\n\t\tvar quote = whitelist[i];\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrap(value, quote);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n};\n\n/**Like wrapAttribute value, except for macro parameters, not attributes.\n *\n * These are more permissive. Allows brackets,\n * and slashes and '<' in unquoted values.\n */\nexports.wrapParameterValue = function(value, preference) {\n\tvar whitelist = [\"\", \"'\", '\"', '[[', '\"\"\"'];\n\tvar choices = {\n\t\t\"\": function(v) {return !/([\\s>\"'=])/.test(v); },\n\t\t\"'\": function(v) {return v.indexOf(\"'\") < 0; },\n\t\t'\"': function(v) {return v.indexOf('\"') < 0; },\n\t\t\"[[\": exports.canBePrettyOperand,\n\t\t'\"\"\"': function(v) {return v.indexOf('\"\"\"') < 0 && v[v.length-1] != '\"';}\n\t};\n\tif (choices[preference] && choices[preference](value)) {\n\t\treturn wrap(value, preference);\n\t}\n\tfor (var i = 0; i < whitelist.length; i++) {\n\t\tvar quote = whitelist[i];\n\t\tif (choices[quote](value)) {\n\t\t\treturn wrap(value, quote);\n\t\t}\n\t}\n\t// No quotes will work on this\n\treturn undefined;\n};\n\nfunction wrap(value, wrapper) {\n\tvar wrappers = {\n\t\t\"\": function(v) {return v; },\n\t\t\"'\": function(v) {return \"'\"+v+\"'\"; },\n\t\t'\"': function(v) {return '\"'+v+'\"'; },\n\t\t'\"\"\"': function(v) {return '\"\"\"'+v+'\"\"\"'; },\n\t\t\"[[\": function(v) {return \"[[\"+v+\"]]\"; }\n\t};\n\tvar chosen = wrappers[wrapper];\n\tif (chosen) {\n\t\treturn chosen(value);\n\t} else {\n\t\treturn undefined;\n\t}\n};\n\n/**Return true if value can be used inside a prettylink.\n */\nexports.canBePretty = function(value) {\n\treturn value.indexOf(\"]]\") < 0 && value[value.length-1] !== ']';\n};\n\nexports.canBePrettyOperand = function(value) {\n\treturn value.indexOf(']') < 0;\n};\n\n/**Given some text, and a param or  attribute within that text, this returns\n * what type of quotation that attribute is using.\n *\n * param: An object in the form {end:, ...}\n */\nexports.determineQuote = function(text, param) {\n\tvar pos = param.end-1;\n\tif (text[pos] === \"'\") {\n\t\treturn \"'\";\n\t}\n\tif (text[pos] === '\"') {\n\t\tif (text.substr(pos-2, 3) === '\"\"\"') {\n\t\t\treturn '\"\"\"';\n\t\t} else {\n\t\t\treturn '\"';\n\t\t}\n\t}\n\tif (text.substr(pos-1,2) === ']]' && text.substr((pos-param.value.length)-3, 2) === '[[') {\n\t\treturn \"[[\";\n\t}\n\treturn '';\n};\n",
            "module-type": "library",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/utils.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js": {
            "text": "/*\\\nmodule-type: relinkwikitextrule\n\nHandles CamelCase links\n\nWikiLink\n\nbut not:\n\n~WikiLink\n\n\\*/\n\nvar log = require('$:/plugins/flibbles/relink/js/language.js').logRelink;\nvar utils = require(\"./utils.js\");\n\nexports.name = \"wikilink\";\n\nexports.relink = function(tiddler, text, fromTitle, toTitle, options) {\n\tthis.parser.pos = this.matchRegExp.lastIndex;\n\tif (this.match[0] === fromTitle && this.match[0][0] !== '~') {\n\t\tvar logArguments = {\n\t\t\tfrom: fromTitle,\n\t\t\tto: toTitle,\n\t\t\ttiddler: tiddler.fields.title\n\t\t};\n\t\tif (toTitle.match(this.matchRegExp) && toTitle[0] !== '~') {\n\t\t\tlog(\"wikilink\", logArguments, options);\n\t\t\treturn toTitle;\n\t\t} else if (utils.canBePretty(toTitle)) {\n\t\t\tlog(\"wikilink-pretty\", logArguments, options);\n\t\t\treturn \"[[\" + toTitle + \"]]\";\n\t\t} else {\n\t\t\tvar ph = this.parser.getPlaceholderFor(toTitle);\n\t\t\tlog(\"wikilink-placeholder\", logArguments, options);\n\t\t\treturn \"<$link to=<<\"+ph+\">>><$text text=<<\"+ph+\">>/></$link>\";\n\t\t}\n\t}\n\treturn undefined;\n};\n",
            "module-type": "relinkwikitextrule",
            "title": "$:/plugins/flibbles/relink/js/relinkoperations/text/wikitext/wikilink.js",
            "type": "application/javascript"
        },
        "$:/plugins/flibbles/relink/js/utils/rebuilder.js": {
            "text": "/*\\\n\nThis helper class aids in reconstructing an existing string with new parts.\n\n\\*/\n\nfunction Rebuilder(text, start) {\n\tthis.text = text;\n\tthis.index = start || 0;\n\tthis.pieces = [];\n};\n\nmodule.exports = Rebuilder;\n\n/**Pieces must be added consecutively.\n * Start and end are the indices in the old string specifying where to graft\n * in the new piece.\n */\nRebuilder.prototype.add = function(value, start, end) {\n\tthis.pieces.push(this.text.substring(this.index, start), value);\n\tthis.index = end;\n};\n\nRebuilder.prototype.changed = function() {\n\treturn this.pieces.length > 0;\n};\n\n/** This sticks something on the beginning of the resulting content.\n */\nRebuilder.prototype.prepend = function(content) {\n\tif (content) {\n\t\tthis.pieces.unshift(content);\n\t}\n};\n\nRebuilder.prototype.results = function(end) {\n\tif (this.changed()) {\n\t\tthis.pieces.push(this.text.substring(this.index, end));\n\t\treturn this.pieces.join('');\n\t}\n\treturn undefined;\n};\n",
            "module-type": "library",
            "title": "$:/plugins/flibbles/relink/js/utils/rebuilder.js",
            "type": "application/javascript"
        },
        "$:/config/flibbles/relink/attributes/$button/to": {
            "title": "$:/config/flibbles/relink/attributes/$button/to",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$checkbox/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$checkbox/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$checkbox/tag": {
            "title": "$:/config/flibbles/relink/attributes/$checkbox/tag",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$count/filter": {
            "title": "$:/config/flibbles/relink/attributes/$count/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/attributes/$draggable/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$draggable/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$draggable/filter": {
            "title": "$:/config/flibbles/relink/attributes/$draggable/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$edit-bitmap/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$edit-text/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$edit-text/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$edit/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$edit/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$encrypt/filter": {
            "title": "$:/config/flibbles/relink/attributes/$encrypt/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/attributes/$fieldmangler/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$fieldmangler/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$fields/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$fields/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$image/source": {
            "title": "$:/config/flibbles/relink/attributes/$image/source",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$importvariables/filter": {
            "title": "$:/config/flibbles/relink/attributes/$importvariables/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/attributes/$linkcatcher/to": {
            "title": "$:/config/flibbles/relink/attributes/$linkcatcher/to",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$linkcatcher/set": {
            "title": "$:/config/flibbles/relink/attributes/$linkcatcher/set",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$link/to": {
            "title": "$:/config/flibbles/relink/attributes/$link/to",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$list/filter": {
            "title": "$:/config/flibbles/relink/attributes/$list/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/attributes/$list/template": {
            "title": "$:/config/flibbles/relink/attributes/$list/template",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$list/editTemplate": {
            "title": "$:/config/flibbles/relink/attributes/$list/editTemplate",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$list/history": {
            "title": "$:/config/flibbles/relink/attributes/$list/history",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$navigator/story": {
            "title": "$:/config/flibbles/relink/attributes/$navigator/story",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$navigator/history": {
            "title": "$:/config/flibbles/relink/attributes/$navigator/history",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$radio/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$radio/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$range/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$range/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$reveal/stateTitle": {
            "title": "$:/config/flibbles/relink/attributes/$reveal/stateTitle",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$select/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$select/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$setvariable/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$setvariable/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$setvariable/subtiddler": {
            "title": "$:/config/flibbles/relink/attributes/$setvariable/subtiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$setvariable/filter": {
            "title": "$:/config/flibbles/relink/attributes/$setvariable/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/attributes/$set/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$set/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$set/subtiddler": {
            "title": "$:/config/flibbles/relink/attributes/$set/subtiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$set/filter": {
            "title": "$:/config/flibbles/relink/attributes/$set/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/attributes/$tiddler/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$tiddler/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$transclude/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$transclude/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$transclude/subtiddler": {
            "title": "$:/config/flibbles/relink/attributes/$transclude/subtiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$view/tiddler": {
            "title": "$:/config/flibbles/relink/attributes/$view/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/attributes/$view/subtiddler": {
            "title": "$:/config/flibbles/relink/attributes/$view/subtiddler",
            "text": "title"
        },
        "$:/plugins/flibbles/relink/configuration": {
            "title": "$:/plugins/flibbles/relink/configuration",
            "text": "<div class=\"tc-control-panel\">\n<<tabs \"[all[shadows+tiddlers]tag[$:/tags/flibbles/relink/Configuration]!has[draft.of]]\" \"$:/plugins/flibbles/relink/ui/configuration/Fields\">>\n</div>\n"
        },
        "$:/config/flibbles/relink/fields/list": {
            "title": "$:/config/flibbles/relink/fields/list",
            "text": "list"
        },
        "$:/config/flibbles/relink/fields/list-after": {
            "title": "$:/config/flibbles/relink/fields/list-after",
            "text": "title"
        },
        "$:/config/flibbles/relink/fields/list-before": {
            "title": "$:/config/flibbles/relink/fields/list-before",
            "text": "title"
        },
        "$:/config/flibbles/relink/fields/tags": {
            "title": "$:/config/flibbles/relink/fields/tags",
            "text": "list"
        },
        "$:/plugins/flibbles/relink/language/Buttons/Delete/Caption": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/Delete/Caption",
            "text": "delete"
        },
        "$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Hint",
            "text": "Specify a new widget/element attribute to be updated whenever a tiddler is renamed"
        },
        "$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/NewAttribute/Caption",
            "text": "add"
        },
        "$:/plugins/flibbles/relink/language/Buttons/NewField/Hint": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/NewField/Hint",
            "text": "Specify a new field to be updated whenever a tiddler is renamed"
        },
        "$:/plugins/flibbles/relink/language/Buttons/NewField/Caption": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/NewField/Caption",
            "text": "add"
        },
        "$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/NewOperator/Hint",
            "text": "Specify a new filter operator to be considered whenever a tiddler is renamed"
        },
        "$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/NewOperator/Caption",
            "text": "add"
        },
        "$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/NewParameter/Hint",
            "text": "Specify a new macro parameter to be updated whenever a tiddler is renamed"
        },
        "$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption": {
            "title": "$:/plugins/flibbles/relink/language/Buttons/NewParameter/Caption",
            "text": "add"
        },
        "$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator": {
            "title": "$:/plugins/flibbles/relink/language/Error/RelinkFilterOperator",
            "text": "Filter Error: Unknown suffix for the 'relink' filter operator"
        },
        "$:/plugins/flibbles/relink/language/Help/Attributes": {
            "title": "$:/plugins/flibbles/relink/language/Help/Attributes",
            "text": "See the [[Attributes documentation page|https://flibbles.github.io/tw5-relink/#Attributes]] for details."
        },
        "$:/plugins/flibbles/relink/language/Help/Fields": {
            "title": "$:/plugins/flibbles/relink/language/Help/Fields",
            "text": "See the [[Fields documentation page|https://flibbles.github.io/tw5-relink/#Fields]] for details."
        },
        "$:/plugins/flibbles/relink/language/Help/Macros": {
            "title": "$:/plugins/flibbles/relink/language/Help/Macros",
            "text": "See the [[Macros documentation page|https://flibbles.github.io/tw5-relink/#Macros]] for details."
        },
        "$:/plugins/flibbles/relink/language/Help/Operators": {
            "title": "$:/plugins/flibbles/relink/language/Help/Operators",
            "text": "See the [[Operators documentation page|https://flibbles.github.io/tw5-relink/#Operators]] for details."
        },
        "$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty": {
            "title": "$:/plugins/flibbles/relink/language/TiddlerInfo/References/Empty",
            "text": "No tiddlers contain any fields, links, macros, transclusions, or widgets referencing this one"
        },
        "$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description": {
            "title": "$:/plugins/flibbles/relink/language/TiddlerInfo/References/Description",
            "text": "The following tiddlers contain fields, links, macros, transclusions, or widgets referencing this one:"
        },
        "$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption": {
            "title": "$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption",
            "text": "//Relink// References"
        },
        "$:/plugins/flibbles/relink/language/ui/Attributes/Caption": {
            "title": "$:/plugins/flibbles/relink/language/ui/Attributes/Caption",
            "text": "Attributes"
        },
        "$:/plugins/flibbles/relink/language/ui/Fields/Caption": {
            "title": "$:/plugins/flibbles/relink/language/ui/Fields/Caption",
            "text": "Fields"
        },
        "$:/plugins/flibbles/relink/language/ui/Macros/Caption": {
            "title": "$:/plugins/flibbles/relink/language/ui/Macros/Caption",
            "text": "Macros"
        },
        "$:/plugins/flibbles/relink/language/ui/Operators/Caption": {
            "title": "$:/plugins/flibbles/relink/language/ui/Operators/Caption",
            "text": "Operators"
        },
        "$:/config/flibbles/relink/macros/csvtiddlers/filter": {
            "title": "$:/config/flibbles/relink/macros/csvtiddlers/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/macros/datauri/title": {
            "title": "$:/config/flibbles/relink/macros/datauri/title",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/jsontiddler/title": {
            "title": "$:/config/flibbles/relink/macros/jsontiddler/title",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/jsontiddlers/filter": {
            "title": "$:/config/flibbles/relink/macros/jsontiddlers/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/macros/list-links/filter": {
            "title": "$:/config/flibbles/relink/macros/list-links/filter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/macros/list-links-draggable/tiddler": {
            "title": "$:/config/flibbles/relink/macros/list-links-draggable/tiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate": {
            "title": "$:/config/flibbles/relink/macros/list-links-draggable/itemTemplate",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/list-tagged-draggable/tag": {
            "title": "$:/config/flibbles/relink/macros/list-tagged-draggable/tag",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate": {
            "title": "$:/config/flibbles/relink/macros/list-tagged-draggable/itemTemplate",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/toc/tag": {
            "title": "$:/config/flibbles/relink/macros/toc/tag",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/toc/selectedTiddler": {
            "title": "$:/config/flibbles/relink/macros/toc/selectedTiddler",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/toc/template": {
            "title": "$:/config/flibbles/relink/macros/toc/template",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/tabs/buttonTemplate": {
            "title": "$:/config/flibbles/relink/macros/tabs/buttonTemplate",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/tabs/default": {
            "title": "$:/config/flibbles/relink/macros/tabs/default",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/tabs/tabsList": {
            "title": "$:/config/flibbles/relink/macros/tabs/tabsList",
            "text": "filter"
        },
        "$:/config/flibbles/relink/macros/tabs/template": {
            "title": "$:/config/flibbles/relink/macros/tabs/template",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/tag/tag": {
            "title": "$:/config/flibbles/relink/macros/tag/tag",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/tag-pill/tag": {
            "title": "$:/config/flibbles/relink/macros/tag-pill/tag",
            "text": "title"
        },
        "$:/config/flibbles/relink/macros/timeline/subfilter": {
            "title": "$:/config/flibbles/relink/macros/timeline/subfilter",
            "text": "filter"
        },
        "$:/config/flibbles/relink/operators/list": {
            "title": "$:/config/flibbles/relink/operators/list",
            "text": "reference"
        },
        "$:/config/flibbles/relink/operators/tag": {
            "title": "$:/config/flibbles/relink/operators/tag",
            "text": "title"
        },
        "$:/config/flibbles/relink/operators/title": {
            "title": "$:/config/flibbles/relink/operators/title",
            "text": "title"
        },
        "$:/config/flibbles/relink/operators/field:title": {
            "title": "$:/config/flibbles/relink/operators/field:title",
            "text": "title"
        },
        "$:/language/EditTemplate/Title/Impossibles/Prompt": {
            "title": "$:/language/EditTemplate/Title/Impossibles/Prompt",
            "text": "The following references to this tiddler can ''not'' be updated by //Relink// due to the complexity of the new title:"
        },
        "$:/language/EditTemplate/Title/References/Prompt": {
            "title": "$:/language/EditTemplate/Title/References/Prompt",
            "text": "The following tiddlers will be updated if relinking:"
        },
        "$:/language/EditTemplate/Title/Relink/Prompt": {
            "title": "$:/language/EditTemplate/Title/Relink/Prompt",
            "text": "Use //Relink// to update ''<$text text=<<fromTitle>>/>'' to ''<$text text=<<toTitle>>/>'' across all other tiddlers"
        },
        "$:/core/ui/EditTemplate/title": {
            "title": "$:/core/ui/EditTemplate/title",
            "tags": "$:/tags/EditTemplate",
            "text": "\\define conditional-list(state, prompt, filter)\n<$list filter=\"[subfilter<__filter__>limit[1]]\" variable=\"listItem\">\n\n<$vars stateTiddler=<<qualify \"$:/state/edit/$state$\">> >\n\n<$reveal type=\"nomatch\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"show\" class=\"tc-btn-invisible\">{{$:/core/images/right-arrow}}\n<<lingo [[$prompt$]]>></$button>\n</$reveal>\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$button set=<<stateTiddler>> setTo=\"hide\" class=\"tc-btn-invisible\">{{$:/core/images/down-arrow}}\n<<lingo [[$prompt$]]>></$button>\n</$reveal>\n\n<$reveal type=\"match\" state=<<stateTiddler>> text=\"show\">\n<$list filter=<<__filter__>> template=\"$:/core/ui/ListItemTemplate\">\n</$list>\n</$reveal>\n\n</$vars>\n\\end\n\n<$edit-text field=\"draft.title\" class=\"tc-titlebar tc-edit-texteditor\" focus=\"true\" tabindex={{$:/config/EditTabIndex}}/>\n\n<$reveal state=\"!!draft.title\" type=\"nomatch\" text={{!!draft.of}} tag=\"div\">\n\n<$list filter=\"[{!!draft.title}!is[missing]]\" variable=\"listItem\">\n\n<div class=\"tc-message-box\">\n\n{{$:/core/images/warning}} {{$:/language/EditTemplate/Title/Exists/Prompt}}\n\n</div>\n\n</$list>\n\n<$list filter=\"[{!!draft.of}!is[missing]]\" variable=\"listItem\">\n\n<$vars fromTitle={{!!draft.of}} toTitle={{!!draft.title}}>\n\n<$checkbox tiddler=\"$:/config/RelinkOnRename\" field=\"text\" checked=\"yes\" unchecked=\"no\" default=\"no\"> {{$:/language/EditTemplate/Title/Relink/Prompt}}</$checkbox>\n\n<<conditional-list impossibles EditTemplate/Title/Impossibles/Prompt \"[{!!draft.title}relink:impossible<fromTitle>]\">>\n\n<<conditional-list references EditTemplate/Title/References/Prompt \"[relink:references<fromTitle>!title[$:/StoryList]sort[title]]\">>\n\n</$vars>\n\n</$list>\n\n</$reveal>\n"
        },
        "$:/plugins/flibbles/relink/readme": {
            "title": "$:/plugins/flibbles/relink/readme",
            "type": "text/vnd.tiddlywiki",
            "text": "When renaming a tiddler, Relink can update the fields, filters, and widgets\nof all other tiddlers. However, it works through whitelisting.\n\nIt's already configured to update tiddler titles for all core widgets, filters,\nand fields, but the whitelists can be customized for each of this in the\nconfiguration panel.\n\nSee [[the tw5-relink website|https://github.com/flibbles/tw5-relink]] for\nmore details and examples.\n"
        },
        "$:/config/flibbles/relink/settings/default-type": {
            "title": "$:/config/flibbles/relink/settings/default-type",
            "text": "title"
        },
        "$:/plugins/flibbles/relink/ui/TiddlerInfo/References": {
            "title": "$:/plugins/flibbles/relink/ui/TiddlerInfo/References",
            "caption": "{{$:/plugins/flibbles/relink/language/TiddlerInfo/References/Caption}}",
            "tags": "$:/tags/TiddlerInfo",
            "text": "\\define lingo-base() $:/plugins/flibbles/relink/language/TiddlerInfo/\n\\define filter() [relink:references<currentTiddler>!title[$:/StoryList]sort[title]]\n<$list filter=\"[subfilter<filter>first[]]\">\n\n<<lingo References/Description>>\n</$list>\n\n<$list filter=<<filter>> emptyMessage=<<lingo References/Empty>> template=\"$:/core/ui/ListItemTemplate\">\n"
        },
        "$:/plugins/flibbles/relink/ui/components/button-delete": {
            "title": "$:/plugins/flibbles/relink/ui/components/button-delete",
            "text": "\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\n<$button class=\"tc-btn-invisible\"><$list filter=\"[all[current]is[tiddler]]\">\n<$action-deletetiddler $tiddler=<<currentTiddler>> />\n</$list><$list filter=\"[all[current]is[shadow]]\">\n<$action-setfield $tiddler=<<tiddlerName>> text=\"\" />\n</$list>\n<$list filter=\"[<tv-config-toolbar-icons>prefix[yes]]\">{{$:/core/images/delete-button}}</$list>\n<$list filter=\"[<tv-config-toolbar-text>prefix[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$(lingo-base)$Delete/Caption}}/></span>\n</$list></$button>\n"
        },
        "$:/plugins/flibbles/relink/ui/components/select-fieldtype": {
            "title": "$:/plugins/flibbles/relink/ui/components/select-fieldtype",
            "text": "<$select tiddler=<<currentTiddler>> default={{$:/config/flibbles/relinke/settings/default-type}} >\n<$list variable=\"option\"\n       filter=\"[[relinkfieldtype]modules[]removeprefix[$:/plugins/flibbles/relink/js/fieldtypes/]removesuffix[.js]move:-100{$:/config/flibbles/relink/settings/default-type}]\">\n<option><$text text=<<option>> /></option>\n</$list>\n</$select>\n"
        },
        "$:/plugins/flibbles/relink/ui/components/tables": {
            "title": "$:/plugins/flibbles/relink/ui/components/tables",
            "text": "\\define prefix(category) $:/config/flibbles/relink/$category$/\n\\define .make-table(title, subfilter, default-table-state:yes)\n\n<$set name=\"table-state\" value=<<qualify \"\"\"$:/state/flibbles/relink/tables/$title$\"\"\">>>\n<tr><th colspan=<<column-count>> style=\"text-align:left;\">\n<$reveal type=\"nomatch\" state=<<table-state>> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<table-state>> setTo=\"yes\">\n{{$:/core/images/right-arrow}}\n</$button>\n</$reveal>\n<$reveal type=\"match\" state=<<table-state>> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$button class=\"tc-btn-invisible tc-btn-dropdown\" set=<<table-state>> setTo=\"no\">\n{{$:/core/images/down-arrow}}\n</$button>\n</$reveal> ''$title$''\n</th></tr>\n<$list filter=\"[$subfilter$prefix<category-prefix>!has[draft.of]has[text]sort[]]\">\n<$set name=\"currentSetting\" filter=\"[all[current]removeprefix<category-prefix>]\">\n<$reveal tag=\"tr\" type=\"match\" state=<<table-state>> text=\"yes\" default=\"\"\"$default-table-state$\"\"\">\n<$macrocall $name=<<__list-row-macro__>> currentSetting=<<currentSetting>> />\n</$reveal>\n</$set>\n</$list>\n</$set>\n\\end\n\n\\define tables(category, list-row-macro, header-list)\n<$set name=\"category-prefix\" value=<<prefix $category$>>>\n<$set name=\"column-count\" filter=\"[enlist<__header-list__>count[]]\">\n\n<table><tbody>\n<tr><$list variable=\"header\" filter=\"[enlist<__header-list__>]\"><th><<header>></th></$list></tr>\n\n<$list variable=\"render\" filter=\"[prefix<category-prefix>!has[draft.of]has[text]!is[shadow]first[]]\">\n<<.make-table Custom \"all[]!is[shadow]\" yes>>\n</$list>\n\n<<.make-table Core \"[$:/plugins/flibbles/relink]plugintiddlers[]\">>\n\n<$list filter=\"[all[shadows]prefix<category-prefix>has[text]shadowsource[]!title[$:/plugins/flibbles/relink]]\">\n<$macrocall $name=\".make-table\" title={{!!description}} subfilter=\"all[current]plugintiddlers[]\" />\n</$list>\n\n</tbody></table>\n</$set></$set>\n\\end\n"
        },
        "$:/plugins/flibbles/relink/ui/configuration/Attributes": {
            "title": "$:/plugins/flibbles/relink/ui/configuration/Attributes",
            "caption": "{{$:/plugins/flibbles/relink/language/ui/Attributes/Caption}}",
            "tags": "$:/tags/flibbles/relink/Configuration",
            "text": "\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define prefix-attr() $:/config/flibbles/relink/attributes/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define state-base() $:/state/flibbles/relink/\n\n\\define row()\n<$set name=\"element\"\n      filter=\"[all[current]removeprefix<prefix-attr>splitbefore[/]removesuffix[/]]\">\n<$set name=\"attribute\"\n      filter=\"[all[current]removeprefix<prefix-attr>removeprefix<element>removeprefix[/]]\">\n<td><$text text=<<element>> /></td>\n<td><$text text=<<attribute>> /></td>\n<td>{{||$:/plugins/flibbles/relink/ui/components/select-fieldtype}}</td>\n<td>{{||$:/plugins/flibbles/relink/ui/components/button-delete}}</td>\n</$set></$set>\n\\end\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Attributes}}\n\n<em class=\"tc-edit\">Add a new attribute:</em>\n<$edit-text tiddler=\"$(state-base)$element-name\"\n            tag=\"input\" default=\"\" placeholder=\"widget/element\" />\n<$edit-text tiddler=\"$(state-base)$attribute-name\"\n            tag=\"input\" default=\"\" placeholder=\"attribute\" />\n<$button tooltip={{$(lingo-base)$NewAttribute/Hint}}\n         aria-label={{$(lingo-base)$NewAttribute/Caption}}>\n<$set name=\"tiddlerName\"\n      filter=\"[<prefix-attr>addsuffix{$(state-base)$element-name}addsuffix[/]addsuffix{$(state-base)$attribute-name}]\">\n<$action-setfield $tiddler=<<tiddlerName>>\n                  text={{$:/config/flibbles/relink/settings/default-type}} />\n</$set>\n<$action-deletetiddler $tiddler=\"$(state-base)$attribute-name\" />\n<$action-deletetiddler $tiddler=\"$(state-base)$element-name\" />\n<$text text={{$(lingo-base)$NewAttribute/Caption}}/>\n</$button>\n\n<$macrocall $name=tables\n\tcategory=\"attributes\"\n\theader-list=\"[[Widget/HTML Element]] Attribute Type Delete\"\n\tlist-row-macro=\"row\" />\n\\end\n\n<<body>>\n"
        },
        "$:/plugins/flibbles/relink/ui/configuration/Fields": {
            "title": "$:/plugins/flibbles/relink/ui/configuration/Fields",
            "caption": "{{$:/plugins/flibbles/relink/language/ui/Fields/Caption}}",
            "tags": "$:/tags/flibbles/relink/Configuration",
            "text": "\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define prefix-fields() $:/config/flibbles/relink/fields/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define state-base() $:/state/flibbles/relink/\n\n\\define row(currentSetting)\n<td><$text text={{{[all[current]removeprefix<prefix-fields>]}}} /></td>\n<td>{{||$:/plugins/flibbles/relink/ui/components/select-fieldtype}}</td>\n<td>{{||$:/plugins/flibbles/relink/ui/components/button-delete}}</td>\n\\end\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Fields}}\n\n<em class=\"tc-edit\">Add a new field:</em>\n<$edit-text tiddler=\"$(state-base)$field-name\"\n            tag=\"input\" default=\"\" placeholder=\"field name\" />\n<$button tooltip={{$(lingo-base)$NewField/Hint}}\n         aria-label={{$(lingo-base)$NewField/Caption}}>\n<$set name=\"tiddlerName\"\n      filter=\"[<prefix-fields>addsuffix{$(state-base)$field-name}]\">\n<$action-setfield $tiddler=<<tiddlerName>>\n                  text={{$:/config/flibbles/relink/settings/default-type}} />\n</$set>\n<$action-deletetiddler $tiddler=\"$(state-base)$field-name\" />\n<$text text={{$(lingo-base)$NewField/Caption}}/>\n</$button>\n\n<$macrocall $name=tables\n\tcategory=\"fields\"\n\theader-list=\"[[Field Name]] [[Field Type]] Delete\"\n\tlist-row-macro=\"row\" />\n\\end\n\n<<body>>\n"
        },
        "$:/plugins/flibbles/relink/ui/configuration/Macros": {
            "title": "$:/plugins/flibbles/relink/ui/configuration/Macros",
            "caption": "{{$:/plugins/flibbles/relink/language/ui/Macros/Caption}}",
            "tags": "$:/tags/flibbles/relink/Configuration",
            "text": "\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define prefix-macro() $:/config/flibbles/relink/macros/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define state-base() $:/state/flibbles/relink/\n\n\\define row(currentSetting)\n<$set name=\"parameter\"\n      filter=\"[all[current]removeprefix<prefix-macro>relink:splitafter[/]]\">\n<$set name=\"macro\"\n      filter=\"[all[current]removeprefix<prefix-macro>removesuffix<parameter>removesuffix[/]]\">\n<td><$text text=<<macro>> /></td>\n<td><$text text=<<parameter>> /></td>\n<td>{{||$:/plugins/flibbles/relink/ui/components/select-fieldtype}}</td>\n<td>{{||$:/plugins/flibbles/relink/ui/components/button-delete}}</td>\n</$set></$set>\n\\end\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Macros}}\n\n<em class=\"tc-edit\">Add a new macro parameter:</em>\n<$edit-text tiddler=\"$(state-base)$macro-name\"\n            tag=\"input\" default=\"\" placeholder=\"macro\" />\n<$edit-text tiddler=\"$(state-base)$parameter-name\"\n            tag=\"input\" default=\"\" placeholder=\"parameter\" />\n<$button tooltip={{$(lingo-base)$NewParameter/Hint}}\n         aria-label={{$(lingo-base)$NewParameter/Caption}}>\n<$set name=\"tiddlerName\"\n      filter=\"[<prefix-macro>addsuffix{$(state-base)$macro-name}addsuffix[/]addsuffix{$(state-base)$parameter-name}]\">\n<$action-setfield $tiddler=<<tiddlerName>>\n                  text={{$:/config/flibbles/relink/settings/default-type}} />\n</$set>\n<$action-deletetiddler $tiddler=\"$(state-base)$parameter-name\" />\n<$action-deletetiddler $tiddler=\"$(state-base)$macro-name\" />\n<$text text={{$(lingo-base)$NewParameter/Caption}}/>\n</$button>\n\n<$macrocall $name=tables\n\tcategory=\"macros\"\n\theader-list=\"Macro Parameter Type Delete\"\n\tlist-row-macro=\"row\" />\n\\end\n\n<<body>>\n"
        },
        "$:/plugins/flibbles/relink/ui/configuration/Operators": {
            "title": "$:/plugins/flibbles/relink/ui/configuration/Operators",
            "caption": "{{$:/plugins/flibbles/relink/language/ui/Operators/Caption}}",
            "tags": "$:/tags/flibbles/relink/Configuration",
            "text": "\\import $:/plugins/flibbles/relink/ui/components/tables\n\\define prefix-ops() $:/config/flibbles/relink/operators/\n\\define lingo-base() $:/plugins/flibbles/relink/language/Buttons/\n\\define state-base() $:/state/flibbles/relink/\n\n\\define row()\n<td><$list variable=\"listItem\" filter=\"[<currentTiddler>removeprefix<prefix-ops>]\"><<listItem>></$list></td>\n<td>{{||$:/plugins/flibbles/relink/ui/components/select-fieldtype}}</td>\n<td>{{||$:/plugins/flibbles/relink/ui/components/button-delete}}</td>\n\\end\n\\define body()\n\n{{$:/plugins/flibbles/relink/language/Help/Operators}}\n\n<em class=\"tc-edit\">Add a new filter operator:</em>\n<$edit-text tiddler=\"$(state-base)$operator-name\"\n            tag=\"input\" default=\"\" placeholder=\"operator name\" />\n<$button tooltip={{$(lingo-base)$NewOperator/Hint}}\n         aria-label={{$(lingo-base)$NewOperator/Caption}}>\n<$set name=\"tiddlerName\"\n      filter=\"[<prefix-ops>addsuffix{$(state-base)$operator-name}]\">\n<$action-setfield $tiddler=<<tiddlerName>> text={{$:/config/flibbles/relink/settings/default-type}} />\n</$set>\n<$action-deletetiddler $tiddler=\"$(state-base)$operator-name\" />\n<$text text={{$(lingo-base)$NewOperator/Caption}}/>\n</$button>\n\n<$macrocall $name=tables\n\tcategory=\"operators\"\n\theader-list=\"[[Filter Operator]] [[Operand Type]] Delete\"\n\tlist-row-macro=\"row\" />\n\\end\n\n<<body>>\n"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/inmysocks/LibraryTracker/Add Books": {
            "caption": "Add Books",
            "created": "20141227050110053",
            "modified": "20150202040250468",
            "title": "$:/plugins/inmysocks/LibraryTracker/Add Books",
            "text": "\\define thisSeriesSelect()\n<$select tiddler='$:/temp/newbook' field='series' default='None'>\n\t<option value=''>--</option>\n\t<$list filter='[[$:/data/SeriesTitles]indexes[]sort[title]regexp:[(?i)$(thisSeriesSearch)$]]'>\n\t\t<option value=<<currentTiddler>>>\n\t\t\t<$view field='title'/>\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\n\\define thisGenreSelect()\n<$select tiddler='$:/temp/newbook' field='genre' default='None'>\n\t<option value=''>--</option>\n\t<$list filter='[[$:/data/BookGenres]indexes[]sort[title]regexp:[(?i)$(thisGenreSearch)$]]'>\n\t\t<option value=<<currentTiddler>>>\n\t\t\t<$view field='title'/>\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\n\\define thisAuthorSelect()\n<$select tiddler='$:/temp/newbook' field='author' default='None'>\n\t<option value=''>--</option>\n\t<$list filter='[[$:/data/BookAuthors]indexes[]sort[title]regexp:[(?i)$(thisAuthorSearch)$]]'>\n\t\t<option value=<<currentTiddler>>>\n\t\t\t<$view field='title'/>\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\n\\define thisLocationSelect()\n<$select tiddler='$:/temp/newbook' field='location' default='None'>\n\t<option value=''>--</option>\n\t<$list filter='[[$:/data/BookLocations]indexes[]sort[title]regexp:[(?i)$(thisLocationSearch)$]]'>\n\t\t<option value=<<currentTiddler>>>\n\t\t\t<$view field='title'/>\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\n\\define thisTagSelect()\n<$select tiddler='$:/state/booktag' field='selected_tag'>\n\t<option value=''>--</option>\n\t<$list filter='[[$:/data/BookTags]indexes[]sort[title]regexp:[(?i)$(thisTagSearch)$]]'>\n\t\t<option value=<<currentTiddler>>>\n\t\t\t<$view field='title'/>\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\n\\define thisOwnerSelect()\n<$select tiddler='$:/temp/newbook' field='owner' default='None'>\n\t<option value=''>--</option>\n\t<$list filter='[[$:/data/BookOwners]indexes[]sort[title]regexp:[(?i)$(thisOwnerSearch)$]]'>\n\t\t<option value=<<currentTiddler>>>\n\t\t\t<$view field='title'/>\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\n\\define thisTypeSelect()\n<$select tiddler='$:/temp/newbook' field='item_type'>\n\t<option value=''>--</option>\n\t<$list filter='[[$:/data/BookTypes]indexes[]sort[title]regexp:[(?i)$(thisTypeSearch)$]]'> <!--  [[Book]][[Video Game]][[Board/Card Game]][[Movie]]'>-->\n\t\t<option>\n\t\t\t<<currentTiddler>>\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\nAdding Items:\n\n<!--Type-->\nType:\n<$reveal state='$:/state/Library Tracker/add type' type=nomatch text='new'>\n\t<$set name=thisTypeSearch value={{$:/state/newbook!!narrow_type_select}}>\n\t\t<<thisTypeSelect>>\n\t</$set>\n\t<$edit-text tiddler='$:/state/newbook' field='narrow_type_select' placeholder='Narrow Type List'/>\n\t(<$button set='$:/state/Library Tracker/add type' setTo='new'>New Item Type</$button>)\n</$reveal>\n<$reveal state='$:/state/Library Tracker/add type' type=match text='new'>\n\t<$edit-text tiddler='$:/state/newbook' field='book_type' placeholder='Item Type'/>\n\t<$button>\n\t\tAdd\n\t\t<$action-setfield $tiddler='$:/data/BookTypes' $index={{$:/state/newbook!!book_type}} $value=1/>\n\t\t<$action-setfield $tiddler='$:/state/newbook' $field='book_author' $value=''/>\n\t</$button>\n\t<$button set='$:/state/Library Tracker/add type' setTo='notnew'>\n\t\tDone\n\t</$button>\n</$reveal>\n<br>\n<!--End Type-->\n<!--Title-->\nTitle:\n<$edit-text tiddler='$:/state/newbook' field='book_title' class='tc-edit-texteditor' placeholder='Book Title'/>\n<!--End Title-->\n<!--Author-->\n<$reveal type=nomatch text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author'>\n\tAuthor: \n\t<$reveal state='$:/state/Library Tracker/add author' type=nomatch text='new'>\n\t\t<$set name=thisAuthorSearch value={{$:/state/newbook!!narrow_author_select}}>\n\t\t\t<<thisAuthorSelect>>\n\t\t</$set>\n\t\t<$edit-text tiddler='$:/state/newbook' field='narrow_author_select' placeholder='Narrow Author List'/>\n\t\t(<$button set='$:/state/Library Tracker/add author' setTo='new'>New Author</$button>)\n\t</$reveal>\n\t<$reveal state='$:/state/Library Tracker/add author' type=match text='new'>\n\t\t<$edit-text tiddler='$:/state/newbook' field='book_author' placeholder='Author'/>\n\t\t<$button>\n\t\t\tAdd\n\t\t\t<$action-setfield $tiddler='$:/data/BookAuthors' $index={{$:/state/newbook!!book_author}} $value=1/>\n\t\t\t<$action-setfield $tiddler='$:/state/newbook' $field='book_author' $value=''/>\n\t\t</$button>\n\t\t<$button set='$:/state/Library Tracker/add author' setTo='notnew'>\n\t\t\tDone\n\t\t</$button>\n\t</$reveal>\n\t<br>\n</$reveal>\n<!--End Author-->\n<!--Series-->\n<$reveal type=nomatch text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series'>\n\tSeries:\n\t<$reveal state='$:/state/Library Tracker/add series' type=nomatch text='new'>\n\t\t<$set name=thisSeriesSearch value={{$:/state/newbook!!narrow_series_select}}>\n\t\t\t<<thisSeriesSelect>>\n\t\t</$set>\n\t\t<$edit-text tiddler='$:/state/newbook' field='narrow_series_select' placeholder='Narrow Series List'/> \n\t\t(<$button set='$:/state/Library Tracker/add series' setTo='new'>New Series</$button>)\n\t</$reveal>\n\t<$reveal state='$:/state/Library Tracker/add series' type=match text='new'>\n\t\t<$edit-text tiddler='$:/state/newbook' field='book_series' placeholder='Series Title'/>\n\t\t<$button>\n\t\t\tAdd\n\t\t\t<$action-setfield $tiddler='$:/data/SeriesTitles' $index={{$:/state/newbook!!book_series}} $value=1/>\n\t\t\t<$action-setfield $tiddler='$:/state/newbook' $field='book_series' $value=''/>\n\t\t</$button>\n\t\t<$button set='$:/state/Library Tracker/add series' setTo='notnew'>\n\t\t\tDone\n\t\t</$button>\n\t</$reveal>\n\t<br>\n</$reveal>\n<!--End Series-->\n<!--Genre-->\n<$reveal type=nomatch text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre'>\n\tGenre:\n\t<$reveal state='$:/state/Library Tracker/add genre' type=nomatch text='new'>\n\t\t<$set name=thisGenreSearch value={{$:/state/newbook!!narrow_genre_select}}>\n\t\t\t<<thisGenreSelect>>\n\t\t</$set>\n\t\t<$edit-text tiddler='$:/state/newbook' field='narrow_genre_select' placeholder='Narrow Genre List'/>\n\t\t(<$button set='$:/state/Library Tracker/add genre' setTo='new'>New Genre</$button>)\n\t</$reveal>\n\t<$reveal state='$:/state/Library Tracker/add genre' type=match text='new'>\n\t\t<$edit-text tiddler='$:/state/newbook' field='book_genre' placeholder='Genre'/>\n\t\t<$button>\n\t\t\tAdd\n\t\t\t<$action-setfield $tiddler='$:/data/BookGenres' $index={{$:/state/newbook!!book_genre}} $value=1/>\n\t\t\t<$action-setfield $tiddler='$:/state/newbook' $field='book_genre' $value=''/>\n\t\t</$button>\n\t\t<$button set='$:/state/Library Tracker/add genre' setTo='notnew'>\n\t\t\tDone\n\t\t</$button>\n\t</$reveal>\n\t<br>\n</$reveal>\n<!--End Genre-->\n<!--Location-->\n<$reveal type=nomatch text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location'>\n\tLocation:\n\t<$reveal state='$:/state/Library Tracker/add location' type=nomatch text='new'>\n\t\t<$set name=thisLocationSearch value={{$:/state/newbook!!narrow_location_select}}>\n\t\t\t<<thisLocationSelect>>\n\t\t</$set>\n\t\t<$edit-text tiddler='$:/state/newbook' field='narrow_location_select' placeholder='Narrow Location List'/>\n\t\t(<$button set='$:/state/Library Tracker/add location' setTo='new'>New  Location</$button>)\n\t</$reveal>\n\t<$reveal state='$:/state/Library Tracker/add location' type=match text='new'>\n\t\t<$edit-text tiddler='$:/state/newbook' field='book_location' placeholder='Location'/>\n\t\t<$button>\n\t\t\tAdd\n\t\t\t<$action-setfield $tiddler='$:/data/BookLocations' $index={{$:/state/newbook!!book_location}} $value=1/>\n\t\t\t<$action-setfield $tiddler='$:/state/newbook' $field='book_location' $value=''/>\n\t\t</$button>\n\t\t<$button set='$:/state/Library Tracker/add location' setTo='notnew'>\n\t\t\tDone\n\t\t</$button>\n\t</$reveal>\n\t<br>\n</$reveal>\n<!--End Location-->\n<!--Owner-->\n<$reveal type=nomatch text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner'>\n\tOwner:\n\t<$reveal state='$:/state/Library Tracker/add owner' type=nomatch text='new'>\n\t\t<$set name=thisOwnerSearch value={{$:/state/newbook!!narrow_owner_select}}>\n\t\t\t<<thisOwnerSelect>>\n\t\t</$set>\n\t\t<$edit-text tiddler='$:/state/newbook' field='narrow_owner_select' placeholder='Narrow Owner List'/>\n\t\t(<$button set='$:/state/Library Tracker/add owner' setTo='new'>New  Owner</$button>)\n\t</$reveal>\n\t<$reveal state='$:/state/Library Tracker/add owner' type=match text='new'>\n\t\t<$edit-text tiddler='$:/state/newbook' field='owner' placeholder='Owner'/>\n\t\t<$button>\n\t\t\tAdd\n\t\t\t<$action-setfield $tiddler='$:/data/BookOwners' $index={{$:/state/newbook!!owner}} $value=1/>\n\t\t\t<$action-setfield $tiddler='$:/state/newbook' $field='owner' $value=''/>\n\t\t</$button>\n\t\t<$button set='$:/state/Library Tracker/add owner' setTo='notnew'>\n\t\t\tDone\n\t\t</$button>\n\t</$reveal>\n</$reveal>\n<!--End Owner-->\n\n\n<!--Tags-->\n<$reveal type=nomatch text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_tags'>\n\tTags (it will always be tagged with `Book` by default):\n\t<br>\n\t<$reveal type=match state='$:/state/newbook!!add_or_create_tag' text='create'>\n\t\tNew Tag:\n\t\t<$edit-text tiddler='$:/state/booktag' field='tag_temp' placeholder='New Tag'/>\n\t\t<$button>\n\t\t\tCreate Tag\n\t\t\t<$action-setfield $tiddler='$:/data/BookTags' $index={{$:/state/booktag!!tag_temp}} $value=1/>\n\t\t\t<$action-setfield $tiddler='$:/state/booktag' $field='tag_temp' $value=''/>\n\t\t</$button>\n\t\t<$button set='$:/state/newbook!!add_or_create_tag' setTo='nocreate'>\n\t\t\tDone\n\t\t</$button>\n\t\t<br>\n\t</$reveal>\n\t<$reveal type='nomatch' state='$:/state/newbook!!add_or_create_tag' text='create'>\n\t\tTag to add: \n\t\t<$set name=thisTagSearch value={{$:/state/newbook!!narrow_tag_select}}>\n\t\t\t<<thisTagSelect>>\n\t\t</$set>\n\t\t<$fieldmangler tiddler='$:/temp/newbook'>\n\t\t\t<$button>\n\t\t\t\tAdd Tag\n\t\t\t\t<$action-sendmessage $message='tm-add-tag' $param={{$:/state/booktag!!selected_tag}}/>\n\t\t\t</$button>\n\t\t\t<$edit-text tiddler='$:/state/newbook' field='narrow_tag_select' placeholder='Narrow Tag List'/>\n\t\t\t(<$button set='$:/state/newbook!!add_or_create_tag' setTo='create'>New Tag</$button>)\n\t\t</$fieldmangler>\n\t\t<br>\n\t</$reveal>\n\tList of current tags:\n\t<br>\n\t<$fieldmangler tiddler='$:/temp/newbook'>\n\t\t<$list filter='[[$:/temp/newbook]tags[]]'>\n\t\t\t<$view field='title'/>\n\t\t\t<$button>\n\t\t\t\tRemove Tag\n\t\t\t\t<$action-sendmessage $message='tm-remove-tag' $param=<<currentTiddler>>/>\n\t\t\t</$button>\n\t\t\t<br>\n\t\t</$list>\n\t</$fieldmangler>\n</$reveal>\n\n<$fieldmangler tiddler={{$:/state/newbook!!book_title}}>\n\t<$button>\n\t\tAdd Book\n\t\t<$reveal type=match text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author'>\n\t\t\t<$action-setfield $tiddler='$:/temp/newbook' author=''/>\n\t\t</$reveal>\n\t\t<$reveal type=match text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series'>\n\t\t\t<$action-setfield $tiddler='$:/temp/newbook' series=''/>\n\t\t</$reveal>\n\t\t<$reveal type=match text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre'>\n\t\t\t<$action-setfield $tiddler='$:/temp/newbook' genre=''/>\n\t\t</$reveal>\n\t\t<$reveal type=match text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location'>\n\t\t\t<$action-setfield $tiddler='$:/temp/newbook' location=''/>\n\t\t</$reveal>\n\t\t<$reveal type=match text=false state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner'>\n\t\t\t<$action-setfield $tiddler='$:/temp/newbook' owner=''/>\n\t\t</$reveal>\n\t\t<$action-setfield $tiddler='$:/temp/newbook' title={{$:/state/newbook!!book_title}}/>\n\t\t<$action-sendmessage $message='tm-add-tag' $param='Book'/>\n\t\t<$action-setfield $tiddler='$:/state/newbook' book_title=''/>\n\t\t<$action-setfield $tiddler='$:/temp/newbook' tags=''/>\n\t</$button>\n</$fieldmangler>"
        },
        "$:/plugins/inmysocks/LibraryTracker/Book List": {
            "caption": "Book List",
            "created": "20141227230158171",
            "modified": "20150202035414054",
            "title": "$:/plugins/inmysocks/LibraryTracker/Book List",
            "text": "\\define thisBookList()\n<$list filter='[tag[Book]$(SelectedFilterPart)$sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]' variable=CurrentBook>\n\t<tr>\n\t\t<td>\n\t\t\t<$link to=<<CurrentBook>>>\n\t\t\t\t<$view tiddler=<<CurrentBook>> field='title'/>\n\t\t\t</$link>\n\t\t</td>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_type' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=item_type/>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=author/>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location' text=false tag=td>\n\t\t\t<<thisSetLocation>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=owner/>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=series/>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=genre/>\n\t\t</$reveal>\n\t</tr>\n</$list>\n\\end\n\n\\define thisBookList2()\n<$list filter='[tag[Book]sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]' variable=CurrentBook>\n\t<tr>\n\t\t<td>\n\t\t\t<$link to=<<CurrentBook>>>\n\t\t\t\t<$view tiddler=<<CurrentBook>> field='title'/>\n\t\t\t</$link>\n\t\t</td>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_type' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=item_type/>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=author/>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location' text=false tag=td>\n\t\t\t<<thisSetLocation>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=owner/>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=series/>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre' text=false tag=td>\n\t\t\t<$view tiddler=<<CurrentBook>> field=genre/>\n\t\t</$reveal>\n\t</tr>\n</$list>\n\\end\n\n\\define thisSelectThing()\n<$reveal type='match' state='$:/state/newbook!!sort' text='author'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t<option value=''>\n\t\tAll\n\t</option>\n\t\t<$list filter='[[$:/data/BookAuthors]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='genre'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/BookGenres]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='series'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/SeriesTitles]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='location'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/BookLocations]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='owner'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/BookOwners]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='type'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/BookTypes]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n\\end\n\n\\define thisMakeSelectedValue()\n$(sortType)$[$(SelectedType)$]\n\\end\n\n\\define count1()\n<$count filter='[tag[Book]$(SelectedFilterPart)$sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]'/>\n\\end\n\n\\define count2()\n<$count filter='[tag[Book]sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]'/>\n\\end\n\n\\define thisSetLocation()\n<$reveal type='nomatch' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='edit'>\n\t\t<$view tiddler=\"\"\"$(CurrentBook)$\"\"\" field=location/>\n\t</$button>\n</$reveal>\n<$reveal type='match' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='noedit'>\n\t\t{{$:/core/images/done-button}}\n\t</$button>\n\t<$select tiddler=\"\"\"$(CurrentBook)$\"\"\" field='location'>\n\t\t<$list filter='[[$:/data/BookLocations]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<<currentTiddler>>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n\\end\n\n\\define thisSortBySelect()\n<$select tiddler='$:/state/newbook' field='sort' default='title'>\n\t<option value='title'>\n\t\tTitle\n\t</option>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_author[false]]'>\n\t\t<option value='author'>\n\t\t\tAuthor\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_genre[false]]'>\n\t\t<option value='genre'>\n\t\t\tGenre\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_series[false]]'>\n\t\t<option value='series'>\n\t\t\tSeries\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_location[false]]'>\n\t\t<option value=location>\n\t\t\tLocation\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_type[false]]'>\n\t\t<option value=item_type>\n\t\t\tItem Type\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_owner[false]]'>\n\t\t<option value=owner>\n\t\t\tOwner\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\n\\define thisSearchBySelect()\n<$select tiddler='$:/state/newbook' field='search_in' default='title'>\n\t<option value='tags'>\n\t\tTag\n\t</option>\n\t<option value='title'>\n\t\tTitle\n\t</option>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_author[false]]'>\n\t\t<option value='author'>\n\t\t\tAuthor\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_genre[false]]'>\n\t\t<option value='genre'>\n\t\t\tGenre\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_series[false]]'>\n\t\t<option value='series'>\n\t\t\tSeries\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_location[false]]'>\n\t\t<option value=location>\n\t\t\tLocation\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_type[false]]'>\n\t\t<option value=item_type>\n\t\t\tItem Type\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_owner[false]]'>\n\t\t<option value=owner>\n\t\t\tOwner\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\nIf you select an author/series/location/genre from the drop down menu, then change the `Sort by` option you will have to select from the second dropdown menu again to get it to display things. Despite it showing `all` when you change the sort by option it keeps the previous value, which is invalid now. If I can get a select widget to active action widgets, or to change multiple fields at the same time than I can fix this.\n\nIf you click on the location of a book it will allow you to change the books location.\n\n|Sort by |<<thisSortBySelect>>|<<thisSelectThing>>|\n|Search by |<<thisSearchBySelect>>|<$edit-text tiddler='$:/state/newbook' field='search_text' placeholder='Search'/>|\n\n<$set name=sortType value={{$:/state/newbook!!sort}}>\n<$set name=searchField value={{$:/state/newbook!!search_in}}>\n<$set name=thisSearch value={{$:/state/newbook!!search_text}}>\n<$set name=SelectedType value={{$:/state/newbook!!selected_type}}>\n<$set name=SelectedFilterPart value=<<thisMakeSelectedValue>>>\n\n<$reveal type='nomatch' state='$:/state/newbook!!selected_type' text=''>\n\tNumber of matching books: <<count1>>\n\t<table>\n\t\t<tr>\n\t\t\t<th>\n\t\t\t\tTitle\n\t\t\t</th>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_type' text=false tag=th>\n\t\t\t\tType\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author' text=false tag=th>\n\t\t\t\tAuthor\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location' text=false tag=th>\n\t\t\t\tLocation\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner' text=false tag=th>\n\t\t\t\tOwner\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series' text=false tag=th>\n\t\t\t\tSeries\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre' text=false tag=th>\n\t\t\t\tGenre\n\t\t\t</$reveal>\n\t\t</tr>\n\t\t<<thisBookList>>\n\t</table>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!selected_type' text=''>\nNumber of matching books: <<count2>>\n\t<table>\n\t\t<tr>\n\t\t\t<th>\n\t\t\t\tTitle\n\t\t\t</th>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_type' text=false tag=th>\n\t\t\t\tType\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author' text=false tag=th>\n\t\t\t\tAuthor\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location' text=false tag=th>\n\t\t\t\tLocation\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner' text=false tag=th>\n\t\t\t\tOwner\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series' text=false tag=th>\n\t\t\t\tSeries\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre' text=false tag=th>\n\t\t\t\tGenre\n\t\t\t</$reveal>\n\t\t</tr>\n\t\t<<thisBookList2>>\n\t</table>\n</$reveal>\n\n</$set>\n</$set>\n</$set>\n</$set>\n</$set>"
        },
        "$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings": {
            "caption": "Settings",
            "created": "20150122105554017",
            "edit_author_list": "blerg",
            "modified": "20150130025204191",
            "show_author": "true",
            "show_genre": "true",
            "show_location": "true",
            "show_series": "true",
            "show_tags": "true",
            "title": "$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings",
            "text": "\\define thisRemoveAuthor()\nSelect Author: <$select tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='edit_author_list'><$list filter='[[$:/data/BookAuthors]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/BookAuthors##$(AuthorToRemove)$'>Remove Author</$button>\n\\end\n\n\\define thisRemoveSeries()\nSelect Series: <$select tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='edit_series_list'><$list filter='[[$:/data/SeriesTitles]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/SeriesTitles##$(SeriesToRemove)$'>Remove Series</$button>\n\\end\n\n\\define thisRemoveGenre()\nSelect Genre: <$select tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='edit_genre_list'><$list filter='[[$:/data/BookGenres]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/BookGenres##$(GenreToRemove)$'>Remove Genre</$button>\n\\end\n\n\\define thisRemoveLocation()\nSelect Location: <$select tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='edit_location_list'><$list filter='[[$:/data/BookLocations]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/BookLocations##$(LocationToRemove)$'>Remove Location</$button>\n\\end\n\n\\define thisRemoveTag()\nSelect Tag: <$select tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='edit_tag_list'><$list filter='[[$:/data/BookTags]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/BookTags##$(TagToRemove)$'>Remove Tag</$button>\n\\end\n\n<$checkbox tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='show_type' checked=true unchecked=false>Show Item Type</$checkbox><br>\n<$checkbox tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='show_author' checked=true unchecked=false>Show Author</$checkbox><br>\n<$checkbox tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='show_series' checked=true unchecked=false>Show Series</$checkbox><br>\n<$checkbox tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='show_genre' checked=true unchecked=false>Show Genre</$checkbox><br>\n<$checkbox tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='show_location' checked=true unchecked=false>Show Location</$checkbox><br>\n<$checkbox tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='show_owner' checked=true unchecked=false>Show Owner</$checkbox><br>\n<$checkbox tiddler='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings' field='show_tags' checked=true unchecked=false>Show Tags</$checkbox><br>\n\n!!Edit Author List\n<$set name=AuthorToRemove value={{$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!edit_author_list}}>\n<<thisRemoveAuthor>>\n</$set>\n\n!!Edit Series List\n<$set name=SeriesToRemove value={{$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!edit_series_list}}>\n<<thisRemoveSeries>>\n</$set>\n\n!!Edit Genre List\n<$set name=GenreToRemove value={{$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!edit_genre_list}}>\n<<thisRemoveGenre>>\n</$set>\n\n!!Edit Location List\n<$set name=LocationToRemove value={{$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!edit_location_list}}>\n<<thisRemoveLocation>>\n</$set>\n\n!!Edit Tag List\n<$set name=TagToRemove value={{$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!edit_tag_list}}>\n<<thisRemoveTag>>\n</$set>"
        },
        "$:/plugins/inmysocks/LibraryTracker/Library Tracker": {
            "book_title": "Boneshaker",
            "caption": "Library Tracker",
            "created": "20141227230052741",
            "list-after": "Bookmarks",
            "modified": "20150203222646555",
            "tags": "Dashboard",
            "title": "$:/plugins/inmysocks/LibraryTracker/Library Tracker",
            "text": "<<tabs \"[[$:/plugins/inmysocks/LibraryTracker/Book List]] [[$:/plugins/inmysocks/LibraryTracker/Add Books]] [[$:/plugins/inmysocks/LibraryTracker/Manage Books]] [[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]]\" \"[[$:/plugins/inmysocks/LibraryTracker/Book List]]\">>"
        },
        "$:/plugins/inmysocks/LibraryTracker/Manage Books": {
            "book_title": "Foundation",
            "caption": "Manage Books",
            "created": "20141227230045301",
            "modified": "20150202040126066",
            "title": "$:/plugins/inmysocks/LibraryTracker/Manage Books",
            "text": "\\define thisMakeSelectedValue()\n$(sortType)$[$(SelectedType)$]\n\\end\n\n\\define count1()\n<$count filter='[tag[Book]$(SelectedFilterPart)$sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]'/>\n\\end\n\n\\define count2()\n<$count filter='[tag[Book]sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]'/>\n\\end\n\n\\define thisSetType()\n<$reveal type='nomatch' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='edit'>\n\t\t<$view tiddler=\"\"\"$(CurrentBook)$\"\"\" field=item_type/>\n\t</$button>\n</$reveal>\n<$reveal type='match' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='noedit'>\n\t\t{{$:/core/images/done-button}}\n\t</$button>\n\t<$select tiddler=\"\"\"$(CurrentBook)$\"\"\" field='item_type'>\n\t\t<$list filter='[[$:/data/BookTypes]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<<currentTiddler>>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n\\end\n\n\\define thisSetAuthor()\n<$reveal type='nomatch' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='edit'>\n\t\t<$view tiddler=\"\"\"$(CurrentBook)$\"\"\" field=author/>\n\t</$button>\n</$reveal>\n<$reveal type='match' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='noedit'>\n\t\t{{$:/core/images/done-button}}\n\t</$button>\n\t<$select tiddler=\"\"\"$(CurrentBook)$\"\"\" field='author'>\n\t\t<$list filter='[[$:/data/BookAuthors]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<<currentTiddler>>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n\\end\n\n\\define thisSetLocation()\n<$reveal type='nomatch' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='edit'>\n\t\t<$view tiddler=\"\"\"$(CurrentBook)$\"\"\" field=location/>\n\t</$button>\n</$reveal>\n<$reveal type='match' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='noedit'>\n\t\t{{$:/core/images/done-button}}\n\t</$button>\n\t<$select tiddler=\"\"\"$(CurrentBook)$\"\"\" field='location'>\n\t\t<$list filter='[[$:/data/BookLocations]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<<currentTiddler>>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n\\end\n\n\\define thisSetOwner()\n<$reveal type='nomatch' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='edit'>\n\t\t<$view tiddler=\"\"\"$(CurrentBook)$\"\"\" field=owner/>\n\t</$button>\n</$reveal>\n<$reveal type='match' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='noedit'>\n\t\t{{$:/core/images/done-button}}\n\t</$button>\n\t<$select tiddler=\"\"\"$(CurrentBook)$\"\"\" field='owner'>\n\t\t<$list filter='[[$:/data/BookOwners]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<<currentTiddler>>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n\\end\n\n\\define thisSetSeries()\n<$reveal type='nomatch' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='edit'>\n\t\t<$view tiddler=\"\"\"$(CurrentBook)$\"\"\" field=series/>\n\t</$button>\n</$reveal>\n<$reveal type='match' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='noedit'>\n\t\t{{$:/core/images/done-button}}\n\t</$button>\n\t<$select tiddler=\"\"\"$(CurrentBook)$\"\"\" field='series'>\n\t\t<$list filter='[[$:/data/SeriesTitles]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<<currentTiddler>>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n\\end\n\n\\define thisSetGenre()\n<$reveal type='nomatch' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='edit'>\n\t\t<$view tiddler=\"\"\"$(CurrentBook)$\"\"\" field=genre/>\n\t</$button>\n</$reveal>\n<$reveal type='match' state=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" text='edit'>\n\t<$button class='tc-btn-invisible' set=\"\"\"$:/state/Library Tracker/$(CurrentBook)$\"\"\" setTo='noedit'>\n\t\t{{$:/core/images/done-button}}\n\t</$button>\n\t<$select tiddler=\"\"\"$(CurrentBook)$\"\"\" field='genre'>\n\t\t<$list filter='[[$:/data/BookGenres]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<<currentTiddler>>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n\\end\n\n\\define thisBookList()\n<$list filter='[tag[Book]$(SelectedFilterPart)$sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]' variable=CurrentBook>\n\t<tr>\n\t\t<td>\n\t\t\t<$link to=<<CurrentBook>>>\n\t\t\t\t<$view tiddler=<<CurrentBook>> field='title'/>\n\t\t\t</$link>\n\t\t</td>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_type' text=false tag=td>\n\t\t\t<<thisSetType>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author' text=false tag=td>\n\t\t\t<<thisSetAuthor>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location' text=false tag=td>\n\t\t\t<<thisSetLocation>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner' text=false tag=td>\n\t\t\t<<thisSetOwner>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series' text=false tag=td>\n\t\t\t<<thisSetSeries>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre' text=false tag=td>\n\t\t\t<<thisSetGenre>>\n\t\t</$reveal>\n\t</tr>\n</$list>\n\\end\n\n\\define thisBookList2()\n<$list filter='[tag[Book]sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]' variable=CurrentBook>\n\t<tr>\n\t\t<td>\n\t\t\t<$link to=<<CurrentBook>>>\n\t\t\t\t<$view tiddler=<<CurrentBook>> field='title'/>\n\t\t\t</$link>\n\t\t</td>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_type' text=false tag=td>\n\t\t\t<<thisSetType>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author' text=false tag=td>\n\t\t\t<<thisSetAuthor>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location' text=false tag=td>\n\t\t\t<<thisSetLocation>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner' text=false tag=td>\n\t\t\t<<thisSetOwner>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series' text=false tag=td>\n\t\t\t<<thisSetSeries>>\n\t\t</$reveal>\n\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre' text=false tag=td>\n\t\t\t<<thisSetGenre>>\n\t\t</$reveal>\n\t</tr>\n</$list>\n\\end\n\n\\define thisSelectThing()\n<$reveal type='match' state='$:/state/newbook!!sort' text='author'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t<option value=''>\n\t\tAll\n\t</option>\n\t\t<$list filter='[[$:/data/BookAuthors]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='genre'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/BookGenres]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='series'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/SeriesTitles]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='location'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/BookLocations]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='owner'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/BookOwners]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!sort' text='type'>\n\t<$select tiddler='$:/state/newbook' field='selected_type'>\n\t\t<option value=''>\n\t\t\tAll\n\t\t</option>\n\t\t<$list filter='[[$:/data/BookTypes]indexes[]]'>\n\t\t\t<option>\n\t\t\t\t<$view field='title'/>\n\t\t\t</option>\n\t\t</$list>\n\t</$select>\n</$reveal>\n\\end\n\n\\define thisSortBySelect()\n<$select tiddler='$:/state/newbook' field='sort' default='title'>\n\t<option value='title'>\n\t\tTitle\n\t</option>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_author[false]]'>\n\t\t<option value='author'>\n\t\t\tAuthor\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_genre[false]]'>\n\t\t<option value='genre'>\n\t\t\tGenre\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_series[false]]'>\n\t\t<option value='series'>\n\t\t\tSeries\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_location[false]]'>\n\t\t<option value=location>\n\t\t\tLocation\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_type[false]]'>\n\t\t<option value=item_type>\n\t\t\tItem Type\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_owner[false]]'>\n\t\t<option value=owner>\n\t\t\tOwner\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\n\\define thisSearchBySelect()\n<$select tiddler='$:/state/newbook' field='search_in' default='title'>\n\t<option value='tags'>\n\t\tTag\n\t</option>\n\t<option value='title'>\n\t\tTitle\n\t</option>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_author[false]]'>\n\t\t<option value='author'>\n\t\t\tAuthor\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_genre[false]]'>\n\t\t<option value='genre'>\n\t\t\tGenre\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_series[false]]'>\n\t\t<option value='series'>\n\t\t\tSeries\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_location[false]]'>\n\t\t<option value=location>\n\t\t\tLocation\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_type[false]]'>\n\t\t<option value=item_type>\n\t\t\tItem Type\n\t\t</option>\n\t</$list>\n\t<$list filter='[[$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings]!show_owner[false]]'>\n\t\t<option value=owner>\n\t\t\tOwner\n\t\t</option>\n\t</$list>\n</$select>\n\\end\n\nTo edit an item, click on the field you want to change and use the dropdown menu to change the value. Edits happen immediately. Click on the <$button class='tc-btn-invisible'>{{$:/core/images/done-button}}</$button> to finish editing.\n\n|Sort by |<<thisSortBySelect>>|<<thisSelectThing>>|\n|Search by |<<thisSearchBySelect>>|<$edit-text tiddler='$:/state/newbook' field='search_text' placeholder='Search'/>|\n\n<$set name=sortType value={{$:/state/newbook!!sort}}>\n<$set name=searchField value={{$:/state/newbook!!search_in}}>\n<$set name=thisSearch value={{$:/state/newbook!!search_text}}>\n<$set name=SelectedType value={{$:/state/newbook!!selected_type}}>\n<$set name=SelectedFilterPart value=<<thisMakeSelectedValue>>>\n\n<$reveal type='nomatch' state='$:/state/newbook!!selected_type' text=''>\n\tNumber of matching books: <<count1>>\n\t<table>\n\t\t<tr>\n\t\t\t<th>\n\t\t\t\tTitle\n\t\t\t</th>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_type' text=false tag=th>\n\t\t\t\tType\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author' text=false tag=th>\n\t\t\t\tAuthor\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location' text=false tag=th>\n\t\t\t\tLocation\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner' text=false tag=th>\n\t\t\t\tOwner\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series' text=false tag=th>\n\t\t\t\tSeries\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre' text=false tag=th>\n\t\t\t\tGenre\n\t\t\t</$reveal>\n\t\t</tr>\n\t\t<<thisBookList>>\n\t</table>\n</$reveal>\n<$reveal type='match' state='$:/state/newbook!!selected_type' text=''>\nNumber of matching books: <<count2>>\n\t<table>\n\t\t<tr>\n\t\t\t<th>\n\t\t\t\tTitle\n\t\t\t</th>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_type' text=false tag=th>\n\t\t\t\tType\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_author' text=false tag=th>\n\t\t\t\tAuthor\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_location' text=false tag=th>\n\t\t\t\tLocation\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_owner' text=false tag=th>\n\t\t\t\tOwner\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_series' text=false tag=th>\n\t\t\t\tSeries\n\t\t\t</$reveal>\n\t\t\t<$reveal type='nomatch' state='$:/plugins/inmysocks/LibraryTracker/Library Tracker Settings!!show_genre' text=false tag=th>\n\t\t\t\tGenre\n\t\t\t</$reveal>\n\t\t</tr>\n\t\t<<thisBookList2>>\n\t</table>\n</$reveal>\n\n</$set>\n</$set>\n</$set>\n</$set>\n</$set>"
        }
    }
}
{"tiddlers":{"$:/plugins/kookma/shiraz/history":{"title":"$:/plugins/kookma/shiraz/history","created":"20200323092614036","modified":"20200325085725882","tags":"","type":"text/vnd.tiddlywiki","text":"Full change log:  [[https://kookma.github.io/TW-Shiraz/#ChangeLog]]\n\n* ''2.1.1'' -- 2020.03.25 -- slider macro with initial status\n* ''2.1.0'' -- 2020.03.23 -- stable release on TW-5.1.22pre\n* ''1.0.0'' -- 2018.10.05 -- first public release\n"},"$:/plugins/kookma/shiraz/license":{"title":"$:/plugins/kookma/shiraz/license","created":"20200323092614037","modified":"20200323092631048","tags":"","type":"text/vnd.tiddlywiki","text":"Distributed under an MIT license.\n\nCopyright (c) 2018-2020 [[Mohammad Rahmani|https://github.com/kookma]]\n\n<<<\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the \"Software\"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n<<<"},"$:/plugins/kookma/shiraz/macros/alerts":{"title":"$:/plugins/kookma/shiraz/macros/alerts","created":"20180821095049685","modified":"20200323093719256","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define alert(type:\"primary\" src:\"\", width:\"100%\", class:\"\")\n<div class=\"alert alert-$type$ $class$\" style=\"width:$width$;\">\n$src$\n</div>\n\\end\n\n\\define alert-leftbar(type:\"primary\" src:\"\", width:\"100%\", class:\"\")\n<div class=\"alert alert-$type$ bg-transparent leftbar border-$type$ $class$\" style=\"width:$width$;\">\n$src$\n</div>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/badge":{"title":"$:/plugins/kookma/shiraz/macros/badge","created":"20181124042103310","modified":"20200323093719649","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define badge(type:\"primary\" src:\"\")\n<span class=\"badge badge-$type$\">$src$</span>\n\\end\n\n\\define badge-pill(type:\"primary\" src:\"\")\n<span class=\"badge badge-pill badge-$type$\">$src$</span>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/card":{"title":"$:/plugins/kookma/shiraz/macros/card","created":"20181124111624466","modified":"20200323093719684","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define card(header:\"Empty\", title:\"Empty\" subtitle:\"Empty\" text:\"Empty\",footer:\"Empty\", width:\"100%\" class:\"\")\n<div class=\"card mb-3 $class$\" style=\"width:$width$;\">\n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__header__>> >\n   <div class=\"card-header\">$header$</div>\n</$reveal>\n<div class=\"card-body\">\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n   <div class=\"h5 card-title\">$title$</div>\n </$reveal>\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__subtitle__>> >\n   <div class=\"h6 card-subtitle mb-2 text-muted\">$subtitle$</div>\n </$reveal>\n <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n    <div class=\"card-text\"><<__text__>></div>\n </$reveal>\n</div>\n<$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n   <div class=\"card-footer text-muted\">$footer$</div>\n</$reveal>\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/dbadge":{"title":"$:/plugins/kookma/shiraz/macros/dbadge","created":"20181203212737578","modified":"20200323093719698","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define dbadge(subject,status, type:\"primary\")\n<div class=\"dbadge\"><span class=\"dbadge-subject\">$subject$</span><span class=\"dbadge-status dbadge-$type$ \">$status$</span></div>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/details":{"title":"$:/plugins/kookma/shiraz/macros/details","created":"20181101185833098","modified":"20200323093719704","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define details(sum:\"summary\", src:\"source\", status:\"\", class:\"\", style:\"\")\n<details $status$>\n <summary style=\"$style$\">$sum$</summary>\n  <div class=\"$class$\">\n\t\n   $src$\n  </div>\n</details>\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/confirm-delete":{"title":"$:/plugins/kookma/shiraz/macros/dtables/confirm-delete","created":"20191129201531051","modified":"20200323093719713","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define confirm-delete()\n<!-- reveals deletion confirmation -->\n<$list filter=\"[subfilter<inputFilter>limit[1]]\" variable=ignore>\n<$reveal class=\"tbl-delete-confirm\" type=\"match\" state=\"$:/temp/tables/delete-all!!text\" text=<<currentTable>> tag=\"tr\">\n<th colspan=<<ncols>> >\n<$list filter=\"[[$:/temp/tables/delete-all]get[confirm]match[yes]]\" \n  variable=ignore emptyMessage=<<ask-for-delete>> >\n  <<perform-delete>>\n</$list>\n</th>\n</$reveal>\n</$list>\n\\end\n\n\\define ask-for-delete()\n<$set name=ntids filter=\"[subfilter<inputFilter>count[]]\">\n   Delete all <<ntids>> records?\n\t<$button class=\"tc-btn-invisible\">\n     <$action-setfield $tiddler=\"$:/temp/tables/delete-all\" $field=\"confirm\" $value=\"yes\"/>\n      {{$:/core/images/delete-button}} yes\n    </$button> or \n    <$button class=\"tc-btn-invisible\">\n      <$action-deletetiddler $tiddler=\"$:/temp/tables/delete-all\"/>\n      {{$:/core/images/close-button}} no\n    </$button>\n</$set>\t\t\t\t\n\\end\n\n\\define perform-delete()\n   Warning! this action cannot be undone!\n\t<$button class=\"tc-btn-invisible\">\n     <$action-deletetiddler $tiddler=\"$:/temp/tables/delete-all\"/>\n     <$list filter=<<inputFilter>> variable=\"currentRecord\">\n        <$action-deletetiddler $tiddler=<<currentRecord>>/>\n     </$list>\n\t\t {{$:/core/images/delete-button}}  delete\n    </$button> or \n    <$button class=\"tc-btn-invisible\">\n      <$action-deletetiddler $tiddler=\"$:/temp/tables/delete-all\"/>\n\t\t\t{{$:/core/images/close-button}} cancel \n    </$button>\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/display-extrecord":{"title":"$:/plugins/kookma/shiraz/macros/dtables/display-extrecord","created":"20191203155802107","modified":"20200323093719719","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define display-extended-record()\n<td colspan=<<ncols>> >\n<$tiddler tiddler=<<currentRecord>> >\n<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore\n  emptyMessage=\"\"\"<$transclude tiddler=<<currentRecord>> field=text mode=block/>\"\"\" >\n  <$edit-text class=\"tbl-inpt-edit\" tiddler=<<currentRecord>> field=\"text\" tag=textarea/>\n</$list>\n</$tiddler>\n</td>\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/helper":{"title":"$:/plugins/kookma/shiraz/macros/dtables/helper","created":"20191203102929722","modified":"20200323093719728","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define columnFilter()    $(columns)$ tbl-delete\n\n\\define tempTable()       $:/state/dynamictables/$(currentTable)$\n\n\\define tempTableSort()   $(tempTable)$/sortby\n\\define tempTagPopup()    $(tempTable)$/$(currentRecord)$/$(currentTiddler)$\n\\define tempTableExpand() $(tempTable)$/expand\n\\define tempPathExpand()  $(tempTableExpand)$##$(currentRecord)$\n\\define tempTableEdit()   $(tempTable)$/edit-view-status\n\n\\define keepstate()       $:/keepstate/dynamictables/$(currentTable)$\n\n\\define tempTableFooter() $(keepstate)$/footer\n\\define tempTableStyle()  $(keepstate)$/style\n\\define tempWarningMsg()  $(keepstate)$/warning\n\n<!-- \n Those tiddlers based on keepstate are permanent.\n These are tiddlers hold the data and setting for footer, styles and warning (needs to be hold).\n These state and temporary tiddlers are independent of currentTiddler (host tiddler) and on changing\n the title of host tiddler will not disconnected to table\n-->"},"$:/plugins/kookma/shiraz/macros/dtables/maths":{"title":"$:/plugins/kookma/shiraz/macros/dtables/maths","created":"20200209153246553","modified":"20200323093719735","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define minall() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>minall[]] }}}/>\n\\define maxall() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>maxall[]] }}}/>\n\\define count() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>count[]] }}}/>\n\\define sum() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>sum[]]   }}}/>\n\\define product() <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>product[]]   }}}/>\n\\define average(pn:0)\n<$vars\n  xcount ={{{[subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>count[]]}}}\n\txsum   ={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>sum[]]   }}} >\n  <$text text={{{ [<xsum>divide<xcount>fixed[$pn$]]   }}}/>\n</$vars>\n\\end\n\n\\define median(pn:0)\n<$vars xcount ={{{[subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>count[]]}}} >\n\t<$list filter=\"[<xcount>remainder[2]match[0]]\" variable=ignore>\n\t<!-- even number --> \n\t<$vars mid0={{{ [<xcount>divide[2]] }}} \n         mid1={{{ [<xcount>divide[2]add[1]] }}} >\t\t \n <$text text={{{[subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>sort[]first<mid0>last[]][subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>sort[]first<mid1>last[]]+[sum[]divide[2]fixed[$pn$]]}}} />\n </$vars>\n </$list>\n <$list filter=\"[<xcount>remainder[2]!match[0]]\" variable=ignore>\n\t<!-- odd number --> \n\t<$vars mid={{{ [<xcount>divide[2]ceil[]] }}} >\n  <$text text={{{ [subfilter<inputFilter>$(getFieldOrIndex)$<currentColumn>sort[]first<mid>last[]]}}} />\n\t</$vars>\n </$list>\n</$vars>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/dtables/show-edit-cell":{"title":"$:/plugins/kookma/shiraz/macros/dtables/show-edit-cell","created":"20200209135600453","modified":"20200323093719743","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define showCell()\n  <$list filter=\"[<fieldOrIndex>]-index\">\n    <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> mode=\"inline\" />\n  </$list>\n  <$list filter=\"[<fieldOrIndex>]-field\">\n    <$transclude tiddler=<<currentRecord>> index=<<currentColumn>> mode=\"inline\" />\n  </$list>\n\\end\t\n\\define editCell()\n  <$list filter=\"[<fieldOrIndex>]-index\">\n    <$edit-text tiddler=<<currentRecord>> field=<<currentColumn>> tag=\"input\" class=\"shiraz-dtable-textbox\"/>\n  </$list>\n  <$list filter=\"[<fieldOrIndex>]-field\">\n    <$edit-text tiddler=<<currentRecord>> index=<<currentColumn>> tag=\"input\" class=\"shiraz-dtable-textbox\"/>\n  </$list>\n\\end\n\n\\define showCell_Locked()\n <span style=\"font-style:oblique;\"><<showCell>></span>\n\\end "},"$:/plugins/kookma/shiraz/macros/dtables/table-dynamic":{"title":"$:/plugins/kookma/shiraz/macros/dtables/table-dynamic","created":"20200209100939116","modified":"20200323093719750","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define table-dynamic(filter, fields:\"\", indexes:\"\", sortOp:\"sort\", caption:\"\", class:\"\", footerRows:\"0\", stateTiddler:\"\", editButton:\"yes\")\n\\import [all[shadows+tiddlers]tag[$:/tags/Table/Macro]]\n\n<!--above commands import utility macros-->\n<$vars \n inputFilter=\"[subfilter<__filter__>!has[draft.of]]\"\n sortType=<<__sortOp__>>\n> \n<$set name=currentTable value=<<__stateTiddler__>> emptyValue=<<currentTiddler>> >\n<!-- check what type of columns are sent, fileds or indexes (data tiddlers as records) -->\n<$set name=fieldOrIndex filter=\"[<__fields__>!is[blank]]\" value=\"field\" emptyValue=\"index\">\n<<check_tiddlers_type_for_table_from_indexes isEditable:\"$editButton$\">>\n<$set name=columns filter=\"[<fieldOrIndex>]-index\" value=<<__fields__>> emptyValue=<<__indexes__>> >\n<!--check input filter parameter-->\n<$list filter=\"[subfilter<inputFilter>limit[1]]\" emptyMessage=\"filter input is empty\" variable=ignore>\n<$set name=sortneg tiddler=<<tempTableSort>> index=\"negate\">\n<!--calculate the number of columns in edit and view mode -->\n<$set name=ncols filter=\"[subfilter<columnFilter>] -[[tbl-delete]] [<tempTableEdit>getindex[mode]match[edit]] +[count[]]\" >\n<div class=\"tbl-container\" style=\"max-width:100%;\">\n<table class=<<__class__>> style=\"caption-side:top\">\n<!-- reveal caption and edit button -------------------->\n<caption style=\"text-align:left;\">\n<$list filter=\"[<__editButton__>match[yes]]\" variavle=ignore>\n<span style=\"padding-right:5px;padding-left:3px;\"><<toggle-edit-view>></span></$list>\n$caption$</caption>\n\n<!-- create header -------------------->\n<thead>\n<<confirm-delete>>\n<tr>\n<$list filter=<<columnFilter>> variable=currentColumn>\n<$set name=\"headerLookup\" filter=\"[all[tiddlers+shadows]tag[$:/tags/Table/HeaderTemplate]contains:tbl-column-list<currentColumn>limit[1]get[title]]\" value=<<headerLookup>> emptyValue=\"$:/plugins/kookma/shiraz/templates/header/default\">\n <$transclude tiddler=<<headerLookup>> field=\"text\" mode=\"inline\"/>\n</$set>\n</$list>\n</tr>\n</thead>\n\n<!-- create footer -------------------->\n<$reveal type=\"gt\" default=<<__footerRows__>> text=\"0\" tag=\"tfoot\" class=\"shiraz-dtable-footer\">\n<$list filter=\"[range[1,$footerRows$]addprefix[footer-]]\" variable=footerRow>\n<tr>\n<$list filter=<<columnFilter>> variable=currentColumn>\n<$set name=\"footerLookup\" filter=\"[all[tiddlers+shadows]tag[$:/tags/Table/FooterTemplate]contains:tbl-column-list<currentColumn>limit[1]get[title]]\" value=<<footerLookup>> emptyValue=\"$:/plugins/kookma/shiraz/templates/footer/default\">\n<$transclude tiddler=<<footerLookup>> field=\"text\" mode=\"inline\"/>\n</$set>\n</$list>\n</tr>\n</$list>\n</$reveal>\n\n<!-- reveal main body of table (generate records) -------------------->\n<tbody>\n<$set name=tableBody filter=\"[<fieldOrIndex>]-index\" value=\"display_body_fields\" emptyValue=\"display_body_indexes\" >\n<$macrocall $name=<<tableBody>> />\n</$set>\n</tbody>\n</table>\n</div><!-- container-->\n</$set>\n</$set>\n</$list><!--check input filter parameter-->\n</$set>\n</$set>\n</$set>\n</$vars>\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/dtables/table-utility":{"title":"$:/plugins/kookma/shiraz/macros/dtables/table-utility","created":"20200209195541061","modified":"20200323093719755","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define tableFilter_fields()   $(inputFilter)$+[$(sortneg)$$(sortType)${$(tempTableSort)$##sortIndex}]\n\\define tableFilter_indexes()  [enlist<items>]+[$(sortneg)$$(sortType)$[]]\n\n\\define getitems()\n<$set name=Index tiddler=<<tempTableSort>> index=\"sortIndex\">\n<$list filter=\"[subfilter<inputFilter>!has[draft.of]]\" >\n<$text text=\"[[\"/>{{{ [<currentTiddler>getindex<Index>addsuffix[°≡°]] }}}<<currentTiddler>><$text text=\"]]\"/>\n</$list>\n</$set>\n\\end\n\n\\define display_one_record()\n<$wikify name=\"rowStyle\" text=\"\"\"<$transclude tiddler=<<tempTableStyle>> index=<<currentRecord>> />\"\"\" mode=\"inline\">\n<tr style=<<rowStyle>>>\n<$list filter=<<columnFilter>> variable=currentColumn>\n<$set name=\"bodyLookup\" \n  filter=\"[all[tiddlers+shadows]tag[$:/tags/Table/BodyTemplate]contains:tbl-column-list<currentColumn>]\n          +[limit[1]get[title]]\"\n  value=<<bodyLookup>> \n  emptyValue=\"$:/plugins/kookma/shiraz/templates/body/default\">\n<$transclude tiddler=<<bodyLookup>> field=\"text\" mode=\"inline\"/>\n</$set>\n</$list>\n</tr>\n<!-- reveal expanded record-->\n<$reveal type=\"match\" state=<<tempPathExpand>> text=\"show\" tag=\"tr\">\n<<display-extended-record>>\n</$reveal>\n</$wikify>\n\\end\n\n\\define display_body_fields()\n<$list filter=<<tableFilter_fields>> variable=\"currentRecord\">\n<<display_one_record>>\n</$list>\n\\end\n\n\\define display_body_indexes()\n<$wikify name=\"items\" text=<<getitems>> > \n<$list filter=<<tableFilter_indexes>> variable=\"currentItem\" >\n<$list filter=\"[<currentItem>split[°≡°]last[]]\" variable=\"currentRecord\">\n <<display_one_record>>\n</$list>\n</$list>\n</$wikify>\n\\end\n\n"},"$:/plugins/kookma/shiraz/macros/dtables/toggle-edit-view":{"title":"$:/plugins/kookma/shiraz/macros/dtables/toggle-edit-view","created":"20191128215812372","modified":"20200323093719762","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define toggle-edit-view()\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\" setTitle=<<tempTableEdit>> setIndex=\"mode\" setTo=\"edit\">{{$:/core/images/edit-button}}</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\">\n<$button class=\"tc-btn-invisible tc-tiddlylink\" setTitle=<<tempTableEdit>> setIndex=\"mode\" setTo=\"view\">{{$:/core/images/done-button}}</$button>\n</$reveal>\n\\end"},"$:/plugins/kookma/shiraz/macros/dtables/warning_message":{"title":"$:/plugins/kookma/shiraz/macros/dtables/warning_message","created":"20200210083402839","modified":"20200323093719767","tags":"$:/tags/Table/Macro","type":"text/vnd.tiddlywiki","text":"\\define show_tiddler_types()\n<details>\n  <summary>List tiddlers with wrong type</summary>\n\t<dl>\n  <$list filter=\"[subfilter<inputFilter>]\">\n\t<$list filter=\"[<currentTiddler>get[type]match[application/x-tiddler-dictionary]][<currentTiddler>get[type]match[application/json]]\" variable=ignore\n\temptyMessage=\"\"\"<dt><$link/></dt><dd><$view field=type/></dd>\"\"\">\n\t</$list>\n\t</$list>\n\t</dl>\n</details>\n\\end\n\n\n\\define show_warning_message()\nDynamic editable table from ''indexes'' expects all input tiddlers are of dataTiddler (json or dictionary) types. Using tiddlers of non //json// or //x-tiddler-dictionary// types as input can unintentionally overwrite the data in the text field of those tiddlers.<br>\n<br>\nCheck the tiddler types to find which tiddlers are not of dataTiddler types!<br>\n<<show_tiddler_types>>\n\\end\n\n\n\\define check_tiddlers_type_for_table_from_indexes(isEditable)\n  <$list filter=\"[<fieldOrIndex>]-field\" variable=ignore><!-- only dataTiddler -->\n\t<$list filter=\"[<__isEditable__>match[yes]]\" variable=ignore> <!-- only editable table -->\n\t<$list filter=\"[<tempWarningMsg>is[missing]]\" variable=ignore><!-- dismiss if tempWarningMsg is set -->\n\t<$list filter=\"[subfilter<inputFilter>each[type]get[type]]-[[application/x-tiddler-dictionary]]-[[application/json]]\" variable=ignore>\n\t <div style=\"color: white;background-color:#ff0033;padding:8px;text-align:center;width:100%;\">\n\t Danger: Editable dynamic table from idexes with mixed types of tiddlers! &nbsp;\n\t <$button class=\"tc-btn-invisible tc-tiddlylink\" style=\"fill:white;\" tooltip=\"Dismiss alert and continue with the current selection!\">{{$:/core/images/close-button}}\n   <$action-setfield $tiddler=<<tempWarningMsg>> text=\"dissmiss\"/>\n   </$button>\n\t </div>\n\t <div style=\"border:1px solid #ff0033;padding:8px;\">\n\t <<show_warning_message>>\n\t </div>\n  </$list>\n\t</$list>\n\t</$list>\n\t</$list>\n\\end\t\n"},"$:/plugins/kookma/shiraz/macros/image-basic":{"title":"$:/plugins/kookma/shiraz/macros/image-basic","created":"20181119183704246","modified":"20200323093719776","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-basic(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n<figure class=\"image-simple image-align-$align$\" style=\"width:$width$;\">\n  <$image source=<<__img__>> tooltip=<<__tooltip__>> alt=<<__alt__>> /> \n  <figcaption>$caption$</figcaption>\n</figure> \n\\end"},"$:/plugins/kookma/shiraz/macros/image-card-utility":{"title":"$:/plugins/kookma/shiraz/macros/image-card-utility","created":"20191209113750505","modified":"20200323093719788","type":"text/vnd.tiddlywiki","text":"\\define image-card-top(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n<div class=\"card image-align-$align$\" style=\"width:$width$;\">\n  <$image class=\"card-img-top\" source=<<__img__>> alt=<<__alt__>> />\n  <div class=\"card-body\">\n    <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n      <div class=\"h5 card-title\">$title$</div>\n    </$reveal>  \n    <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n      <div class=\"card-text\">$text$</div>\n    </$reveal> \n    <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n      <p class=\"card-text\"><small class=\"text-muted\">$footer$</small></p>\n    </$reveal>\n  </div>  \n</div>\n\\end\n\n\\define image-card-bottom(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n<div class=\"card image-align-$align$\" style=\"width:$width$;\">\n  <div class=\"card-body\">\n    <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n      <div class=\"h5 card-title\">$title$</div>\n    </$reveal>  \n    <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n      <div class=\"card-text\">$text$</div>\n    </$reveal> \n    <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n      <p class=\"card-text\"><small class=\"text-muted\">$footer$</small></p>\n    </$reveal>\n  </div>  \n  <$image class=\"card-img-bottom\" source=<<__img__>> alt=<<__alt__>> />\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/image-card":{"title":"$:/plugins/kookma/shiraz/macros/image-card","created":"20190913094619863","modified":"20200323093719782","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-card(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", pos:\"top\", alt:\"\")\n\\import $:/plugins/kookma/shiraz/macros/image-card-utility\n<$reveal tag=\"div\" type=\"match\" default=\"top\" text=<<__pos__>> >\n<$macrocall $name=image-card-top img=<<__img__>> title=<<__title__>> text=<<__text__>>\n  footer=<<__footer__>> width=<<__width__>> align=<<__align__>> alt=<<__alt__>> />\n</$reveal>\n<$reveal tag=\"div\" type=\"nomatch\" default=\"top\" text=<<__pos__>> >\n<$macrocall $name=image-card-bottom img=<<__img__>> title=<<__title__>> text=<<__text__>>\n  footer=<<__footer__>> width=<<__width__>> align=<<__align__>> alt=<<__alt__>> />\n</$reveal>\n\\end\n\n\\define image-card-top(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n<div class=\"card image-align-$align$\" style=\"width:$width$;\">\n  <$image class=\"card-img-top\" source=<<__img__>> alt=<<__alt__>> />\n  <div class=\"card-body\">\n    <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n      <div class=\"h5 card-title\">$title$</div>\n    </$reveal>  \n    <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n      <div class=\"card-text\">$text$</div>\n    </$reveal> \n    <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n      <p class=\"card-text\"><small class=\"text-muted\">$footer$</small></p>\n    </$reveal>\n  </div>  \n</div>\n\\end\n\n\\define image-card-bottom(img, width:\"30%\", align:\"none\", title:\"Empty\", text:\"Empty\", footer:\"Empty\", alt:\"\")\n<div class=\"card image-align-$align$\" style=\"width:$width$;\">\n  <div class=\"card-body\">\n    <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__title__>> >\n      <div class=\"h5 card-title\">$title$</div>\n    </$reveal>  \n    <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__text__>> >\n      <div class=\"card-text\">$text$</div>\n    </$reveal> \n    <$reveal tag=\"div\" type=\"nomatch\" default=\"Empty\" text=<<__footer__>> >\n      <p class=\"card-text\"><small class=\"text-muted\">$footer$</small></p>\n    </$reveal>\n  </div>  \n  <$image class=\"card-img-bottom\" source=<<__img__>> alt=<<__alt__>> />\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/image-overlay-utility":{"title":"$:/plugins/kookma/shiraz/macros/image-overlay-utility","created":"20191209114338849","modified":"20200323093719804","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define _cls-content-details() image-overlay-content-details $(fdcls)$"},"$:/plugins/kookma/shiraz/macros/image-overlay":{"title":"$:/plugins/kookma/shiraz/macros/image-overlay","created":"20181117203737197","modified":"20200323093719798","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-overlay(img, width:\"30%\", align:\"none\", caption:\"\", title:\"\", text:\"\", fadein:\"left\", alt:\"\")\n\\import $:/plugins/kookma/shiraz/macros/image-overlay-utility\n<div class=\"image-overlay-container image-align-$align$\" style=\"width:$width$;\">\n    <h3 class=\"image-overlay-title\">$caption$</h3>\n    <div class=\"image-overlay-content\">\n      <div class=\"image-overlay-content-overlay\"></div>\n      <$image class=\"image-overlay-content-image\" source=<<__img__>> alt=<<__alt__>>/>\n      <$set name=\"fdcls\" filter=\"$fadein$ +[splitbefore[ ]] +[addprefix[image-overlay-fadeIn-]]\">\n      <div class=<<_cls-content-details>> >\n        <h3 class=\"image-overlay-content-title\">$title$</h3>\n        <p class=\"image-overlay-content-text\">$text$</p>\n      </div>\n      </$set>\n  </div>\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/image-polaroid":{"title":"$:/plugins/kookma/shiraz/macros/image-polaroid","created":"20181117203654803","modified":"20200323093719811","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-polaroid(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n<figure class=\"image-polaroid image-align-$align$\" style=\"width:$width$;\">\n  <$image source=\"\"\"$img$\"\"\" tooltip=\"\"\"$tooltip$\"\"\"/>\n  <figcaption class=\"image-polaroid-caption\">$caption$</figcaption>\n</figure> \n\\end"},"$:/plugins/kookma/shiraz/macros/image-pretty":{"title":"$:/plugins/kookma/shiraz/macros/image-pretty","created":"20181117203541398","modified":"20200323093719817","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-pretty(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", alt:\"\")\n<figure class=\"image-pretty image-align-$align$\" style=\"width:$width$;\">\n  <$image source=<<__img__>> tooltip=<<__tooltip__>> alt=<<__alt__>> /> \n  <figcaption class=\"image-pretty-caption\">$caption$</figcaption>\n</figure> \n\\end"},"$:/plugins/kookma/shiraz/macros/image-slidein":{"title":"$:/plugins/kookma/shiraz/macros/image-slidein","created":"20181117040544570","modified":"20200323093719824","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define image-slidein(img, width:\"30%\", align:\"none\", caption:\"\", tooltip:\"\", slidein:\"left\", alt:\"\")\n<figure class=\"image-slidein mr-cap-$slidein$ image-align-$align$\" style=\"width:$width$;\">\n  <$image source=<<__img__>> tooltip=<<__tooltip__>> alt=<<__alt__>>/>\n  <figcaption>$caption$</figcaption>\n</figure> \n\\end"},"$:/plugins/kookma/shiraz/macros/list-search":{"title":"$:/plugins/kookma/shiraz/macros/list-search","author":"Jeremy Ruston","created":"20191209101857832","creator":"Mohammad","description":"creates few paragraphs of dumy text","modified":"20200323093719831","modifier":"Mohammad","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define list-search( filter:\"[!is[system]]\", search:\"search:title\", template:\"$:/core/ui/ListItemTemplate\",\n class:\"\", stateTiddler:\"\", placeholder:\"keywords\")\n<$set name=\"state\" filter=\"[[$:/temp/list-search]addsuffix[/$stateTiddler$]addsuffix<qualify>]\">\n<div class=<<__class__>> >\n<$edit-text tiddler=<<state>> type=\"search\" tag=\"input\" default=\"\" placeholder=\"$placeholder$\"/>\n</div>\n<$reveal state=<<state>> type=\"match\" text=\"\" class=<<__class__>> tag=div>\n<$list filter=\"$filter$\" template=<<__template__>>/>\n</$reveal>\n<$reveal state=<<state>> type=\"nomatch\" text=\"\" class=<<__class__>> tag=div>\n<$set name=term tiddler=<<state>> field=\"text\">\n<$list filter=\"$filter$+[$search$<term>]\" template=<<__template__>>/>\n</$set>\n</$reveal>\n</$set>\n\\end\n<!-- from Tobias Beer list-search with modification-->"},"$:/plugins/kookma/shiraz/macros/multicol":{"title":"$:/plugins/kookma/shiraz/macros/multicol","created":"20191018063242993","modified":"20200323093719835","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define multicol(src, ncol:\"\", class:\"\")\n<div class=\"sh-multicol$ncol$ $class$\">\n\n$src$\n</div>\n\\end"},"$:/plugins/kookma/shiraz/macros/slider":{"title":"$:/plugins/kookma/shiraz/macros/slider","created":"20190322161929431","description":"Slider macro shows (hides) its content.","modified":"20201113161937207","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define slider(label, src, labelClass, srcClass, status:\"closed\")\n<$set name=\"revealState\" value=\"\"\"$:/state/shiraz/slider-macro/$(currentTiddler)$/$label$\"\"\">\n\n<h2 class=\"$labelClass$\">\n  <$reveal type=\"nomatch\" state=<<revealState>> text=\"open\" default=\"$status$\">\n    <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<<revealState>> setTo=\"open\">\n     <span class=\"kk-sh-slider\"><$transclude tiddler=\"$:/core/images/right-arrow\" /></span>\n    </$button>\n  </$reveal>\n  <$reveal type=\"match\" state=<<revealState>> text=\"open\" default=\"$status$\">\n    <$button class=\"tc-btn-invisible tc-tiddlylink\" set=<<revealState>> setTo=\"closed\">\n      <span class=\"kk-sh-slider\"><$transclude tiddler=\"$:/core/images/down-arrow\" /></span>\n    </$button>\n  </$reveal>\n  $label$\n</h2>\n\n<$reveal type=\"match\" state=<<revealState>> text=\"open\" default=\"$status$\" class=\"$srcClass$\">\n\n$src$\n</$reveal>\n</$set>\n\\end"},"$:/plugins/kookma/shiraz/macros/space":{"title":"$:/plugins/kookma/shiraz/macros/space","created":"20170629183034888","modified":"20200323093719849","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define vspace(height:\"25px\")\n<p style=\"margin-bottom: $height$;\"></p>\n\\end\n\n\\define hspace(width:\"25px\")\n<span style=\"margin-left: $width$;\"></span>\n\\end\n"},"$:/plugins/kookma/shiraz/macros/text-utility":{"title":"$:/plugins/kookma/shiraz/macros/text-utility","created":"20181101154956345","modified":"20200323093719853","tags":"$:/tags/Macro","type":"text/vnd.tiddlywiki","text":"\\define tc(src:\"\", color:\"red\") <span style=\"color:$color$;\">$src$</span>\n\\define bc(src:\"\", color:\"yellow\") <span style=\"background-color:$color$;\">$src$</span>\n\\define mono(src:\"\", class:\"\") <code class=\"mono $class$\">$src$</code>\n\\define transform(case:\"\", src:\"\", class:\"\") <span class=\"text-$case$ $class$\">$src$</span>"},"$:/plugins/kookma/shiraz/readme":{"title":"$:/plugins/kookma/shiraz/readme","created":"20200323092614037","modified":"20200323134846163","tags":"","type":"text/vnd.tiddlywiki","text":"; Shiraz\nShiraz is a small framework including stylesheets, templates and macros to create stylish contents in Tiddlywiki. It uses modified CSS classes from [[Bootstrap|https://getbootstrap.com/]] 4.3.1. Shiraz has customized elements like alerts, cards, panels, images, static tables, dynamic tables, badges, texts, ...\n\n;Code and demo\nFor learning plugin features, syntax, tutorial and examples see the plugin demo and code pages\n\n* Demo: https://kookma.github.io/TW-Shiraz/\n* Code: https://github.com/kookma/TW-Shiraz\n"},"$:/plugins/kookma/shiraz/styles/alerts-leftbar":{"title":"$:/plugins/kookma/shiraz/styles/alerts-leftbar","text":".leftbar{\n  border-width:0px !important;\n  border-radius:0px !important;\n  border-left-width: 5px !important;\n}","created":"20181208184228896","modified":"20200323093719861","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/alerts":{"title":"$:/plugins/kookma/shiraz/styles/bs/alerts","text":"/*Was taken from bootstrap 4.1.3*/\n.alert {\n  position: relative;\n  padding: 0.75rem 1.25rem;\n  margin-bottom: 1rem;\n  border: 1px solid transparent;\n  border-radius: 0.25rem;\n}\n.alert-primary {\n  color: #004085;\n  background-color: #cce5ff;\n  border-color: #b8daff;\n}\n\n.alert-primary hr {\n  border-top-color: #9fcdff;\n}\n.alert-secondary {\n  color: #383d41;\n  background-color: #e2e3e5;\n  border-color: #d6d8db;\n}\n\n.alert-secondary hr {\n  border-top-color: #c8cbcf;\n}\n\n.alert-success {\n  color: #155724;\n  background-color: #d4edda;\n  border-color: #c3e6cb;\n}\n\n.alert-success hr {\n  border-top-color: #b1dfbb;\n}\n.alert-info {\n  color: #0c5460;\n  background-color: #d1ecf1;\n  border-color: #bee5eb;\n}\n\n.alert-info hr {\n  border-top-color: #abdde5;\n}\n.alert-warning {\n  color: #856404;\n  background-color: #fff3cd;\n  border-color: #ffeeba;\n}\n\n.alert-warning hr {\n  border-top-color: #ffe8a1;\n}\n\n.alert-danger {\n  color: #721c24;\n  background-color: #f8d7da;\n  border-color: #f5c6cb;\n}\n\n.alert-danger hr {\n  border-top-color: #f1b0b7;\n}\n.alert-light {\n  color: #818182;\n  background-color: #fefefe;\n  border-color: #fdfdfe;\n}\n\n.alert-light hr {\n  border-top-color: #ececf6;\n}\n.alert-dark {\n  color: #1b1e21;\n  background-color: #d6d8d9;\n  border-color: #c6c8ca;\n}\n\n.alert-dark hr {\n  border-top-color: #b9bbbe;\n}\n","created":"20180820171551129","modified":"20200323093719869","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/background-colors":{"title":"$:/plugins/kookma/shiraz/styles/bs/background-colors","text":".bg-primary {\n  background-color: #007bff !important;\n}\n\na.bg-primary:hover, a.bg-primary:focus,\nbutton.bg-primary:hover,\nbutton.bg-primary:focus {\n  background-color: #0062cc !important;\n}\n\n.bg-secondary {\n  background-color: #6c757d !important;\n}\n\na.bg-secondary:hover, a.bg-secondary:focus,\nbutton.bg-secondary:hover,\nbutton.bg-secondary:focus {\n  background-color: #545b62 !important;\n}\n\n.bg-success {\n  background-color: #28a745 !important;\n}\n\na.bg-success:hover, a.bg-success:focus,\nbutton.bg-success:hover,\nbutton.bg-success:focus {\n  background-color: #1e7e34 !important;\n}\n\n.bg-info {\n  background-color: #17a2b8 !important;\n}\n\na.bg-info:hover, a.bg-info:focus,\nbutton.bg-info:hover,\nbutton.bg-info:focus {\n  background-color: #117a8b !important;\n}\n\n.bg-warning {\n  background-color: #ffc107 !important;\n}\n\na.bg-warning:hover, a.bg-warning:focus,\nbutton.bg-warning:hover,\nbutton.bg-warning:focus {\n  background-color: #d39e00 !important;\n}\n\n.bg-danger {\n  background-color: #dc3545 !important;\n}\n\na.bg-danger:hover, a.bg-danger:focus,\nbutton.bg-danger:hover,\nbutton.bg-danger:focus {\n  background-color: #bd2130 !important;\n}\n\n.bg-light {\n  background-color: #f8f9fa !important;\n}\n\na.bg-light:hover, a.bg-light:focus,\nbutton.bg-light:hover,\nbutton.bg-light:focus {\n  background-color: #dae0e5 !important;\n}\n\n.bg-dark {\n  background-color: #343a40 !important;\n}\n\na.bg-dark:hover, a.bg-dark:focus,\nbutton.bg-dark:hover,\nbutton.bg-dark:focus {\n  background-color: #1d2124 !important;\n}\n\n.bg-white {\n  background-color: #fff !important;\n}\n\n.bg-transparent {\n  background-color: transparent !important;\n}","created":"20180820170518161","modified":"20200323093719877","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/badge":{"title":"$:/plugins/kookma/shiraz/styles/bs/badge","text":"/* Extracted from bootstrap 4.1.3 */\n.badge {\n  display: inline-block;\n  padding: 0.25em 0.4em;\n  font-size: 75%;\n  font-weight: 700;\n  line-height: 1;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25rem;\n}\n\n.badge:empty {\n  display: none;\n}\n\n.btn .badge {\n  position: relative;\n  top: -1px;\n}\n\n.badge-pill {\n  padding-right: 0.6em;\n  padding-left: 0.6em;\n  border-radius: 10rem;\n}\n\n.badge-primary {\n  color: #fff;\n  background-color: #007bff;\n}\n\n.badge-primary[href]:hover, .badge-primary[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #0062cc;\n}\n\n.badge-secondary {\n  color: #fff;\n  background-color: #6c757d;\n}\n\n.badge-secondary[href]:hover, .badge-secondary[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #545b62;\n}\n\n.badge-success {\n  color: #fff;\n  background-color: #28a745;\n}\n\n.badge-success[href]:hover, .badge-success[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #1e7e34;\n}\n\n.badge-info {\n  color: #fff;\n  background-color: #17a2b8;\n}\n\n.badge-info[href]:hover, .badge-info[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #117a8b;\n}\n\n.badge-warning {\n  color: #212529;\n  background-color: #ffc107;\n}\n\n.badge-warning[href]:hover, .badge-warning[href]:focus {\n  color: #212529;\n  text-decoration: none;\n  background-color: #d39e00;\n}\n\n.badge-danger {\n  color: #fff;\n  background-color: #dc3545;\n}\n\n.badge-danger[href]:hover, .badge-danger[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #bd2130;\n}\n\n.badge-light {\n  color: #212529;\n  background-color: #f8f9fa;\n}\n\n.badge-light[href]:hover, .badge-light[href]:focus {\n  color: #212529;\n  text-decoration: none;\n  background-color: #dae0e5;\n}\n\n.badge-dark {\n  color: #fff;\n  background-color: #343a40;\n}\n\n.badge-dark[href]:hover, .badge-dark[href]:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: #1d2124;\n}\n\n","created":"20181122140031075","modified":"20200323093719884","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/borders":{"title":"$:/plugins/kookma/shiraz/styles/bs/borders","text":".border {\n  border: 1px solid #dee2e6 !important;\n}\n\n.border-top {\n  border-top: 1px solid #dee2e6 !important;\n}\n\n.border-right {\n  border-right: 1px solid #dee2e6 !important;\n}\n\n.border-bottom {\n  border-bottom: 1px solid #dee2e6 !important;\n}\n\n.border-left {\n  border-left: 1px solid #dee2e6 !important;\n}\n\n.border-0 {\n  border: 0 !important;\n}\n\n.border-top-0 {\n  border-top: 0 !important;\n}\n\n.border-right-0 {\n  border-right: 0 !important;\n}\n\n.border-bottom-0 {\n  border-bottom: 0 !important;\n}\n\n.border-left-0 {\n  border-left: 0 !important;\n}\n\n.border-primary {\n  border-color: #007bff !important;\n}\n\n.border-secondary {\n  border-color: #6c757d !important;\n}\n\n.border-success {\n  border-color: #28a745 !important;\n}\n\n.border-info {\n  border-color: #17a2b8 !important;\n}\n\n.border-warning {\n  border-color: #ffc107 !important;\n}\n\n.border-danger {\n  border-color: #dc3545 !important;\n}\n\n.border-light {\n  border-color: #f8f9fa !important;\n}\n\n.border-dark {\n  border-color: #343a40 !important;\n}\n\n.border-white {\n  border-color: #fff !important;\n}\n\n.rounded {\n  border-radius: 0.25rem !important;\n}\n\n.rounded-top {\n  border-top-left-radius: 0.25rem !important;\n  border-top-right-radius: 0.25rem !important;\n}\n\n.rounded-right {\n  border-top-right-radius: 0.25rem !important;\n  border-bottom-right-radius: 0.25rem !important;\n}\n\n.rounded-bottom {\n  border-bottom-right-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-left {\n  border-top-left-radius: 0.25rem !important;\n  border-bottom-left-radius: 0.25rem !important;\n}\n\n.rounded-circle {\n  border-radius: 50% !important;\n}\n\n.rounded-0 {\n  border-radius: 0 !important;\n}\n","created":"20180820174710383","modified":"20200323093719893","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/btn":{"title":"$:/plugins/kookma/shiraz/styles/bs/btn","text":"/* Button and btn classes Mohammad*/\n.btn {\n  display: inline-block;\n  font-weight: 400;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  -ms-user-select: none;\n  user-select: none;\n  border: 1px solid transparent;\n  padding: 0.375rem 0.75rem;\n  font-size: 1rem;\n  line-height: 1.5;\n  border-radius: 0.25rem;\n  transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;\n}\n\n\n.btn:hover, .btn:focus {\n  text-decoration: none;\n}\n\n.btn:focus, .btn.focus {\n  outline: 0;\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.25);\n}\n\n.btn.disabled, .btn:disabled {\n  opacity: 0.65;\n}\n\n.btn:not(:disabled):not(.disabled) {\n  cursor: pointer;\n}\n\na.btn.disabled,\nfieldset:disabled a.btn {\n  pointer-events: none;\n}\n\n.btn-primary {\n  color: #fff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.btn-primary:hover {\n  color: #fff;\n  background-color: #0069d9;\n  border-color: #0062cc;\n}\n\n.btn-primary:focus, .btn-primary.focus {\n  box-shadow: 0 0 0 0.2rem rgba(0, 123, 255, 0.5);\n}\n\n.btn-primary.disabled, .btn-primary:disabled {\n  color: #fff;\n  background-color: #007bff;\n  border-color: #007bff;\n}\n\n.btn-secondary {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-secondary:hover {\n  color: #fff;\n  background-color: #5a6268;\n  border-color: #545b62;\n}\n\n.btn-secondary:focus, .btn-secondary.focus {\n  box-shadow: 0 0 0 0.2rem rgba(108, 117, 125, 0.5);\n}\n\n.btn-secondary.disabled, .btn-secondary:disabled {\n  color: #fff;\n  background-color: #6c757d;\n  border-color: #6c757d;\n}\n\n.btn-success {\n  color: #fff;\n  background-color: #28a745;\n  border-color: #28a745;\n}\n\n.btn-success:hover {\n  color: #fff;\n  background-color: #218838;\n  border-color: #1e7e34;\n}\n\n.btn-success:focus, .btn-success.focus {\n  box-shadow: 0 0 0 0.2rem rgba(40, 167, 69, 0.5);\n}\n\n.btn-success.disabled, .btn-success:disabled {\n  color: #fff;\n  background-color: #28a745;\n  border-color: #28a745;\n}\n\n.btn-info {\n  color: #fff;\n  background-color: #17a2b8;\n  border-color: #17a2b8;\n}\n\n.btn-info:hover {\n  color: #fff;\n  background-color: #138496;\n  border-color: #117a8b;\n}\n\n.btn-info:focus, .btn-info.focus {\n  box-shadow: 0 0 0 0.2rem rgba(23, 162, 184, 0.5);\n}\n\n.btn-info.disabled, .btn-info:disabled {\n  color: #fff;\n  background-color: #17a2b8;\n  border-color: #17a2b8;\n}\n\n.btn-warning {\n  color: #212529;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-warning:hover {\n  color: #212529;\n  background-color: #e0a800;\n  border-color: #d39e00;\n}\n\n.btn-warning:focus, .btn-warning.focus {\n  box-shadow: 0 0 0 0.2rem rgba(255, 193, 7, 0.5);\n}\n\n.btn-warning.disabled, .btn-warning:disabled {\n  color: #212529;\n  background-color: #ffc107;\n  border-color: #ffc107;\n}\n\n.btn-danger {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-danger:hover {\n  color: #fff;\n  background-color: #c82333;\n  border-color: #bd2130;\n}\n\n.btn-danger:focus, .btn-danger.focus {\n  box-shadow: 0 0 0 0.2rem rgba(220, 53, 69, 0.5);\n}\n\n.btn-danger.disabled, .btn-danger:disabled {\n  color: #fff;\n  background-color: #dc3545;\n  border-color: #dc3545;\n}\n\n.btn-light {\n  color: #212529;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-light:hover {\n  color: #212529;\n  background-color: #e2e6ea;\n  border-color: #dae0e5;\n}\n\n.btn-light:focus, .btn-light.focus {\n  box-shadow: 0 0 0 0.2rem rgba(248, 249, 250, 0.5);\n}\n\n.btn-light.disabled, .btn-light:disabled {\n  color: #212529;\n  background-color: #f8f9fa;\n  border-color: #f8f9fa;\n}\n\n.btn-dark {\n  color: #fff;\n  background-color: #343a40;\n  border-color: #343a40;\n}\n\n.btn-dark:hover {\n  color: #fff;\n  background-color: #23272b;\n  border-color: #1d2124;\n}\n\n.btn-dark:focus, .btn-dark.focus {\n  box-shadow: 0 0 0 0.2rem rgba(52, 58, 64, 0.5);\n}\n\n.btn-dark.disabled, .btn-dark:disabled {\n  color: #fff;\n  background-color: #343a40;\n  border-color: #343a40;\n}\n\n.btn-link {\n  font-weight: 400;\n  color: #007bff;\n  background-color: transparent;\n}\n\n.btn-link:hover {\n  color: #0056b3;\n  text-decoration: underline;\n  background-color: transparent;\n  border-color: transparent;\n}\n\n.btn-link:focus, .btn-link.focus {\n  text-decoration: underline;\n  border-color: transparent;\n  box-shadow: none;\n}\n\n.btn-link:disabled, .btn-link.disabled {\n  color: #6c757d;\n  pointer-events: none;\n}\n\n/* button size */\n\n.btn-lg{\n  padding: 0.5rem 1rem;\n  font-size: 1.25rem;\n  line-height: 1.5;\n  border-radius: 0.3rem;\n}\n\n.btn-sm{\n  padding: 0.25rem 0.5rem;\n  font-size: 0.875rem;\n  line-height: 1.5;\n  border-radius: 0.2rem;\n}","created":"20180822044340070","modified":"20200323093719900","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card-column":{"title":"$:/plugins/kookma/shiraz/styles/bs/card-column","text":"/* Extracted from bootstrap 4.3.1 */\n.card-columns .card {\n  margin-bottom: 0.75rem;\n}\n\n@media (min-width: 576px) {\n  .card-columns {\n    -webkit-column-count: 3;\n    -moz-column-count: 3;\n    column-count: 3;\n    -webkit-column-gap: 1.25rem;\n    -moz-column-gap: 1.25rem;\n    column-gap: 1.25rem;\n    orphans: 1;\n    widows: 1;\n  }\n  .card-columns .card {\n    display: inline-block;\n    width: 100%;\n  }\n}","created":"20181122175345419","modified":"20200323093719915","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card-deck":{"title":"$:/plugins/kookma/shiraz/styles/bs/card-deck","text":"/* Extracted from bootstrap 4.1.3 */\n\n.card-deck {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n}\n\n.card-deck .card {\n  margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n  .card-deck {\n    -ms-flex-flow: row wrap;\n    flex-flow: row wrap;\n    margin-right: -15px;\n    margin-left: -15px;\n  }\n  .card-deck .card {\n    display: -ms-flexbox;\n    display: flex;\n    -ms-flex: 1 0 0%;\n    flex: 1 0 0%;\n    -ms-flex-direction: column;\n    flex-direction: column;\n    margin-right: 15px;\n    margin-bottom: 0;\n    margin-left: 15px;\n  }\n}","created":"20180822174847352","modified":"20200323093719923","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card-group":{"title":"$:/plugins/kookma/shiraz/styles/bs/card-group","text":"/* Extracted from bootstrap 4.1.3 */\n.card-group {\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n}\n\n.card-group > .card {\n  margin-bottom: 15px;\n}\n\n@media (min-width: 576px) {\n  .card-group {\n    -ms-flex-flow: row wrap;\n    flex-flow: row wrap;\n  }\n  .card-group > .card {\n    -ms-flex: 1 0 0%;\n    flex: 1 0 0%;\n    margin-bottom: 0;\n  }\n  .card-group > .card + .card {\n    margin-left: 0;\n    border-left: 0;\n  }\n  .card-group > .card:first-child {\n    border-top-right-radius: 0;\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:first-child .card-img-top,\n  .card-group > .card:first-child .card-header {\n    border-top-right-radius: 0;\n  }\n  .card-group > .card:first-child .card-img-bottom,\n  .card-group > .card:first-child .card-footer {\n    border-bottom-right-radius: 0;\n  }\n  .card-group > .card:last-child {\n    border-top-left-radius: 0;\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:last-child .card-img-top,\n  .card-group > .card:last-child .card-header {\n    border-top-left-radius: 0;\n  }\n  .card-group > .card:last-child .card-img-bottom,\n  .card-group > .card:last-child .card-footer {\n    border-bottom-left-radius: 0;\n  }\n  .card-group > .card:only-child {\n    border-radius: 0.25rem;\n  }\n  .card-group > .card:only-child .card-img-top,\n  .card-group > .card:only-child .card-header {\n    border-top-left-radius: 0.25rem;\n    border-top-right-radius: 0.25rem;\n  }\n  .card-group > .card:only-child .card-img-bottom,\n  .card-group > .card:only-child .card-footer {\n    border-bottom-right-radius: 0.25rem;\n    border-bottom-left-radius: 0.25rem;\n  }\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) {\n    border-radius: 0;\n  }\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-top,\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-img-bottom,\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-header,\n  .card-group > .card:not(:first-child):not(:last-child):not(:only-child) .card-footer {\n    border-radius: 0;\n  }\n}\n","created":"20181122175111676","modified":"20200323093719932","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/card":{"title":"$:/plugins/kookma/shiraz/styles/bs/card","text":"/* Extracted from bootstrap 4.1.3 */\n.card {\n  position: relative;\n  display: -ms-flexbox;\n  display: flex;\n  -ms-flex-direction: column;\n  flex-direction: column;\n  min-width: 0;\n  word-wrap: break-word;\n  background-color: #fff;\n  background-clip: border-box;\n  border: 1px solid rgba(0, 0, 0, 0.125);\n  border-radius: 0.25rem;\n}\n\n.card > hr {\n  margin-right: 0;\n  margin-left: 0;\n}\n\n.card > .list-group:first-child .list-group-item:first-child {\n  border-top-left-radius: 0.25rem;\n  border-top-right-radius: 0.25rem;\n}\n\n.card > .list-group:last-child .list-group-item:last-child {\n  border-bottom-right-radius: 0.25rem;\n  border-bottom-left-radius: 0.25rem;\n}\n\n.card-body {\n  -ms-flex: 1 1 auto;\n  flex: 1 1 auto;\n  padding: 1.25rem;\n}\n\n.card-title {\n  margin-bottom: 0.75rem;\n}\n\n.card-subtitle {\n  margin-top: -0.375rem;\n  margin-bottom: 0;\n}\n\n.card-text:last-child {\n  margin-bottom: 0;\n}\n\n.card-link:hover {\n  text-decoration: none;\n}\n\n.card-link + .card-link {\n  margin-left: 1.25rem;\n}\n\n.card-header {\n  padding: 0.75rem 1.25rem;\n  margin-bottom: 0;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-bottom: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-header:first-child {\n  border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0;\n}\n\n.card-header + .list-group .list-group-item:first-child {\n  border-top: 0;\n}\n\n.card-footer {\n  padding: 0.75rem 1.25rem;\n  background-color: rgba(0, 0, 0, 0.03);\n  border-top: 1px solid rgba(0, 0, 0, 0.125);\n}\n\n.card-footer:last-child {\n  border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px);\n}\n\n.card-header-tabs {\n  margin-right: -0.625rem;\n  margin-bottom: -0.75rem;\n  margin-left: -0.625rem;\n  border-bottom: 0;\n}\n\n.card-header-pills {\n  margin-right: -0.625rem;\n  margin-left: -0.625rem;\n}\n\n.card-img-overlay {\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: 1.25rem;\n}\n\n.card-img {\n  width: 100%;\n  border-radius: calc(0.25rem - 1px);\n}\n\n.card-img-top {\n  width: 100%;\n  border-top-left-radius: calc(0.25rem - 1px);\n  border-top-right-radius: calc(0.25rem - 1px);\n}\n\n.card-img-bottom {\n  width: 100%;\n  border-bottom-right-radius: calc(0.25rem - 1px);\n  border-bottom-left-radius: calc(0.25rem - 1px);\n}\n","created":"20180822174608965","modified":"20200323093719907","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/clearfix":{"title":"$:/plugins/kookma/shiraz/styles/bs/clearfix","text":".clearfix::after {\n  display: block;\n  clear: both;\n  content: \"\";\n}","created":"20190919042042391","modified":"20200323093719936","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/float":{"title":"$:/plugins/kookma/shiraz/styles/bs/float","text":".float-left {\n  float: left;\n}\n\n.float-right {\n  float: right;\n}\n\n.float-none {\n  float: none;\n}\n","created":"20180823142040855","modified":"20200323093719944","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/my-adjustment":{"title":"$:/plugins/kookma/shiraz/styles/bs/my-adjustment","text":"/* My adjustments to bootstrap 4.1.3 css classes */\na {\n  color: #007bff;\n  text-decoration: none;\n  background-color: transparent;\n  -webkit-text-decoration-skip: objects;\n}\n/* Link is hacked to be compatible with bootstrap \nclasses remove it if the TW core objects break\n*/\n\n","created":"20180822044831813","modified":"20200323093719950","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/shadow":{"title":"$:/plugins/kookma/shiraz/styles/bs/shadow","text":".shadow-sm {\n  box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important;\n}\n\n.shadow {\n  box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important;\n}\n\n.shadow-lg {\n  box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important;\n}\n\n.shadow-none {\n  box-shadow: none !important;\n}","created":"20180823114259911","modified":"20200323093719957","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/sizing-spacing":{"title":"$:/plugins/kookma/shiraz/styles/bs/sizing-spacing","text":"/* Extracted from bootstrap 4.3.1 */\n/*Defines margins, paddings, width and height*/\n.w-25 {\n  width: 25% !important;\n}\n.w-50 {\n  width: 50% !important;\n}\n.w-75 {\n  width: 75% !important;\n}\n.w-100 {\n  width: 100% !important;\n}\n.w-auto {\n  width: auto !important;\n}\n.h-25 {\n  height: 25% !important;\n}\n.h-50 {\n  height: 50% !important;\n}\n.h-75 {\n  height: 75% !important;\n}\n.h-100 {\n  height: 100% !important;\n}\n.h-auto {\n  height: auto !important;\n}\n.mw-100 {\n  max-width: 100% !important;\n}\n.mh-100 {\n  max-height: 100% !important;\n}\n.m-0 {\n  margin: 0 !important;\n}\n.mt-0,\n.my-0 {\n  margin-top: 0 !important;\n}\n.mr-0,\n.mx-0 {\n  margin-right: 0 !important;\n}\n.mb-0,\n.my-0 {\n  margin-bottom: 0 !important;\n}\n.ml-0,\n.mx-0 {\n  margin-left: 0 !important;\n}\n.m-1 {\n  margin: 0.25rem !important;\n}\n.mt-1,\n.my-1 {\n  margin-top: 0.25rem !important;\n}\n.mr-1,\n.mx-1 {\n  margin-right: 0.25rem !important;\n}\n.mb-1,\n.my-1 {\n  margin-bottom: 0.25rem !important;\n}\n.ml-1,\n.mx-1 {\n  margin-left: 0.25rem !important;\n}\n.m-2 {\n  margin: 0.5rem !important;\n}\n.mt-2,\n.my-2 {\n  margin-top: 0.5rem !important;\n}\n.mr-2,\n.mx-2 {\n  margin-right: 0.5rem !important;\n}\n.mb-2,\n.my-2 {\n  margin-bottom: 0.5rem !important;\n}\n.ml-2,\n.mx-2 {\n  margin-left: 0.5rem !important;\n}\n\n.m-3 {\n  margin: 1rem !important;\n}\n\n.mt-3,\n.my-3 {\n  margin-top: 1rem !important;\n}\n\n.mr-3,\n.mx-3 {\n  margin-right: 1rem !important;\n}\n\n.mb-3,\n.my-3 {\n  margin-bottom: 1rem !important;\n}\n\n.ml-3,\n.mx-3 {\n  margin-left: 1rem !important;\n}\n\n.m-4 {\n  margin: 1.5rem !important;\n}\n\n.mt-4,\n.my-4 {\n  margin-top: 1.5rem !important;\n}\n\n.mr-4,\n.mx-4 {\n  margin-right: 1.5rem !important;\n}\n\n.mb-4,\n.my-4 {\n  margin-bottom: 1.5rem !important;\n}\n\n.ml-4,\n.mx-4 {\n  margin-left: 1.5rem !important;\n}\n\n.m-5 {\n  margin: 3rem !important;\n}\n\n.mt-5,\n.my-5 {\n  margin-top: 3rem !important;\n}\n\n.mr-5,\n.mx-5 {\n  margin-right: 3rem !important;\n}\n\n.mb-5,\n.my-5 {\n  margin-bottom: 3rem !important;\n}\n\n.ml-5,\n.mx-5 {\n  margin-left: 3rem !important;\n}\n\n.p-0 {\n  padding: 0 !important;\n}\n\n.pt-0,\n.py-0 {\n  padding-top: 0 !important;\n}\n\n.pr-0,\n.px-0 {\n  padding-right: 0 !important;\n}\n\n.pb-0,\n.py-0 {\n  padding-bottom: 0 !important;\n}\n\n.pl-0,\n.px-0 {\n  padding-left: 0 !important;\n}\n\n.p-1 {\n  padding: 0.25rem !important;\n}\n\n.pt-1,\n.py-1 {\n  padding-top: 0.25rem !important;\n}\n\n.pr-1,\n.px-1 {\n  padding-right: 0.25rem !important;\n}\n\n.pb-1,\n.py-1 {\n  padding-bottom: 0.25rem !important;\n}\n\n.pl-1,\n.px-1 {\n  padding-left: 0.25rem !important;\n}\n\n.p-2 {\n  padding: 0.5rem !important;\n}\n\n.pt-2,\n.py-2 {\n  padding-top: 0.5rem !important;\n}\n\n.pr-2,\n.px-2 {\n  padding-right: 0.5rem !important;\n}\n\n.pb-2,\n.py-2 {\n  padding-bottom: 0.5rem !important;\n}\n\n.pl-2,\n.px-2 {\n  padding-left: 0.5rem !important;\n}\n\n.p-3 {\n  padding: 1rem !important;\n}\n\n.pt-3,\n.py-3 {\n  padding-top: 1rem !important;\n}\n\n.pr-3,\n.px-3 {\n  padding-right: 1rem !important;\n}\n\n.pb-3,\n.py-3 {\n  padding-bottom: 1rem !important;\n}\n\n.pl-3,\n.px-3 {\n  padding-left: 1rem !important;\n}\n\n.p-4 {\n  padding: 1.5rem !important;\n}\n\n.pt-4,\n.py-4 {\n  padding-top: 1.5rem !important;\n}\n\n.pr-4,\n.px-4 {\n  padding-right: 1.5rem !important;\n}\n\n.pb-4,\n.py-4 {\n  padding-bottom: 1.5rem !important;\n}\n\n.pl-4,\n.px-4 {\n  padding-left: 1.5rem !important;\n}\n\n.p-5 {\n  padding: 3rem !important;\n}\n\n.pt-5,\n.py-5 {\n  padding-top: 3rem !important;\n}\n\n.pr-5,\n.px-5 {\n  padding-right: 3rem !important;\n}\n\n.pb-5,\n.py-5 {\n  padding-bottom: 3rem !important;\n}\n\n.pl-5,\n.px-5 {\n  padding-left: 3rem !important;\n}\n\n.m-auto {\n  margin: auto !important;\n}\n\n.mt-auto,\n.my-auto {\n  margin-top: auto !important;\n}\n\n.mr-auto,\n.mx-auto {\n  margin-right: auto !important;\n}\n\n.mb-auto,\n.my-auto {\n  margin-bottom: auto !important;\n}\n\n.ml-auto,\n.mx-auto {\n  margin-left: auto !important;\n}\n","created":"20180822191952379","modified":"20200323093719964","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/text-alignment":{"title":"$:/plugins/kookma/shiraz/styles/bs/text-alignment","text":".text-justify {\n  text-align: justify !important;\n}\n\n.text-nowrap {\n  white-space: nowrap !important;\n}\n\n.text-truncate {\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.text-left {\n  text-align: left !important;\n}\n\n.text-right {\n  text-align: right !important;\n}\n\n.text-center {\n  text-align: center !important;\n}","created":"20180822051223866","modified":"20200323093719971","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/text-colors":{"title":"$:/plugins/kookma/shiraz/styles/bs/text-colors","text":"/* from bootstrap 4.1.3 */\n\n.text-white {\n  color: #fff !important;\n}\n\n.text-primary {\n  color: #007bff !important;\n}\n\na.text-primary:hover, a.text-primary:focus {\n  color: #0062cc !important;\n}\n\n.text-secondary {\n  color: #6c757d !important;\n}\n\na.text-secondary:hover, a.text-secondary:focus {\n  color: #545b62 !important;\n}\n\n.text-success {\n  color: #28a745 !important;\n}\n\na.text-success:hover, a.text-success:focus {\n  color: #1e7e34 !important;\n}\n\n.text-info {\n  color: #17a2b8 !important;\n}\n\na.text-info:hover, a.text-info:focus {\n  color: #117a8b !important;\n}\n\n.text-warning {\n  color: #ffc107 !important;\n}\n\na.text-warning:hover, a.text-warning:focus {\n  color: #d39e00 !important;\n}\n\n.text-danger {\n  color: #dc3545 !important;\n}\n\na.text-danger:hover, a.text-danger:focus {\n  color: #bd2130 !important;\n}\n\n.text-light {\n  color: #f8f9fa !important;\n}\n\na.text-light:hover, a.text-light:focus {\n  color: #dae0e5 !important;\n}\n\n.text-dark {\n  color: #343a40 !important;\n}\n\na.text-dark:hover, a.text-dark:focus {\n  color: #1d2124 !important;\n}\n\n.text-body {\n  color: #212529 !important;\n}\n\n.text-muted {\n  color: #6c757d !important;\n}\n\n.text-black-50 {\n  color: rgba(0, 0, 0, 0.5) !important;\n}\n\n.text-white-50 {\n  color: rgba(255, 255, 255, 0.5) !important;\n}\n\n.text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n","created":"20180820173351023","modified":"20200323093719978","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/bs/text-utility":{"title":"$:/plugins/kookma/shiraz/styles/bs/text-utility","text":"/* Can be removed latter. This is used for illustration of bootstrap cards */\n\n.text-lowercase {\n  text-transform: lowercase !important;\n}\n\n.text-uppercase {\n  text-transform: uppercase !important;\n}\n\n.text-capitalize {\n  text-transform: capitalize !important;\n}\n\n.font-weight-light {\n  font-weight: 300 !important;\n}\n\n.font-weight-normal {\n  font-weight: 400 !important;\n}\n\n.font-weight-bold {\n  font-weight: 700 !important;\n}\n\n.font-italic {\n  font-style: italic !important;\n}\n\n\n.h1, .h2, .h3, .h4, .h5, .h6 {\n  margin-bottom: 0.5rem;\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.2;\n  color: inherit;\n}\n\n.h1 {\n  font-size: 2.5rem;\n}\n\n.h2 {\n  font-size: 2rem;\n}\n\n.h3 {\n  font-size: 1.75rem;\n}\n\n.h4 {\n  font-size: 1.5rem;\n}\n\n.h5 {\n  font-size: 1.25rem;\n}\n\n.h6 {\n  font-size: 1rem;\n}\n\n.lead {\n  font-size: 1.25rem;\n  font-weight: 300;\n}\n\n.display-1 {\n  font-size: 6rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-2 {\n  font-size: 5.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-3 {\n  font-size: 4.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.display-4 {\n  font-size: 3.5rem;\n  font-weight: 300;\n  line-height: 1.2;\n}\n\n.hr {\n  margin-top: 1rem;\n  margin-bottom: 1rem;\n  border: 0;\n  border-top: 1px solid rgba(0, 0, 0, 0.1);\n}\n\n.small {\n  font-size: 80%;\n  font-weight: 400;\n}\n\n.mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n","created":"20180822130528002","modified":"20200323093719985","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/clear-float":{"title":"$:/plugins/kookma/shiraz/styles/clear-float","text":"/* Resolve issue for floating objects which cross the tiddler frame!\nThe below code should force the tiddler to always wrap around floating elements, so that they are always inside\nRef: https://groups.google.com/d/msg/tiddlywiki/5bZwwj6cyac/2LzFeA7AAwAJ\n*/\n\n.tc-tiddler-body:before, .tc-tiddler-body:after {\n    content: \"\";\n    display: table;\n}\n.tc-tiddler-body:after {\n    clear: both;\n}\n.tc-tiddler-body {\n    zoom: 1;\n}","created":"20190902043605186","modified":"20200323093719992","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab":{"title":"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab","text":".tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n    background: none;\n    border: none;\n    border-bottom: solid 1px #737373 !important;\n    font-weight: bold;\n    color: #DB4C3F !important;\n}","created":"20191209105546612","modified":"20200323093719997","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/dbadge":{"title":"$:/plugins/kookma/shiraz/styles/dbadge","text":"/*Credits: \nNishant Srivastava https://codepen.io/nisrulz/pen/bpQWLW\nMohammad Rahmani: https://github.com/kookma\n*/\n.dbadge {\n display: inline-block;\n margin: 0.0em;\n}\n.dbadge > span {\n  color: #ffffff;\n  font-size: 0.8em;\n  font-weight: 400;\n  line-height: 1;\n  padding: .2em .6em;\n  text-align: center;\n  vertical-align: baseline;\n  white-space: nowrap;}\n\n.dbadge-subject{\n  background-color: #656565;\n  border-bottom-left-radius: 0.25em;\n  border-top-left-radius: 0.25em;}\n.dbadge-status {\n  border-bottom-right-radius: 0.25em;\n  border-top-right-radius: 0.25em;}\n\n.dbadge-primary {\n    background-color: #337ab7;}\n.dbadge-success {\n    background-color: #5cb85c;}\n.dbadge-info {\n    background-color: #5bc0de;}\n.dbadge-warning {\n    background-color: #f0ad4e;}\n.dbadge-danger {\n    background-color: #d9534f;}","created":"20181204192835967","modified":"20200323093720003","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/details-slider":{"title":"$:/plugins/kookma/shiraz/styles/details-slider","text":"/*details html5 macro*/\ndetails > summary {\n  padding: 2px 6px;\n  font-weight:500;\n  outline:none;\n}\ndetails > div {\n  padding: 2px 6px;\n  margin: 0;\n}\n\nbutton .kk-sh-slider svg{\nwidth: 0.8em;\nheight: 0.8em;\nvertical-align: middle;}","created":"20181101185908941","modified":"20200325083406128","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/dynamic-tables":{"title":"$:/plugins/kookma/shiraz/styles/dynamic-tables","text":"/* edit-text box for dynamic table */\n.shiraz-dtable-textbox {\n    width:100%;\n    padding-left: 5px;\n    border: none;\n}\n\n.shiraz-dtable-textbox:focus {\n    outline: none;\n    border: 1px solid #5778d8;\n    background: transparent;\n}\n\n.tbl-inpt-edit { width: 100%; background-color: transparent; border: none; color: #000000;}\n\nbutton.tbl-sort-svg > svg { text-shadow: none; fill:#000000; height:10px; padding:0 0 2px 0; }\n\nth .tc-tiddlylink, th a { text-shadow: none; margin: 0 0 0 0; padding: 0 0 0 0; color:#000000; font-weight: bold; }\n\n\n/* DELETE CONFIRMATION */\ntable thead .tbl-delete-confirm > th {\n  color: white;\n  background-color:#ff0033;\n  padding: 8px;\n  margin: 0px;\n  text-align:center;\n\tfont-weight:normal;\n}\n\ntable thead .tbl-delete-confirm > th > button {\n  color: white;\n  fill: white;\n}\n\n/* customize the table footer used for numerical summary*/\n.shiraz-dtable-footer tr td{\n\tbackground:#f0f0f0; \n\tborder:none;\n}","created":"20191128184537594","modified":"20200323093720018","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-alignment":{"title":"$:/plugins/kookma/shiraz/styles/image-alignment","text":"/*Image aligning classes*/\n.image-align-right{\n    float:right;\n    margin:0.5em 0 1.3em 1.4em;\n}\n.image-align-left{\n    float:left;\n    margin: 0.5em 1.4em 1.3em 0;\n}\n.image-align-center{\n  display:block;\n  margin: 0.5em auto 1.3em; \n}\n\n.image-float-none {\n  float: none !important;\n}","created":"20190918193736314","modified":"20200323093720025","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-basic":{"title":"$:/plugins/kookma/shiraz/styles/image-basic","text":".image-simple {\n  text-align: center;\n  font-style: italic;\n  font-size: smaller;\n  text-indent: 0;\n  padding: 0.5em;\n}","created":"20181119182848505","modified":"20200323093720030","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-overlay":{"title":"$:/plugins/kookma/shiraz/styles/image-overlay","text":".image-overlay-container{\n  width: 50%; \n  box-sizing: border-box;\n}\n\n@media screen and (max-width: 640px){\n  .image-overlay-container{\n    display: block;\n    width: 100%;\n  }\n}\n\n@media screen and (min-width: 900px){\n  .image-overlay-container{\n    width: 33.33%;\n  }\n}\n\n.image-overlay-container .image-overlay-title{\n  color: #1a1a1a;\n  text-align: center;\n  margin-bottom:10px;\n}\n\n.image-overlay-content {\n  position: relative;\n  width: 90%;\n  max-width: 400px;\n  margin: auto;\n  overflow: hidden;\n}\n\n.image-overlay-content .image-overlay-content-overlay {\n  background: rgba(0,0,0,0.7);\n  position: absolute;\n  height: 99%;\n  width: 100%;\n  left: 0;\n  top: 0;\n  bottom: 0;\n  right: 0;\n  opacity: 0;\n  -webkit-transition: all 0.4s ease-in-out 0s;\n  -moz-transition: all 0.4s ease-in-out 0s;\n  transition: all 0.4s ease-in-out 0s;\n}\n\n.image-overlay-content:hover .image-overlay-content-overlay{\n  opacity: 1;\n}\n\n.image-overlay-content-image{\n  width: 100%;\n}\n\n.image-overlay-content-details {\n  position: absolute;\n  text-align: center;\n  padding-left: 1em;\n  padding-right: 1em;\n  width: 100%;\n  top: 50%;\n  left: 50%;\n  opacity: 0;\n  -webkit-transform: translate(-50%, -50%);\n  -moz-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  -webkit-transition: all 0.3s ease-in-out 0s;\n  -moz-transition: all 0.3s ease-in-out 0s;\n  transition: all 0.3s ease-in-out 0s;\n}\n\n.image-overlay-content:hover .image-overlay-content-details{\n  top: 50%;\n  left: 50%;\n  opacity: 1;\n}\n\n.image-overlay-content-details h3{\n  color: #fff;\n  font-weight: 500;\n  letter-spacing: 0.15em;\n  margin-bottom: 0.5em;\n  text-transform: uppercase;\n}\n\n.image-overlay-content-details p{\n  color: #fff;\n  font-size: 0.8em;\n}\n\n.image-overlay-fadeIn-bottom{\n  top: 80%;\n}\n\n.image-overlay-fadeIn-top{\n  top: 20%;\n}\n\n.image-overlay-fadeIn-left{\n  left: 20%;\n}\n\n.image-overlay-fadeIn-right{\n  left: 80%;\n}","created":"20181116173704182","modified":"20200323093720035","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-polaroid":{"title":"$:/plugins/kookma/shiraz/styles/image-polaroid","text":".image-polaroid {\n  min-width:64px;\n  background-color: #f8f9fa;\n  box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\n}\n.image-polaroid img {\n    width: 100%;\n    padding:10px;\n    height: auto;\n}\n.image-polaroid .image-polaroid-caption {\n    padding:10px 15px 10px;\n    text-align: center; \n    line-height: 1.4em;\n    font-weight:300;\n    font-size: 0.9em; \n}","created":"20181116094450565","modified":"20200323093720041","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-pretty":{"title":"$:/plugins/kookma/shiraz/styles/image-pretty","text":".image-pretty {\n    min-width:64px;\n    border: 1px solid #c8ccd1;\n    background-color:#f8f9fa;\n}\n.image-pretty:hover {\n    border: 1px solid #777;\n}\n.image-pretty img {\n    padding:2px;\n    width: 100%;\n    height: auto;\n}\n.image-pretty .image-pretty-caption {\n    padding:10px 15px 10px;\n    text-align: center; \n    line-height: 1.4em;\n    font-weight:300;\n    font-size: 0.9em; \n}\n\n","created":"20181115182806512","modified":"20200323093720047","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/image-slidein":{"title":"$:/plugins/kookma/shiraz/styles/image-slidein","text":".image-slidein { \n  display: block; \n  position: relative; \n  /*float: left;*/\n  overflow: hidden; \n /* margin: 0 20px 20px 0;*/\n}\n\n.image-slidein img {\n    width: 100%;\n    height: auto;\n}\n\n.image-slidein figcaption { \n  position: absolute; \n  background: rgba(0,0,0,0.75); \n  color: white; \n  padding: 10px 20px; \n  opacity: 0;\n  -webkit-transition: all 0.6s ease;\n  -moz-transition:    all 0.6s ease;\n  -o-transition:      all 0.6s ease;\n}\n.image-slidein:hover figcaption {\n  opacity: 1;\n}\n.image-slidein:before { \n  content: \"?\"; \n  position: absolute; \n  font-weight: 800; \n  background: rgba(255,255,255,0.75); \n  text-shadow: 0 0 5px white;\n  color: black;\n  width: 24px;\n  height: 24px;\n  -webkit-border-radius: 12px;\n  -moz-border-radius:    12px;\n  border-radius:         12px;\n  text-align: center;\n  font-size: 14px;\n  line-height: 24px;\n  -moz-transition: all 0.6s ease;\n  opacity: 0.75;\t\n}\n.image-slidein:hover:before {\n  opacity: 0;\n}\n\n.mr-cap-left:before {  bottom: 10px; left: 10px; }\n.mr-cap-left figcaption { bottom: 0; left: -30%; }\n.mr-cap-left:hover figcaption { left: 0; }\n\n.mr-cap-right:before { bottom: 10px; right: 10px; }\n.mr-cap-right figcaption { bottom: 0; right: -30%; }\n.mr-cap-right:hover figcaption { right: 0; }\n\n.mr-cap-top:before { top: 10px; left: 10px; }\n.mr-cap-top figcaption { left: 0; top: -30%; }\n.mr-cap-top:hover figcaption { top: 0; }\n\n.mr-cap-bottom:before { bottom: 10px; left: 10px; }\n.mr-cap-bottom figcaption { left: 0; bottom: -30%;}\n.mr-cap-bottom:hover figcaption { bottom: 0; }\n","created":"20181117040213926","modified":"20200323093720054","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/misc/edit-buttons":{"title":"$:/plugins/kookma/shiraz/styles/misc/edit-buttons","text":"/*Edit buttons as traffic lights*/\n.tc-tiddler-controls .tc-image-delete-button {fill:#ebb;}\n.tc-tiddler-controls .tc-image-cancel-button {fill:#ed9;}\n.tc-tiddler-controls .tc-image-done-button {fill:#beb;}","created":"20191029091851469","modified":"20200323093720062","tags":"","type":"text/css"},"$:/plugins/kookma/shiraz/styles/misc/tiddler-button-visibility":{"title":"$:/plugins/kookma/shiraz/styles/misc/tiddler-button-visibility","text":"/* Mouseover toolbar visibility: courtesy from Tobias Beer*/\n.tc-tiddler-frame .tc-titlebar button {\n  opacity: 0;\n  transition: opacity .5s ease-in-out;\n}\n.tc-tiddler-frame:hover .tc-titlebar button {\n  zoom: 1;\n  filter: alpha(opacity=100);\n  opacity: 1;\n}\n","created":"20191029094209435","modified":"20200323093720069","tags":"","type":"text/css"},"$:/plugins/kookma/shiraz/styles/misc/ui-buttons":{"title":"$:/plugins/kookma/shiraz/styles/misc/ui-buttons","created":"20191029092047069","modified":"20200323093720078","tags":"$:/tags/Stylesheet","type":"text/css","text":"/* These css rules makes TW UI buttons in beatiful color */\n\n/*page control buttons*/\n.tc-page-controls .tc-image-new-button { fill: #5EB95E; } /*New tiddler button*/\n.tc-page-controls .tc-image-options-button { fill:#8058A5; } /*Open control pannel*/\n\n/*tiddler buttons in beautiful color*/\n.tc-tiddler-controls .tc-image-edit-button { fill:#F37B1D; }/*edit tiddler*/\n.tc-tiddler-controls .tc-image-info-button { fill: #0e90d2; } /*Info button*/\n"},"$:/plugins/kookma/shiraz/styles/mono":{"title":"$:/plugins/kookma/shiraz/styles/mono","text":".mono {\n\tcolor:unset;\n\tbackground-color: #f7f7f9;\n\tborder: 1px solid #e1e1e8;\n\twhite-space: pre-wrap;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: \"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace;\n}","created":"20181010192406005","modified":"20200323093720084","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/column":{"title":"$:/plugins/kookma/shiraz/styles/multicols/column","text":"/* multicolumn layouts with fixed column number works on the whole tiddler */\n.multicol .tc-tiddler-body {\n  column-width: 14em;\n  column-rule: 1px solid #ccc;\n}\n/* two columns responsive*/\n.multicol2 .tc-tiddler-body {\n\tcolumn-count:2; \n\tcolumn-width:15em;\n}\n/* three columns responsive*/\n.multicol3 .tc-tiddler-body {\n\tcolumn-count:3; \n\tcolumn-width:10em;\n}\n\n\n/* remove the extra space from first paragraph */\n.multicol .tc-tiddler-body > :first-child, \n.multicol2 .tc-tiddler-body > :first-child, \n.multicol3 .tc-tiddler-body > :first-child { margin-top: 0;}\n\n/*-------------------------------------------------------------------------------*/\n/* Classes for using with macro and div elements */\n.sh-multicol {\n  column-width: 14em;\n  column-rule: 1px solid #ccc;\n}\n/* two columns responsive*/\n.sh-multicol2 {\n\tcolumn-count:2; \n\tcolumn-width:15em;\n}\n/* three columns responsive*/\n.sh-multicol3 {\n\tcolumn-count:3; \n\tcolumn-width:10em;\n}\n\n/* remove the extra space from first paragraph */\n.sh-multicol  > :first-child,\n.sh-multicol2 > :first-child,\n.sh-multicol3 > :first-child { margin-top: 0;}","created":"20190627204703061","modified":"20200323093720089","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/flex backup":{"title":"$:/plugins/kookma/shiraz/styles/multicols/flex backup","text":"/* multicolumn layout using flexbox courtesy from Bootstrap 4.3.1*/\n.flex-row {\n  display: flex;\n  flex-wrap: wrap;\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.flex-col-1, \n.flex-col-2, \n.flex-col-3 {\n  position: relative;\n  width: 100%;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n\n.flex-col-1{flex: 1 1 0;}\n.flex-col-2{flex: 2 1 0;}\n.flex-col-3{flex: 3 1 0;}\n\n.flex-col-1 > :first-child,\n.flex-col-2 > :first-child,\n.flex-col-3 > :first-child {\n\tmargin-top: 0;}","created":"20191030140900552","modified":"20200323093720101","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/flex":{"title":"$:/plugins/kookma/shiraz/styles/multicols/flex","text":"/* multicolumn layout using flexbox courtesy from Bootstrap 4.3.1*/\n.flex-row {\n   display: flex;\n   flex-direction: row;\n   flex-wrap: wrap;\n/*   margin-right: -15px;\n   margin-left: -15px;*/\n}\n\n.flex-col,\n.flex-col-1, \n.flex-col-2, \n.flex-col-3,\n.flex-col-4 {\n  position: relative;\n  width: 100%;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n\n/* for small screen width>=576px\nhttps://getbootstrap.com/docs/4.3/layout/grid/\n*/\n@media (min-width: 576px) {\n.flex-col   {flex: 1 1 0; max-width: 100%;}\n.flex-col-1 {flex: 0 0 25%; max-width:25%}\n.flex-col-2 {flex: 0 0 50%; max-width:50%}\n.flex-col-3 {flex: 0 0 75%; max-width:75%}\n.flex-col-4 {flex: 0 0 100%; max-width:100%}\n}\n\n.flex-col   > :first-child,\n.flex-col-1 > :first-child,\n.flex-col-2 > :first-child,\n.flex-col-3 > :first-child,\n.flex-col-4 > :first-child {\n  margin-top: 0;}\n\n\n/* Alignment */\n.flex-align-items-center {\n  align-items: center !important;\n}\n.flex-justify-content-center {\n  justify-content: center !important;\n}\n\n.flex-no-gutters {\n  margin-right: 0;\n  margin-left: 0;\n}","created":"20191014193910006","modified":"20200323093720097","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/multicols/storyriver":{"title":"$:/plugins/kookma/shiraz/styles/multicols/storyriver","text":"/* create story river in two column layout */\n.tc-story-river {\n  display: flex;\n  flex-wrap: wrap;\n}\n\n.tc-tiddler-frame\n{\n  max-width: 49%; margin-right: 1%;\n  /*max-width: 32%; margin-right: 1%; */\n}\n","created":"20140523214749659","modified":"20200323093720108","tags":"","type":"text/css"},"$:/plugins/kookma/shiraz/styles/notebook":{"title":"$:/plugins/kookma/shiraz/styles/notebook","text":"@media print{\n  .notebook .tc-tiddler-body {\n    padding-left:60px;\n    margin-top:25px;\n  }\n  .notebook .tc-tiddler-title,\n  .notebook .tc-subtitle,\n\t.notebook .tc-tags-wrapper {\n    padding-left:60px;\n  }\n}\n\n@media screen{\n  .notebook .tc-tiddler-title,\n  .notebook .tc-subtitle,\n\t.notebook .tc-tags-wrapper,\n\t.notebook .tc-tiddler-body {\n    padding-left:30px;\n  }\n\n}\t\n\n@media screen and (max-width:960px) {\n  .notebook .tc-tiddler-title,\n  .notebook .tc-subtitle,\n    .notebook .tc-tags-wrapper,\n    .notebook .tc-tiddler-body {\n    padding-left:60px;\n  }\n\n}\n\n.notebook:before {\n    content: '';\n    position: absolute;\n    top: 0; bottom: 0; left: 0;\n    width: 50px;\n    background: radial-gradient(#575450 6px, transparent 7px) repeat-y;\n    background-size: 30px 30px;\n    border-right: 3px solid #D44147;\n\t  z-index:1;\n}\n\n.notebook .tc-tiddler-body {\n\t  position: relative;\n    background: linear-gradient(transparent, transparent 1.95em, #91D1D3 1.95em);\n    background-size: 2em 2em;\n\t  min-height:90px;   \n}\n\n.notebook .tc-tiddler-body{\n\t   padding-top:20px;\n     font-family: \"Handlee\", cursive;\n     font-weight:300;\n     line-height:2em;\n     color:#696969;\n}\n\n/* Setting font for other elements */\n.notebook .tc-tiddler-body pre,\n.notebook .tc-tiddler-body code,\n.notebook .tc-tiddler-body pre code\n{\n  font-family: \"Handlee\", cursive;\n  font-weight:300;\n}","created":"20180412105446259","modified":"20200323093720115","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/semantic/bglowtone-colors":{"title":"$:/plugins/kookma/shiraz/styles/semantic/bglowtone-colors","text":"/* Colors taked from [1] https://www.bg-w3schools.bg-com/colors/colors_names.bg-asp \n[2] http://www.bg-workwithcolor.bg-com/color-chart-full-01.bg-htm*/\n/*Low tone background colors*/\n.bg-mistyrose{background-color:#ffe4e1;}\n.bg-lemonchiffon{background-color:#fffacd;}\n.bg-lavenderblush{background-color:#fff0f5;}\n.bg-lavender{background-color:#e6e6fa;}\n.bg-honeydew{background-color:#f0fff0;}\n.bg-lightcyan{background-color:#e0ffff;}\n.bg-aliceblue{background-color:#f0f8ff;}\n.bg-cornsilk{background-color:#fff8dc;}\n.bg-gainsboro{background-color:#dcdcdc;}\n.bg-bisque{background-color:#ffe4c4;}\n.bg-snow{background-color:#fffafa;}","created":"20181029071532524","list":"mistyrose lemonchiffon lavenderblush lavender honeydew lightcyan aliceblue cornsilk gainsboro bisque snow","modified":"20200323093720119","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/sticky-footer":{"title":"$:/plugins/kookma/shiraz/styles/sticky-footer","text":".sticky-footer {\n  position: absolute;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  padding: 0.5rem;\n  background-color: #efefef;\n  text-align: center;\n  margin-top: 5px;\n  box-sizing: border-box;\n  width: 100%;\n}\n","created":"20180907070611557","modified":"20200323093720126","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/tables":{"title":"$:/plugins/kookma/shiraz/styles/tables","text":".table-tight{\n\tfont-size:0.8em;\n}\n\n\n/*\nThis tiddler defines the custom stylesheet for tables \nApril 13, 2018\n*/\n\n/*center aligned table*/\n.table-center {\n margin:0 auto;\n}\n\n/* Table caption at top */\n.table-caption-top caption {\n caption-side:top;\n margin-bottom:0.2rem;\n}\n\n/* Striped row table */\n.table-striped-row tr:nth-child(even) td{\n  background-color:#F3F6F6; \n}\n\n/* Striped column table */\n.table-striped-col tbody tr td:nth-child(odd) {\n\tbackground-color: #F3F6F6;\n}\n\n/*Borderless table*/\n.table-borderless, \n.table-borderless thead td, \n.table-borderless th, \n.table-borderless tr, \n.table-borderless td{\n  border:0;\n}\n\n/* Table lines should be used with table-borderless for abbreviations and two column layout */\n\n.table-lines thead td, .table-lines th{\n   border-bottom: 2px solid #dddddd;\n\t background-color:unset;\n   }\n.table-lines td{\n   border-bottom: 1px solid #dddddd;\n   background-color:unset;\n   }\n\n/* Table hover (yellow background on mouse over) */\n.table-hover tbody tr:hover{\n  color: #212529;\n  background-color: #e6e6e6;\n}\n.table-hover-yellow tbody tr:hover{background-color: #ffffcc;}\n.table-hover-cyan tbody tr:hover{background-color: #e6ffff;}\n\n/* Table with colored header */\n.thead-primary thead td, .thead-primary th{background-color: #007bff; color: #fff;}\n.thead-secondary thead td, .thead-secondary th{background-color: #6c757d; color: #fff;}\n.thead-success thead td, .thead-success th{background-color: #28a745; color: #fff;}\n.thead-warning thead td, .thead-warning th{background-color: #ffc107; color: #fff;}\n.thead-danger thead td, .thead-danger th{background-color: #dc3545; color: #fff;}\n.thead-info thead td, .thead-info th{background-color: #17a2b8; color: #fff;}\n.thead-dark thead td, .thead-dark th{background-color: #343a40; color: #fff;}\n.thead-light thead td, .thead-light th{background-color: #f8f9fa; color: #212529;}\n\n/* Table with colored header correct to fill svgs with white color */\n.thead-primary > thead> tr > td svg, .thead-primary > thead> tr > th svg,\n.thead-secondary > thead> tr > td svg, .thead-secondary > thead> tr > th svg,\n.thead-success > thead> tr > td svg, .thead-success > thead> tr > th svg,\n.thead-warning > thead> tr > td svg, .thead-warning > thead> tr > th svg,\n.thead-danger > thead> tr > td svg, .thead-danger > thead> tr > th svg,\n.thead-info > thead> tr > td svg, .thead-info > thead> tr > th svg,\n.thead-dark > thead> tr > td svg, .thead-dark > thead> tr > th svg\n {fill:#ffffff; padding:0 0 3px 0; }\n\n\n.thead-primary th .tc-tiddlylink, .thead-primary th a,\n.thead-secondary th .tc-tiddlylink, .thead-primary th a,\n.thead-success th .tc-tiddlylink, .thead-primary th a,\n.thead-warning th .tc-tiddlylink, .thead-primary th a,\n.thead-danger th .tc-tiddlylink, .thead-primary th a,\n.thead-info th .tc-tiddlylink, .thead-primary th a,\n.thead-dark th .tc-tiddlylink, .thead-primary th a{color:#ffffff}\n","created":"20180413092232257","modified":"20200323093720133","tags":"$:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/styles/tiddler-title-class":{"title":"$:/plugins/kookma/shiraz/styles/tiddler-title-class","text":".title-primary .tc-title {\n  color: #007bff;\n}\n.title-secondary .tc-title {\n  color: #6c757d;\n}\n.title-success .tc-title {\n  color: #28a745;\n}\n.title-info .tc-title {\n  color: #17a2b8;\n}\n.title-warning .tc-title {\n  color: #ffc107;\n}\n.title-danger .tc-title {\n  color: #dc3545;\n}\n.title-light .tc-title {\n  color: #f8f9fa;\n}\n.title-dark .tc-title {\n  color: #343a40;\n}\n.title-white .tc-title {\n  color: #fff;\n}","created":"20191101112257846","modified":"20200323093720140","tags":"test $:/tags/Stylesheet","type":"text/css"},"$:/plugins/kookma/shiraz/templates/body/color":{"title":"$:/plugins/kookma/shiraz/templates/body/color","created":"20200210160016959","modified":"20200323093720147","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"color","type":"text/vnd.tiddlywiki","text":"\\define showCell()\n<style>\n.dt:not(:disabled):dt(.disabled) {cursor: pointer;}\na.dt.disabled,fieldset:disabled a.dt {pointer-events: none;}\n</style>\n<$link overrideClass=\"dt disabled\" to=\"\">\n<$edit-text tag=input type=color tiddler=<<currentRecord>> field=color/>\n</$link>\n\\end\n\n\\define edit_color() <$edit-text tag=input type=color tiddler=<<currentRecord>> field=<<currentColumn>>/>\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<edit_color>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>"},"$:/plugins/kookma/shiraz/templates/body/date":{"title":"$:/plugins/kookma/shiraz/templates/body/date","created":"20170128100657312","modified":"20200323093720153","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"created modified","type":"text/vnd.tiddlywiki","text":"<td>\n<$view tiddler=<<currentRecord>> field=<<currentColumn>> format=\"date\" template=\"YYYY.0MM.0DD\"/>\n</td>"},"$:/plugins/kookma/shiraz/templates/body/default":{"title":"$:/plugins/kookma/shiraz/templates/body/default","created":"20191125202328213","modified":"20200323093720160","tags":"$:/tags/Table/BodyTemplate","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<editCell>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>"},"$:/plugins/kookma/shiraz/templates/body/due-date":{"title":"$:/plugins/kookma/shiraz/templates/body/due-date","created":"20200206191120454","modified":"20200323093720165","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"due-date","type":"text/vnd.tiddlywiki","text":"\\define showCell() <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> mode=\"inline\" />\n\\define showCell_Locked() <span style=\"font-style:oblique;\"><<showCell>></span>\n\\define edit_date() <$edit-text tag=input type=date tiddler=<<currentRecord>> field=<<currentColumn>>/>\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<edit_date>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>\n\n<!-- Part of Task Manager\n  this template ALWAYS works on fields -->"},"$:/plugins/kookma/shiraz/templates/body/email":{"title":"$:/plugins/kookma/shiraz/templates/body/email","created":"20191202210913762","modified":"20200323093720171","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"email","type":"text/vnd.tiddlywiki","text":"\\define display-email-address()\n<a class=\"tc-tiddlylink-external\" href=\"mailto:$(currentRecord)$!!$(currentColumn)$\" rel=\"noopener noreferrer\" target=\"_blank\">\n<<showCell>>\n</a>\n\\end\n\\define display-email-address_Locked()\n<a class=\"tc-tiddlylink-external\" href=\"mailto:$(currentRecord)$!!$(currentColumn)$\" rel=\"noopener noreferrer\" target=\"_blank\">\n<<showCell_Locked>>\n</a>\n\\end\n\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<display-email-address>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<editCell>> >\n<<display-email-address_Locked>>\n</$list>\n</$reveal>\n\n"},"$:/plugins/kookma/shiraz/templates/body/priority":{"title":"$:/plugins/kookma/shiraz/templates/body/priority","created":"20200424102701026","modified":"20200424151646289","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"priority","type":"text/vnd.tiddlywiki","text":"\\define circle(color, fill)\n<svg width=\"12\" height=\"12\" >\n<circle cx=\"6\" cy=\"6\" r=\"5\" stroke=<<__color__>>  fill=<<__fill__>> stroke-width=\"1\"/>\n</svg>\n\\end\n\n\\define showCell()\n<$list filter=\"[<currentRecord>get<currentColumn>match[very high]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#dc3545\" fill=\"#f8d7da\"/>\n</$list>\n<$list filter=\"[<currentRecord>get<currentColumn>match[high]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#ff8c00\" fill=\"#fff3cd\"/>\n</$list>\n<$list filter=\"[<currentRecord>get<currentColumn>match[normal]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#17a2b8\" fill=\"#d1ecf1\"/>\n</$list>\n<$list filter=\"[<currentRecord>get<currentColumn>match[low]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#007bff\" fill=\"#cce5ff\"/>\n</$list>\n<$list filter=\"[<currentRecord>get<currentColumn>match[very low]]\" variable=ignore>\n<$macrocall $name=\"circle\" color=\"#6c757d\" fill=\"#e2e3e5\"/>\n</$list>\n&nbsp; <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> />\n\\end\n\n\\define showCell_Locked() <span style=\"font-style:oblique;\"><<showCell>></span>\n\n\\define select_priority()\n<$select tiddler=<<currentRecord>> field=<<currentColumn>> default=\"\"><option value=''>Select...</option><option value='very high'>very high</option><option value='high'>high</option><option value='normal'>normal</option><option value='low'>low</option><option value='very low'>very low</option><option value=''>no priority</option></$select>\n\\end\n\n\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<select_priority>>   >\n <<showCell_Locked>>\n</$list>\n<$reveal>\n\n<!-- Part of Task Manager\n   this template ALWAYS works on fields\n  -->"},"$:/plugins/kookma/shiraz/templates/body/status":{"title":"$:/plugins/kookma/shiraz/templates/body/status","created":"20200424100127763","modified":"20200424153213801","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"status","type":"text/vnd.tiddlywiki","text":"\\define showCell() <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> mode=\"inline\" />\n\\define showCell_Locked() <span style=\"font-style:oblique;\"><<showCell>></span>\n\\define select_status()\n<$select tiddler=<<currentRecord>> field=<<currentColumn>> default=\"\"><option value=''>Select...</option><option value='open'>open</option><option value='not started'>not started</option><option value='in-work'>in-work</option><option value='on-hold'>on-hold</option><option value='complete'>complete</option><option value='rework'>rework</option><option value='closed'>closed</option></$select>\n\\end\n\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<<showCell>>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<select_status>>   >\n <<showCell_Locked>>\n</$list>\n</$reveal>\n\n<!-- Part of Task Manager\n  this template ALWAYS works on fields -->"},"$:/plugins/kookma/shiraz/templates/body/tags":{"title":"$:/plugins/kookma/shiraz/templates/body/tags","created":"20191125193831767","modified":"20200323093720193","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tags","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<$list filter=\"[title<currentRecord>tags[]]\">\n<span class=\"tc-tag-list-item\" >\n<$set name=\"transclusion\" value=<<currentTiddler>>>\n<$macrocall $name=\"tag-pill-body\" tag=<<currentTiddler>> icon={{!!icon}} colour={{!!color}} palette={{$:/palette}} element-tag=\"\"\"$button\"\"\" element-attributes=\"\"\"popup=<<tempTagPopup>> dragFilter='[all[current]tagging[]]' tag='span'\"\"\"/>\n<$reveal state=<<tempTagPopup>> style=\"position:absolute; z-index:9999;\" type=\"popup\" position=\"below\" animate=\"yes\" class=\"tc-drop-down\">\n<$set name=\"tv-show-missing-links\" value=\"yes\">\n<$transclude tiddler=\"$:/core/ui/ListItemTemplate\"/>\n</$set>\n<$list filter=\"[all[shadows+tiddlers]tag[$:/tags/TagDropdown]!has[draft.of]]\" variable=\"listItem\"> \n<$transclude tiddler=<<listItem>>/> \n</$list>\n<hr>\n<$macrocall $name=\"list-tagged-draggable\" tag=<<currentTiddler>>/>\n</$reveal>\n</$set>\n</span>\n</$list>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<!--check if the current column is not selected for sorting-->\n<$list filter=\"[<tempTableSort>getindex[sortIndex]match<currentColumn>]\" variable=ignore\nemptyMessage=<<editCell>> >\n <<showCell_Locked>>\n</$list>\n</$reveal>"},"$:/plugins/kookma/shiraz/templates/body/tbl-checkbox":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-checkbox","created":"20200206150644636","modified":"20200323093720199","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-checkbox","type":"text/vnd.tiddlywiki","text":"<td style=\"width:28px;text-align:center;\">\n<$checkbox tiddler=<<currentRecord>> tag=\"done\"\ncheckactions=\"\"\"<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> $value=\"color:#155724;background-color:#d4edda;\" /><$action-setfield $tiddler=<<currentRecord>> status=\"complete\"/>\"\"\"\nuncheckactions=\"\"\"<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> /><$action-setfield $tiddler=<<currentRecord>> status=\"rework\"/>\"\"\" />\n</td>"},"$:/plugins/kookma/shiraz/templates/body/tbl-delete":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-delete","created":"20170212101814663","modified":"20200323093720205","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-delete","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore>\n<td style=\"width:28px;text-align:center;\">\n  <$button class=\"tc-btn-invisible\">\n    <$action-sendmessage $message=\"tm-delete-tiddler\" $param=<<currentRecord>>/>\n    {{$:/core/images/delete-button}}\n  </$button>\n</td>\n</$list>"},"$:/plugins/kookma/shiraz/templates/body/tbl-expand":{"title":"$:/plugins/kookma/shiraz/templates/body/tbl-expand","created":"20200209072642825","modified":"20200323093720213","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"tbl-expand","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" state=<<tempPathExpand>> text=\"show\" tag=\"td\">\n  <$button class=\"tc-btn-invisible tc-tiddlylink\">\n    <$action-setfield $tiddler=<<tempTableExpand>> $index=<<currentRecord>> $value=\"show\" />\n    {{$:/core/images/right-arrow}}\n  </$button>\n</$reveal>\n<$reveal type=\"match\" state=<<tempPathExpand>> text=\"show\" tag=\"td\">\n  <$button class=\"tc-btn-invisible tc-tiddlylink\">\n    <$action-setfield $tiddler=<<tempTableExpand>> $index=<<currentRecord>>/>\n    {{$:/core/images/down-arrow}}\n  </$button>\n</$reveal>"},"$:/plugins/kookma/shiraz/templates/body/title":{"title":"$:/plugins/kookma/shiraz/templates/body/title","created":"20170128100357203","modified":"20200323093720218","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"title","type":"text/vnd.tiddlywiki","text":"<td>\n<$link to=<<currentRecord>>><$text text=<<currentRecord>> /></$link>\n</td>"},"$:/plugins/kookma/shiraz/templates/body/type":{"title":"$:/plugins/kookma/shiraz/templates/body/type","created":"20200210063953546","modified":"20200323093720227","tags":"$:/tags/Table/BodyTemplate","tbl-column-list":"type","type":"text/vnd.tiddlywiki","text":"\\define showCell() <$transclude tiddler=<<currentRecord>> field=<<currentColumn>> mode=\"inline\" />\n<td>\n<<showCell>>\n</td>\n<!-- Note that the showCell here overrides the global showCell from table-dynamic macro -->"},"$:/plugins/kookma/shiraz/templates/footer/default":{"title":"$:/plugins/kookma/shiraz/templates/footer/default","created":"20200130171717175","modified":"20200323093720234","tags":"$:/tags/Table/FooterTemplate","type":"text/vnd.tiddlywiki","text":"<$vars idx={{{ [<currentColumn>addsuffix[/]addsuffix<footerRow>] }}}>\n<$set name=getFieldOrIndex filter=\"[<fieldOrIndex>]-index\" value=\"get\" emptyValue=\"getindex\">\n<$reveal type=\"nomatch\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<$transclude tiddler=<<tempTableFooter>> index=<<idx>> mode=\"inline\" />\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableEdit>> stateIndex=\"mode\" text=\"edit\" tag=\"td\">\n<$edit-text tiddler=<<tempTableFooter>> index=<<idx>> tag=\"input\" class=\"shiraz-dtable-textbox\"/>\n</$reveal>\n</$set>\n</$vars>"},"$:/plugins/kookma/shiraz/templates/footer/tbl-delete":{"title":"$:/plugins/kookma/shiraz/templates/footer/tbl-delete","created":"20200130174835714","modified":"20200323093720243","tags":"$:/tags/Table/FooterTemplate","tbl-column-list":"tbl-delete","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore>\n<td></td>\n</$list>"},"$:/plugins/kookma/shiraz/templates/footer/tbl-expand":{"title":"$:/plugins/kookma/shiraz/templates/footer/tbl-expand","created":"20200130173518861","modified":"20200323093720250","tags":"$:/tags/Table/FooterTemplate","tbl-column-list":"tbl-expand","type":"text/vnd.tiddlywiki","text":"<td style=\"width:28px;\"></td>"},"$:/plugins/kookma/shiraz/templates/header/default":{"title":"$:/plugins/kookma/shiraz/templates/header/default","created":"20170205223914688","modified":"20200323093720254","tags":"$:/tags/Table/HeaderTemplate","type":"text/vnd.tiddlywiki","text":"<$reveal type=\"nomatch\" stateTitle=<<tempTableSort>> stateIndex=\"sortIndex\" text=<<currentColumn>> tag=\"th\">\n<$button setTitle=<<tempTableSort>> setIndex=\"sortIndex\" setTo=<<currentColumn>> class=\"tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"hasnegate\" $value=\"false\"/>\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"negate\" $value=\"\"/>\n<span style=\"text-transform: capitalize;\"><<currentColumn>></span>\n</$button>\n</$reveal>\n<$reveal type=\"match\" stateTitle=<<tempTableSort>> stateIndex=\"sortIndex\" text=<<currentColumn>> tag=\"th\">\n<$list filter=\"[<tempTableSort>getindex[hasnegate]match[false]]\" variable=ignore><!--set negate for sort-->\n<$button setTitle=<<tempTableSort>> setIndex=\"hasnegate\" setTo=\"true\" class=\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"negate\" $value=\"!\"/>\n<span style=\"text-transform: capitalize;\"><<currentColumn>></span> {{$:/core/images/down-arrow}}\n</$button>\n</$list>\n<$list filter=\"[<tempTableSort>getindex[hasnegate]match[true]]\" variable=ignore><!--remove negate for sort-->\n<$button setTitle=<<tempTableSort>> setIndex=\"hasnegate\" setTo=\"false\" class=\"tbl-sort-svg tc-btn-invisible tc-tiddlylink\" >\n<$action-setfield $tiddler=<<tempTableSort>> $index=\"negate\" $value=\"\"/>\n<span style=\"text-transform: capitalize;\"><<currentColumn>></span> {{$:/core/images/up-arrow}}\n</$button>\n</$list>\n</$reveal>\n"},"$:/plugins/kookma/shiraz/templates/header/tbl-checkbox":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-checkbox","created":"20200206151157578","modified":"20200424160122428","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-checkbox","type":"text/vnd.tiddlywiki","text":"\\define chk-checkactions()\n<$list filter=\"[subfilter<inputFilter>]\" variable=\"currentRecord\">\n<$action-listops $tiddler=<<currentRecord>> $tags=\"+[append[done]]\" />\n<$action-setfield $tiddler=<<currentRecord>> status=\"complete\"/>\n<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> $value=\"color:#155724;background-color:#d4edda;\" />\n</$list>\n\\end\n\\define chk-uncheckactions()\n<$list filter=\"[subfilter<inputFilter>]\" variable=\"currentRecord\">\n<$action-listops $tiddler=<<currentRecord>> $tags=\"+[remove[done]]\" />\n<$action-setfield $tiddler=<<currentRecord>> status=\"rework\"/>\n<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> />\n</$list>\n\\end\n\n<th style=\"width:28px;\">\n<$checkbox checkactions=<<chk-checkactions>> uncheckactions=<<chk-uncheckactions>> />\n</th>"},"$:/plugins/kookma/shiraz/templates/header/tbl-delete":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-delete","created":"20170212102107998","modified":"20200323093720268","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-delete","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[<tempTableEdit>getindex[mode]match[edit]]\" variable=ignore>\n<th style=\"width:28px;text-align:center;\">\n  <span>\n  <$button class=\"tc-btn-invisible\">\n    <$action-setfield $tiddler=\"$:/temp/tables/delete-all\" text=<<currentTable>>/>\n    {{$:/core/images/delete-button}}\n  </$button>\n  </span>\n</th>\n</$list>"},"$:/plugins/kookma/shiraz/templates/header/tbl-expand":{"title":"$:/plugins/kookma/shiraz/templates/header/tbl-expand","created":"20200209072944418","modified":"20200323093720276","tags":"$:/tags/Table/HeaderTemplate","tbl-column-list":"tbl-expand","type":"text/vnd.tiddlywiki","text":"<th style=\"width:28px;\">\n  <$list filter=\"[<tempTableExpand>indexes[]limit[1]]\">\n      <$button class=\"tc-btn-invisible\">{{$:/core/images/fold-button}}\n        <$action-setfield $tiddler=<<tempTableExpand>> text=\"\"/>\n      </$button>\n  </$list>\n</th>"},"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings":{"title":"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings","caption":"Shiraz","created":"20191018054657077","list-after":"$:/core/ui/ControlPanel/Settings/TiddlyWiki","modified":"20200323093720283","tags":"$:/tags/ControlPanel/SettingsTab $:/tags/MoreSideBar","type":"text/vnd.tiddlywiki","text":"These settings let you customise the behaviour of Shiraz plugin.\n\n---\n\n;Show Shiraz setting in more sidebar\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/ui/ControlPanel/Settings\" tag=\"$:/tags/MoreSideBar\"> Show setting in more sidebar</$checkbox>\n\n;Options\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/multicols/storyriver\" tag=\"$:/tags/Stylesheet\"> Multicolumn story river</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/misc/ui-buttons\" tag=\"$:/tags/Stylesheet\"> Colorful UI buttons</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/misc/tiddler-button-visibility\" tag=\"$:/tags/Stylesheet\"> Tiddler visibility on mouse hover</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/misc/edit-buttons\" tag=\"$:/tags/Stylesheet\"> Traffic lights for edit toolbar buttons</$checkbox>\n:<$checkbox tiddler=\"$:/plugins/kookma/shiraz/styles/colorful-sidebar-tab\" tag=\"$:/tags/Stylesheet\"> Colorify sidebar tabs</$checkbox>\n\n\n\n\n"},"$:/plugins/kookma/shiraz/viewtemplates/sticky-footer":{"title":"$:/plugins/kookma/shiraz/viewtemplates/sticky-footer","created":"20180907071314793","modified":"20200323125207226","tags":"$:/tags/ViewTemplate","type":"text/vnd.tiddlywiki","text":"<$list filter=\"[all[current]has[sticky-footer]]\">\n<div class=\"sticky-footer\">\n{{!!sticky-footer}}\n</div>\n</$list>\n"}}}
\define slider(label, src, labelClass, srcClass)
<$set name="revealState" value=<<qualify "$:/state/shiraz/slider-macro/$(currentTiddler)$/$label$">>>
<h4 class="$labelClass$">
  <$reveal type="nomatch" state=<<revealState>> text="yes">
    <$button class="tc-btn-invisible tc-tiddlylink" set=<<revealState>> setTo="yes">
      {{$:/core/images/right-arrow}}
    </$button>
  </$reveal>
  <$reveal type="match" state=<<revealState>> text="yes">
    <$button class="tc-btn-invisible tc-tiddlylink" set=<<revealState>> setTo="no">
      {{$:/core/images/down-arrow}}
    </$button>
  </$reveal> 
  $label$
</h4>
<$reveal type="match" state=<<revealState>> text="yes" class="$srcClass$">

$src$
</$reveal>
</$set>
\end
/*Edit buttons as traffic lights*/
.tc-tiddler-controls .tc-image-delete-button {fill:#ebb;}
.tc-tiddler-controls .tc-image-cancel-button {fill:#ed9;}
.tc-tiddler-controls .tc-image-done-button {fill:#beb;}
/* Mouseover toolbar visibility: courtesy from Tobias Beer*/
.tc-tiddler-frame .tc-titlebar button {
  opacity: 0;
  transition: opacity .5s ease-in-out;
}
.tc-tiddler-frame:hover .tc-titlebar button {
  zoom: 1;
  filter: alpha(opacity=100);
  opacity: 1;
}
/* These css rules makes TW UI buttons in beatiful color */

/*page control buttons*/
.tc-page-controls .tc-image-new-button { fill: #5EB95E; } /*New tiddler button*/
.tc-page-controls .tc-image-options-button { fill:#8058A5; } /*Open control pannel*/

/*tiddler buttons in beautiful color*/
.tc-tiddler-controls .tc-image-edit-button { fill:#F37B1D; }/*edit tiddler*/
.tc-tiddler-controls .tc-image-info-button { fill: #0e90d2; } /*Info button*/
/* create story river in two column layout */
.tc-story-river {
  display: flex;
  flex-wrap: wrap;
}

.tc-tiddler-frame
{
  max-width: 49%; margin-right: 1%;
  /*max-width: 32%; margin-right: 1%; */
}
<td style="width:28px;text-align:center;">
<$checkbox tiddler=<<currentRecord>> tag="Done"
checkactions="""<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> $value="color:#155724;background-color:#d4edda;" /><$action-setfield $tiddler=<<currentRecord>> status="complete"/>"""
uncheckactions="""<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> /><$action-setfield $tiddler=<<currentRecord>> status="rework"/>""" />
</td>
\define chk-checkactions()
<$list filter="[subfilter<inputFilter>]" variable="currentRecord">
<$action-listops $tiddler=<<currentRecord>> $tags="+[append[Done]]" />
<$action-setfield $tiddler=<<currentRecord>> status="complete"/>
<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> $value="color:#155724;background-color:#d4edda;" />
</$list>
\end
\define chk-uncheckactions()
<$list filter="[subfilter<inputFilter>]" variable="currentRecord">
<$action-listops $tiddler=<<currentRecord>> $tags="+[remove[Done]]" />
<$action-setfield $tiddler=<<currentRecord>> status="rework"/>
<$action-setfield $tiddler=<<tempTableStyle>> $index=<<currentRecord>> />
</$list>
\end

<th style="width:28px;">
<$checkbox checkactions=<<chk-checkactions>> uncheckactions=<<chk-uncheckactions>> />
</th>
{
    "tiddlers": {
        "$:/plugins/telmiger/details/details.css": {
            "text": "/* details and summary */\n\ndetails {\n   transition: height 1s ease;\n   padding: 0 0.5em 0 0.66em;\n   margin-top: 0.66em;\n   margin-bottom: 0.66em;\n}\n\ndetails + details {\n   margin-top: -0.46em;\n}\n\ndetails[open] {\n   padding-bottom: 1em;\n}\n\ndetails:not([open]) { \n   cursor: pointer;\n}\n\ndetails > summary {\n   display: list-item;\n   margin: 0 -0.5em 0 -0.66em;\n   padding: 0.2em 0.5em 0.2em 0.66em;\n   padding-left: 1.76em;  /* adjust for indentation */\n   text-indent: -1.1em;\n   cursor: pointer;\n}\n\ndetails[open] > summary {\n   margin-bottom: 1em;\n}\n\ndetails[open] > *:first-child:not(summary) {\n   margin-top: 1em;\n}\n",
            "title": "$:/plugins/telmiger/details/details.css",
            "tags": "$:/tags/Stylesheet",
            "modifier": "Thomas Elmiger",
            "modified": "20180929131615369",
            "creator": "Thomas Elmiger",
            "created": "20170122140815442"
        },
        "$:/plugins/telmiger/details/details.js": {
            "text": "/*\\\ntitle: $:/plugins/telmiger/details/details.js\ntype: application/javascript\nmodule-type: widget\n\nDetails widget v 0.8\n\nWill output an HTML 5 <details> section including a <summary>\n\n```\n\t<details>\n\t\t<summary>This sums it up</summary> \n\t\tAll the details follow here.\n\t</details>\n```\n\n|Parameter |Description |h\n|summary |Optional text to display as summary. Wins over field (see below). |\n|open |Optional initial state, set to \"open\" to show details on load. Defaults to \"\". |\n|state |An optional TextReference containing the state. Wins over open. |\n|field |Optionally, the summary is taken from the field with this name in a given tiddler. Defaults to \"title\". |\n|tiddler |Optional title of a tiddler to watch, connected to field. Defaults to current tiddler. |\n|class |Optional CSS classes to be assigned to the details tag. |\n\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar Widget = require(\"$:/core/modules/widgets/widget.js\").widget;\n\nvar DetailsWidget = function(parseTreeNode,options) {\n\tthis.initialise(parseTreeNode,options);\n};\n\n/*\nInherit from the base widget class\n*/\nDetailsWidget.prototype = new Widget();\n\n/*\nRender this widget into the DOM\n*/\nDetailsWidget.prototype.render = function(parent,nextSibling) {\n\t// Save the parent dom node\n\tthis.parentDomNode = parent;\n\t// Compute attributes\n\tthis.computeAttributes();\n\t// Execute logic\n\tthis.execute();\n\t// Create elements\n\tthis.detailsDomNode = this.document.createElement(\"details\");\n\tif(this.detailsClass !== \"\") {\n\t\t// this.detailsClass += \" \";\n\t\t// this.detailsClass += \"tc-details\";\n\t\tthis.detailsDomNode.setAttribute(\"class\",this.detailsClass);\n\t}\n\tif(this.detailsOpen == \"open\") {\n\t\tthis.detailsDomNode.setAttribute(\"open\",\"open\");\n\t}\n\tif(this.detailsSummary !== \"\") {\n\t\tthis.summaryDomNode = this.document.createElement(\"summary\");\n\t\t// this.summaryDomNode.setAttribute(\"class\",\"tc-summary\");\n\t\tthis.detailsDomNode.appendChild(this.summaryDomNode);\n\t\tthis.summaryDomNode.appendChild(this.document.createTextNode(this.detailsSummary));\n\t}\n// register an event listener\n/* Maybe this can be reactivated later, see below.\n\tif(this.detailsStateTitle) {\n\t\t$tw.utils.addEventListeners(this.detailsDomNode,[\n\t\t\t{name: \"toggle\", handlerObject: this, handlerMethod: \"handleToggleEvent\"},\n\t\t]);\n\t}\n*/\n// As iOS mobile browsers lack support of toggle events on details \n// we emulate the toggle event using click\n\tif(this.detailsStateTitle && this.summaryDomNode) {\n\t\t$tw.utils.addEventListeners(this.summaryDomNode,[\n\t\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleToggleEvent\"},\n\t\t]);\n\t} else {\n\t\tif(this.detailsStateTitle) {\n\t\t\t$tw.utils.addEventListeners(this.detailsDomNode,[\n\t\t\t\t{name: \"click\", handlerObject: this, handlerMethod: \"handleToggleEvent\"},\n\t\t\t]);\n\t\t}\n\t}\n\t// Insert the details into the DOM and render any children\n\tthis.parentDomNode.insertBefore(this.detailsDomNode,nextSibling);\n\tthis.renderChildren(this.detailsDomNode,null);\n\tthis.domNodes.push(this.detailsDomNode);\n};\n\n/*\nRetrieve the value of the summary\n*/\nDetailsWidget.prototype.getSummary = function() {\n\tvar summary = \"\";\n\tif(this.summaryTitle === \"Tiddler not found\" && this.summaryField === \"\") {\n\t// nothing defined: leave empty \n\t\tsummary = \"\";\n\t} else {\n\t\t// tiddler defined? use defined field or title\n\t\tif(this.myTiddler) {\n\t\t\tif(this.summaryField === \"title\" || this.summaryField === \"\") {\n\t\t\t\tsummary = this.summaryTitle;\n\t\t\t} else {\n\t\t\t\tif(this.summaryField === \"text\") {\n         \t\t// getTiddlerText() triggers lazy loading of skinny tiddlers\n\t\t\t\t\tsummary = this.wiki.getTiddlerText(this.summaryTitle);\n\t\t\t\t} else {\n\t\t\t\t\tsummary = this.myTiddler.fields[this.summaryField];\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tif(this.summaryField !== \"\" && this.summaryField !== \"text\") {\n\t\t\t\t// try defined field in current tiddler\n\t\t\t\tvar tiddler = this.wiki.getTiddler(this.getVariable(\"currentTiddler\"));\n\t\t\t\tsummary = tiddler.fields[this.summaryField];\n\t\t\t} else {\n\t\t\t\tsummary = \"\";\n\t\t\t}\n\t\t}\n\t}\n   return summary;\n};\n\n/*\nRetrieve the value of the state text reference\n*/\nDetailsWidget.prototype.getStateFromReference = function() {\n    var state = this.detailsStateTitle ? this.wiki.getTextReference(this.detailsStateTitle,\"\",this.getVariable(\"currentTiddler\")) : \"\";\n    return state;\n};\n\n/*\nCheck all open signals, state fields/tiddlers get priority\n*/\nDetailsWidget.prototype.getOpenState = function() {\n\tvar result = \"\";\n\tif((this.detailsOpenDefault !== \"\" && this.detailsOpenDefault !== \"no\") \n\t    || this.detailsState === \"open\") {\n\t\tresult = \"open\";\n\t } \n\tif(this.detailsStateTitle !==\"\" && this.detailsState !== \"open\") {\n\t\tresult = \"\";\n\t}\n\treturn result;\n};\n\n/*\nUpdate the state text reference after click event\n*/\nDetailsWidget.prototype.updateState = function(openState) {\n\tvar fieldValue = \"false\";\n\tvar currentTiddler = this.getVariable(\"currentTiddler\");\n    // get the title for the (existing/new) tiddler\n\tvar tr = $tw.utils.parseTextReference(this.detailsStateTitle);\n\tvar tidTitle = tr.title || currentTiddler;\n    // is it an existing state tiddler?\n\tvar isStateTiddler = (tr.title === this.detailsStateTitle);\n\tvar hasStateTiddler = this.wiki.tiddlerExists(tr.title);\n\tvar currentStateTiddler = (tr.title === currentTiddler);\n\tif(isStateTiddler || hasStateTiddler || (currentStateTiddler && tr.field !== \"text\")) { \n\t\t// Set the state field (but never overwrite the current tiddler’s text field\n\t\tthis.wiki.setText(tidTitle,tr.field,tr.index,openState);\n\t} else {\n\t\tif(!hasStateTiddler && tidTitle !== currentTiddler) {\n\t\t\tthis.createTiddler(tidTitle);\n\t\t\tthis.wiki.setText(tidTitle,tr.field,tr.index,openState);\n\t\t} else {\n\t\t\tconsole.log (\"Something went wrong in updateState\");\n\t\t}\n\t}\n};\n\n/*\nCreate a tiddler with a title only\n*/\nDetailsWidget.prototype.createTiddler = function(tidTitle) {\n\tthis.wiki.addTiddler(new $tw.Tiddler(\n\t\tthis.wiki.getCreationFields(),\n\t\tthis.wiki.getModificationFields(),\n\t\t{\n\t\t\ttitle: tidTitle,\n\t\t\ttags: []\n\t\t}\n\t));\n};\n\n/*\nSet openState according to click\n*/\nDetailsWidget.prototype.handleToggleEvent = function(event) {\n\t// check if an open attribute is present\n\tvar newState = this.detailsDomNode.open ? \"\" : \"open\";\n\t// update only, if the node has a new state\n\tif(newState !== this.detailsState) {\n\t\tthis.updateState(newState);\n\t}\n};\n\n/*\nCompute the internal state of the widget\n*/\nDetailsWidget.prototype.execute = function() {\n\t// Get the parameters from the attributes \n\tvar tryTiddler = this.getAttribute(\"tiddler\");\n\tthis.myTiddler = this.wiki.getTiddler(tryTiddler);\n\tthis.summaryTitle = this.myTiddler ? tryTiddler : \"Tiddler not found\";\n\tthis.summaryField = this.getAttribute(\"field\",\"\");\n\tthis.detailsSummary = this.getAttribute(\"summary\") || this.getSummary();\n\tthis.detailsStateTitle = this.getAttribute(\"state\",\"\");\n\tthis.detailsState = this.getStateFromReference();\n\tthis.detailsOpenDefault = this.getAttribute(\"open\",\"\");\n\tthis.detailsOpen = this.getOpenState();\n\tthis.detailsClass = this.getAttribute(\"class\",\"\");\n\t// Construct the child widgets\n\tthis.makeChildWidgets();\n};\n\n/*\nSelectively refreshes the widget if needed. Returns true if the widget or any of its children needed re-rendering\n*/\nDetailsWidget.prototype.refresh = function(changedTiddlers) {\n\tvar changedAttributes = this.computeAttributes();\n\tif(changedAttributes.tiddler || changedAttributes.field || changedAttributes.summary || changedAttributes.state || changedAttributes.open || changedAttributes[\"class\"]) {\n\t\tthis.refreshSelf();\n\t\treturn true;\n\t} else {\n\t\tvar refreshed = false;\n\t\tvar testState = this.getStateFromReference();\n\t\tif(testState !== this.detailsState) {\n\t\t\t// state change\n\t\t\tthis.refreshSelf();\n\t\t\trefreshed = true;\n\t\t} \n\t\treturn this.refreshChildren(changedTiddlers) || refreshed;\n\t}\n};\n\nexports.details = DetailsWidget;\n\n})();",
            "type": "application/javascript",
            "title": "$:/plugins/telmiger/details/details.js",
            "tags": "Plugins",
            "module-type": "widget",
            "modifier": "Thomas Elmiger",
            "modified": "20180929212032187",
            "creator": "Thomas Elmiger",
            "created": "20170124173619910"
        },
        "$:/plugins/telmiger/details/icon": {
            "created": "20170205205314072",
            "text": "<svg class=\"tc-image-button telmiger-icon\" viewBox=\"0 0 128 128\" xmlns=\"http://www.w3.org/2000/svg\" fill-rule=\"evenodd\" viewBox=\"0 0 128 128\" role=\"img\" aria-labelledby=\"title\"><title id=\"title\">T</title><path class=\"circle\" d=\"M64 2C30 2 2 29.753 2 64c0 34.235 27.753 62 62 62s62-27.752 62-62C126 29.753 98.221 2 64 2z\"/><path class=\"t\" d=\"M100.41 63.254c-2.886 1.92-7.544 2.883-13.979 2.883h-8.008c-4.246 0-7.331.845-9.254 2.536-1.922 1.69-3.449 5.086-4.576 10.19 0 0-.181 1.481-.503 1.481s-.369-.877-.518-1.586a37.897 37.897 0 0 0-.721-2.754c-.631-2.137-1.262-3.753-1.894-4.847-.764-1.359-1.727-2.452-2.889-3.28-1.162-.83-2.49-1.326-3.985-1.492l-2.092-.248H41.73c-6.144 0-10.711-.962-13.7-2.884-4.976-3.159-7.649-9.129-8.02-17.91-.03-.706.003-1.351.132-2.171h.585c.399 3.975 3.679 7.048 6.086 9.219 2.408 2.172 6.269 3.258 11.581 3.258h9.313c5.347 0 9.257 1.226 11.731 3.68 2.231 2.213 3.701 5.68 4.406 10.4.076.511.03.736.178.736.149 0 .11-.256.17-.783.713-6.122 3.085-10.219 7.117-12.294 2.487-1.292 6.434-1.906 11.841-1.839l6.368.1c4.311.066 7.942-.788 10.893-2.56 2.953-1.773 6.447-5.079 6.844-9.917h.595c.183.478.16 1.576.127 2.333-.371 8.752-2.894 14.668-7.567 17.749z\"/></svg>\n<style>\n.telmiger-icon .circle { fill: #e2001a }\n.telmiger-icon .t { fill: #fff }\n</style>",
            "title": "$:/plugins/telmiger/details/icon",
            "tags": "",
            "modified": "20171219183752113"
        },
        "$:/plugins/telmiger/details/license": {
            "text": "!! Plugin license\n!!!The MIT License (MIT)\n\n```\nCopyright © 2017/2018 Thomas Elmiger – thomas-elmiger.ch\n\nPermission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n```",
            "title": "$:/plugins/telmiger/details/license",
            "tags": "",
            "modified": "20170205214435064",
            "created": "20170205213335455"
        },
        "$:/plugins/telmiger/details/readme": {
            "created": "20170205212323032",
            "text": "! ~DetailsWidget\n\nA plugin for [[TiddlyWiki|http://tiddlywiki.com]] 5 containing a script and some styles to create an HTML 5 `<details>` section including a `<summary>`. Here’s an example:\n\n<$details summary=\"W3C definition\">\n\n<<<\nThe [[details|http://w3c.github.io/html/interactive-elements.html#elementdef-details]] element represents a disclosure widget from which the user can obtain additional information or controls.\n<<< W3C\n\n</$details>\n\nDocumentation can be found at http://tid.li/tw5/plugins.html#DetailsWidget\n",
            "title": "$:/plugins/telmiger/details/readme",
            "tags": "",
            "modified": "20171219183752113"
        },
        "$:/plugins/telmiger/details/colours.css": {
            "text": "/* details and summary colours */\n\ndetails {\n   background-color: <<colour tiddler-info-tab-background>>;\n   color: <<colour foreground>>;\n}\n\ndetails summary {\n   background-color: <<colour dropdown-tab-background>>;\n}\n\ndetails.notification summary {\n    background-color: <<colour notification-background>>;\n    /* TW leaves color undefined/uses foreground */\n}\n\ndetails.warning summary {\n    background-color: #ffbbaf;\n    color: #000;\n}\n\ndetails.success summary {\n    background-color: #88edc5;\n    color: #000;\n}\n",
            "title": "$:/plugins/telmiger/details/colours.css",
            "tags": "$:/tags/Stylesheet",
            "modifier": "Thomas Elmiger",
            "modified": "20180926204140772",
            "creator": "Thomas Elmiger",
            "created": "20180925155320737"
        },
        "$:/plugins/telmiger/details/accordion": {
            "text": "\\define accordion(filter:\"_no_\",open:\"no\",class:\"\")\n<$vars accordion-filter=\"\"\"$filter$\"\"\" open=\"\"\"$open$\"\"\" class=\"\"\"$class$\"\"\">\n<$list filter=<<accordion-filter>>>\n<$details summary=<<currentTiddler>> open=<<open>> class=<<class>>>\n\n<$transclude tiddler=<<currentTiddler>>/>\n\n</$details>\n</$list>\n</$vars>\n\\end\n\n<!-- !!! Accordion Macro for Details\n\nList tiddlers and open them in a details-summary structure\n\n!!!! Attributes\n* filter: filter to select tiddlers\n* open: set to \"open\" to display details on load\n* class: set a class for the details tag\n\n-->",
            "title": "$:/plugins/telmiger/details/accordion",
            "tags": "$:/tags/Macro",
            "modifier": "Thomas Elmiger",
            "modified": "20180929065014252",
            "creator": "Thomas Elmiger",
            "created": "20180928194557274"
        }
    }
}
/*!
 *  Font Awesome 4.7.0 by @davegandy - http://fontawesome.io - @fontawesome
 *  License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
 */
/* FONT PATH
 * -------------------------- */
@font-face {
  font-family: 'FontAwesome';
  src: url(data:application/font-woff;base64,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) format("woff");  font-weight: normal;
  font-style: normal;
}
.fa {
  display: inline-block;
  font: normal normal normal 14px/1 FontAwesome;
  font-size: inherit;
  text-rendering: auto;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}
/* makes the font 33% larger relative to the icon container */
.fa-lg {
  font-size: 1.33333333em;
  line-height: 0.75em;
  vertical-align: -15%;
}
.fa-2x {
  font-size: 2em;
}
.fa-3x {
  font-size: 3em;
}
.fa-4x {
  font-size: 4em;
}
.fa-5x {
  font-size: 5em;
}
.fa-fw {
  width: 1.28571429em;
  text-align: center;
}
.fa-ul {
  padding-left: 0;
  margin-left: 2.14285714em;
  list-style-type: none;
}
.fa-ul > li {
  position: relative;
}
.fa-li {
  position: absolute;
  left: -2.14285714em;
  width: 2.14285714em;
  top: 0.14285714em;
  text-align: center;
}
.fa-li.fa-lg {
  left: -1.85714286em;
}
.fa-border {
  padding: .2em .25em .15em;
  border: solid 0.08em #eeeeee;
  border-radius: .1em;
}
.fa-pull-left {
  float: left;
}
.fa-pull-right {
  float: right;
}
.fa.fa-pull-left {
  margin-right: .3em;
}
.fa.fa-pull-right {
  margin-left: .3em;
}
/* Deprecated as of 4.4.0 */
.pull-right {
  float: right;
}
.pull-left {
  float: left;
}
.fa.pull-left {
  margin-right: .3em;
}
.fa.pull-right {
  margin-left: .3em;
}
.fa-spin {
  -webkit-animation: fa-spin 2s infinite linear;
  animation: fa-spin 2s infinite linear;
}
.fa-pulse {
  -webkit-animation: fa-spin 1s infinite steps(8);
  animation: fa-spin 1s infinite steps(8);
}
@-webkit-keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
@keyframes fa-spin {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(359deg);
    transform: rotate(359deg);
  }
}
.fa-rotate-90 {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";
  -webkit-transform: rotate(90deg);
  -ms-transform: rotate(90deg);
  transform: rotate(90deg);
}
.fa-rotate-180 {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";
  -webkit-transform: rotate(180deg);
  -ms-transform: rotate(180deg);
  transform: rotate(180deg);
}
.fa-rotate-270 {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";
  -webkit-transform: rotate(270deg);
  -ms-transform: rotate(270deg);
  transform: rotate(270deg);
}
.fa-flip-horizontal {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";
  -webkit-transform: scale(-1, 1);
  -ms-transform: scale(-1, 1);
  transform: scale(-1, 1);
}
.fa-flip-vertical {
  -ms-filter: "progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";
  -webkit-transform: scale(1, -1);
  -ms-transform: scale(1, -1);
  transform: scale(1, -1);
}
:root .fa-rotate-90,
:root .fa-rotate-180,
:root .fa-rotate-270,
:root .fa-flip-horizontal,
:root .fa-flip-vertical {
  filter: none;
}
.fa-stack {
  position: relative;
  display: inline-block;
  width: 2em;
  height: 2em;
  line-height: 2em;
  vertical-align: middle;
}
.fa-stack-1x,
.fa-stack-2x {
  position: absolute;
  left: 0;
  width: 100%;
  text-align: center;
}
.fa-stack-1x {
  line-height: inherit;
}
.fa-stack-2x {
  font-size: 2em;
}
.fa-inverse {
  color: #ffffff;
}
/* Font Awesome uses the Unicode Private Use Area (PUA) to ensure screen
   readers do not read off random characters that represent icons */
.fa-glass:before {
  content: "\f000";
}
.fa-music:before {
  content: "\f001";
}
.fa-search:before {
  content: "\f002";
}
.fa-envelope-o:before {
  content: "\f003";
}
.fa-heart:before {
  content: "\f004";
}
.fa-star:before {
  content: "\f005";
}
.fa-star-o:before {
  content: "\f006";
}
.fa-user:before {
  content: "\f007";
}
.fa-film:before {
  content: "\f008";
}
.fa-th-large:before {
  content: "\f009";
}
.fa-th:before {
  content: "\f00a";
}
.fa-th-list:before {
  content: "\f00b";
}
.fa-check:before {
  content: "\f00c";
}
.fa-remove:before,
.fa-close:before,
.fa-times:before {
  content: "\f00d";
}
.fa-search-plus:before {
  content: "\f00e";
}
.fa-search-minus:before {
  content: "\f010";
}
.fa-power-off:before {
  content: "\f011";
}
.fa-signal:before {
  content: "\f012";
}
.fa-gear:before,
.fa-cog:before {
  content: "\f013";
}
.fa-trash-o:before {
  content: "\f014";
}
.fa-home:before {
  content: "\f015";
}
.fa-file-o:before {
  content: "\f016";
}
.fa-clock-o:before {
  content: "\f017";
}
.fa-road:before {
  content: "\f018";
}
.fa-download:before {
  content: "\f019";
}
.fa-arrow-circle-o-down:before {
  content: "\f01a";
}
.fa-arrow-circle-o-up:before {
  content: "\f01b";
}
.fa-inbox:before {
  content: "\f01c";
}
.fa-play-circle-o:before {
  content: "\f01d";
}
.fa-rotate-right:before,
.fa-repeat:before {
  content: "\f01e";
}
.fa-refresh:before {
  content: "\f021";
}
.fa-list-alt:before {
  content: "\f022";
}
.fa-lock:before {
  content: "\f023";
}
.fa-flag:before {
  content: "\f024";
}
.fa-headphones:before {
  content: "\f025";
}
.fa-volume-off:before {
  content: "\f026";
}
.fa-volume-down:before {
  content: "\f027";
}
.fa-volume-up:before {
  content: "\f028";
}
.fa-qrcode:before {
  content: "\f029";
}
.fa-barcode:before {
  content: "\f02a";
}
.fa-tag:before {
  content: "\f02b";
}
.fa-tags:before {
  content: "\f02c";
}
.fa-book:before {
  content: "\f02d";
}
.fa-bookmark:before {
  content: "\f02e";
}
.fa-print:before {
  content: "\f02f";
}
.fa-camera:before {
  content: "\f030";
}
.fa-font:before {
  content: "\f031";
}
.fa-bold:before {
  content: "\f032";
}
.fa-italic:before {
  content: "\f033";
}
.fa-text-height:before {
  content: "\f034";
}
.fa-text-width:before {
  content: "\f035";
}
.fa-align-left:before {
  content: "\f036";
}
.fa-align-center:before {
  content: "\f037";
}
.fa-align-right:before {
  content: "\f038";
}
.fa-align-justify:before {
  content: "\f039";
}
.fa-list:before {
  content: "\f03a";
}
.fa-dedent:before,
.fa-outdent:before {
  content: "\f03b";
}
.fa-indent:before {
  content: "\f03c";
}
.fa-video-camera:before {
  content: "\f03d";
}
.fa-photo:before,
.fa-image:before,
.fa-picture-o:before {
  content: "\f03e";
}
.fa-pencil:before {
  content: "\f040";
}
.fa-map-marker:before {
  content: "\f041";
}
.fa-adjust:before {
  content: "\f042";
}
.fa-tint:before {
  content: "\f043";
}
.fa-edit:before,
.fa-pencil-square-o:before {
  content: "\f044";
}
.fa-share-square-o:before {
  content: "\f045";
}
.fa-check-square-o:before {
  content: "\f046";
}
.fa-arrows:before {
  content: "\f047";
}
.fa-step-backward:before {
  content: "\f048";
}
.fa-fast-backward:before {
  content: "\f049";
}
.fa-backward:before {
  content: "\f04a";
}
.fa-play:before {
  content: "\f04b";
}
.fa-pause:before {
  content: "\f04c";
}
.fa-stop:before {
  content: "\f04d";
}
.fa-forward:before {
  content: "\f04e";
}
.fa-fast-forward:before {
  content: "\f050";
}
.fa-step-forward:before {
  content: "\f051";
}
.fa-eject:before {
  content: "\f052";
}
.fa-chevron-left:before {
  content: "\f053";
}
.fa-chevron-right:before {
  content: "\f054";
}
.fa-plus-circle:before {
  content: "\f055";
}
.fa-minus-circle:before {
  content: "\f056";
}
.fa-times-circle:before {
  content: "\f057";
}
.fa-check-circle:before {
  content: "\f058";
}
.fa-question-circle:before {
  content: "\f059";
}
.fa-info-circle:before {
  content: "\f05a";
}
.fa-crosshairs:before {
  content: "\f05b";
}
.fa-times-circle-o:before {
  content: "\f05c";
}
.fa-check-circle-o:before {
  content: "\f05d";
}
.fa-ban:before {
  content: "\f05e";
}
.fa-arrow-left:before {
  content: "\f060";
}
.fa-arrow-right:before {
  content: "\f061";
}
.fa-arrow-up:before {
  content: "\f062";
}
.fa-arrow-down:before {
  content: "\f063";
}
.fa-mail-forward:before,
.fa-share:before {
  content: "\f064";
}
.fa-expand:before {
  content: "\f065";
}
.fa-compress:before {
  content: "\f066";
}
.fa-plus:before {
  content: "\f067";
}
.fa-minus:before {
  content: "\f068";
}
.fa-asterisk:before {
  content: "\f069";
}
.fa-exclamation-circle:before {
  content: "\f06a";
}
.fa-gift:before {
  content: "\f06b";
}
.fa-leaf:before {
  content: "\f06c";
}
.fa-fire:before {
  content: "\f06d";
}
.fa-eye:before {
  content: "\f06e";
}
.fa-eye-slash:before {
  content: "\f070";
}
.fa-warning:before,
.fa-exclamation-triangle:before {
  content: "\f071";
}
.fa-plane:before {
  content: "\f072";
}
.fa-calendar:before {
  content: "\f073";
}
.fa-random:before {
  content: "\f074";
}
.fa-comment:before {
  content: "\f075";
}
.fa-magnet:before {
  content: "\f076";
}
.fa-chevron-up:before {
  content: "\f077";
}
.fa-chevron-down:before {
  content: "\f078";
}
.fa-retweet:before {
  content: "\f079";
}
.fa-shopping-cart:before {
  content: "\f07a";
}
.fa-folder:before {
  content: "\f07b";
}
.fa-folder-open:before {
  content: "\f07c";
}
.fa-arrows-v:before {
  content: "\f07d";
}
.fa-arrows-h:before {
  content: "\f07e";
}
.fa-bar-chart-o:before,
.fa-bar-chart:before {
  content: "\f080";
}
.fa-twitter-square:before {
  content: "\f081";
}
.fa-facebook-square:before {
  content: "\f082";
}
.fa-camera-retro:before {
  content: "\f083";
}
.fa-key:before {
  content: "\f084";
}
.fa-gears:before,
.fa-cogs:before {
  content: "\f085";
}
.fa-comments:before {
  content: "\f086";
}
.fa-thumbs-o-up:before {
  content: "\f087";
}
.fa-thumbs-o-down:before {
  content: "\f088";
}
.fa-star-half:before {
  content: "\f089";
}
.fa-heart-o:before {
  content: "\f08a";
}
.fa-sign-out:before {
  content: "\f08b";
}
.fa-linkedin-square:before {
  content: "\f08c";
}
.fa-thumb-tack:before {
  content: "\f08d";
}
.fa-external-link:before {
  content: "\f08e";
}
.fa-sign-in:before {
  content: "\f090";
}
.fa-trophy:before {
  content: "\f091";
}
.fa-github-square:before {
  content: "\f092";
}
.fa-upload:before {
  content: "\f093";
}
.fa-lemon-o:before {
  content: "\f094";
}
.fa-phone:before {
  content: "\f095";
}
.fa-square-o:before {
  content: "\f096";
}
.fa-bookmark-o:before {
  content: "\f097";
}
.fa-phone-square:before {
  content: "\f098";
}
.fa-twitter:before {
  content: "\f099";
}
.fa-facebook-f:before,
.fa-facebook:before {
  content: "\f09a";
}
.fa-github:before {
  content: "\f09b";
}
.fa-unlock:before {
  content: "\f09c";
}
.fa-credit-card:before {
  content: "\f09d";
}
.fa-feed:before,
.fa-rss:before {
  content: "\f09e";
}
.fa-hdd-o:before {
  content: "\f0a0";
}
.fa-bullhorn:before {
  content: "\f0a1";
}
.fa-bell:before {
  content: "\f0f3";
}
.fa-certificate:before {
  content: "\f0a3";
}
.fa-hand-o-right:before {
  content: "\f0a4";
}
.fa-hand-o-left:before {
  content: "\f0a5";
}
.fa-hand-o-up:before {
  content: "\f0a6";
}
.fa-hand-o-down:before {
  content: "\f0a7";
}
.fa-arrow-circle-left:before {
  content: "\f0a8";
}
.fa-arrow-circle-right:before {
  content: "\f0a9";
}
.fa-arrow-circle-up:before {
  content: "\f0aa";
}
.fa-arrow-circle-down:before {
  content: "\f0ab";
}
.fa-globe:before {
  content: "\f0ac";
}
.fa-wrench:before {
  content: "\f0ad";
}
.fa-tasks:before {
  content: "\f0ae";
}
.fa-filter:before {
  content: "\f0b0";
}
.fa-briefcase:before {
  content: "\f0b1";
}
.fa-arrows-alt:before {
  content: "\f0b2";
}
.fa-group:before,
.fa-users:before {
  content: "\f0c0";
}
.fa-chain:before,
.fa-link:before {
  content: "\f0c1";
}
.fa-cloud:before {
  content: "\f0c2";
}
.fa-flask:before {
  content: "\f0c3";
}
.fa-cut:before,
.fa-scissors:before {
  content: "\f0c4";
}
.fa-copy:before,
.fa-files-o:before {
  content: "\f0c5";
}
.fa-paperclip:before {
  content: "\f0c6";
}
.fa-save:before,
.fa-floppy-o:before {
  content: "\f0c7";
}
.fa-square:before {
  content: "\f0c8";
}
.fa-navicon:before,
.fa-reorder:before,
.fa-bars:before {
  content: "\f0c9";
}
.fa-list-ul:before {
  content: "\f0ca";
}
.fa-list-ol:before {
  content: "\f0cb";
}
.fa-strikethrough:before {
  content: "\f0cc";
}
.fa-underline:before {
  content: "\f0cd";
}
.fa-table:before {
  content: "\f0ce";
}
.fa-magic:before {
  content: "\f0d0";
}
.fa-truck:before {
  content: "\f0d1";
}
.fa-pinterest:before {
  content: "\f0d2";
}
.fa-pinterest-square:before {
  content: "\f0d3";
}
.fa-google-plus-square:before {
  content: "\f0d4";
}
.fa-google-plus:before {
  content: "\f0d5";
}
.fa-money:before {
  content: "\f0d6";
}
.fa-caret-down:before {
  content: "\f0d7";
}
.fa-caret-up:before {
  content: "\f0d8";
}
.fa-caret-left:before {
  content: "\f0d9";
}
.fa-caret-right:before {
  content: "\f0da";
}
.fa-columns:before {
  content: "\f0db";
}
.fa-unsorted:before,
.fa-sort:before {
  content: "\f0dc";
}
.fa-sort-down:before,
.fa-sort-desc:before {
  content: "\f0dd";
}
.fa-sort-up:before,
.fa-sort-asc:before {
  content: "\f0de";
}
.fa-envelope:before {
  content: "\f0e0";
}
.fa-linkedin:before {
  content: "\f0e1";
}
.fa-rotate-left:before,
.fa-undo:before {
  content: "\f0e2";
}
.fa-legal:before,
.fa-gavel:before {
  content: "\f0e3";
}
.fa-dashboard:before,
.fa-tachometer:before {
  content: "\f0e4";
}
.fa-comment-o:before {
  content: "\f0e5";
}
.fa-comments-o:before {
  content: "\f0e6";
}
.fa-flash:before,
.fa-bolt:before {
  content: "\f0e7";
}
.fa-sitemap:before {
  content: "\f0e8";
}
.fa-umbrella:before {
  content: "\f0e9";
}
.fa-paste:before,
.fa-clipboard:before {
  content: "\f0ea";
}
.fa-lightbulb-o:before {
  content: "\f0eb";
}
.fa-exchange:before {
  content: "\f0ec";
}
.fa-cloud-download:before {
  content: "\f0ed";
}
.fa-cloud-upload:before {
  content: "\f0ee";
}
.fa-user-md:before {
  content: "\f0f0";
}
.fa-stethoscope:before {
  content: "\f0f1";
}
.fa-suitcase:before {
  content: "\f0f2";
}
.fa-bell-o:before {
  content: "\f0a2";
}
.fa-coffee:before {
  content: "\f0f4";
}
.fa-cutlery:before {
  content: "\f0f5";
}
.fa-file-text-o:before {
  content: "\f0f6";
}
.fa-building-o:before {
  content: "\f0f7";
}
.fa-hospital-o:before {
  content: "\f0f8";
}
.fa-ambulance:before {
  content: "\f0f9";
}
.fa-medkit:before {
  content: "\f0fa";
}
.fa-fighter-jet:before {
  content: "\f0fb";
}
.fa-beer:before {
  content: "\f0fc";
}
.fa-h-square:before {
  content: "\f0fd";
}
.fa-plus-square:before {
  content: "\f0fe";
}
.fa-angle-double-left:before {
  content: "\f100";
}
.fa-angle-double-right:before {
  content: "\f101";
}
.fa-angle-double-up:before {
  content: "\f102";
}
.fa-angle-double-down:before {
  content: "\f103";
}
.fa-angle-left:before {
  content: "\f104";
}
.fa-angle-right:before {
  content: "\f105";
}
.fa-angle-up:before {
  content: "\f106";
}
.fa-angle-down:before {
  content: "\f107";
}
.fa-desktop:before {
  content: "\f108";
}
.fa-laptop:before {
  content: "\f109";
}
.fa-tablet:before {
  content: "\f10a";
}
.fa-mobile-phone:before,
.fa-mobile:before {
  content: "\f10b";
}
.fa-circle-o:before {
  content: "\f10c";
}
.fa-quote-left:before {
  content: "\f10d";
}
.fa-quote-right:before {
  content: "\f10e";
}
.fa-spinner:before {
  content: "\f110";
}
.fa-circle:before {
  content: "\f111";
}
.fa-mail-reply:before,
.fa-reply:before {
  content: "\f112";
}
.fa-github-alt:before {
  content: "\f113";
}
.fa-folder-o:before {
  content: "\f114";
}
.fa-folder-open-o:before {
  content: "\f115";
}
.fa-smile-o:before {
  content: "\f118";
}
.fa-frown-o:before {
  content: "\f119";
}
.fa-meh-o:before {
  content: "\f11a";
}
.fa-gamepad:before {
  content: "\f11b";
}
.fa-keyboard-o:before {
  content: "\f11c";
}
.fa-flag-o:before {
  content: "\f11d";
}
.fa-flag-checkered:before {
  content: "\f11e";
}
.fa-terminal:before {
  content: "\f120";
}
.fa-code:before {
  content: "\f121";
}
.fa-mail-reply-all:before,
.fa-reply-all:before {
  content: "\f122";
}
.fa-star-half-empty:before,
.fa-star-half-full:before,
.fa-star-half-o:before {
  content: "\f123";
}
.fa-location-arrow:before {
  content: "\f124";
}
.fa-crop:before {
  content: "\f125";
}
.fa-code-fork:before {
  content: "\f126";
}
.fa-unlink:before,
.fa-chain-broken:before {
  content: "\f127";
}
.fa-question:before {
  content: "\f128";
}
.fa-info:before {
  content: "\f129";
}
.fa-exclamation:before {
  content: "\f12a";
}
.fa-superscript:before {
  content: "\f12b";
}
.fa-subscript:before {
  content: "\f12c";
}
.fa-eraser:before {
  content: "\f12d";
}
.fa-puzzle-piece:before {
  content: "\f12e";
}
.fa-microphone:before {
  content: "\f130";
}
.fa-microphone-slash:before {
  content: "\f131";
}
.fa-shield:before {
  content: "\f132";
}
.fa-calendar-o:before {
  content: "\f133";
}
.fa-fire-extinguisher:before {
  content: "\f134";
}
.fa-rocket:before {
  content: "\f135";
}
.fa-maxcdn:before {
  content: "\f136";
}
.fa-chevron-circle-left:before {
  content: "\f137";
}
.fa-chevron-circle-right:before {
  content: "\f138";
}
.fa-chevron-circle-up:before {
  content: "\f139";
}
.fa-chevron-circle-down:before {
  content: "\f13a";
}
.fa-html5:before {
  content: "\f13b";
}
.fa-css3:before {
  content: "\f13c";
}
.fa-anchor:before {
  content: "\f13d";
}
.fa-unlock-alt:before {
  content: "\f13e";
}
.fa-bullseye:before {
  content: "\f140";
}
.fa-ellipsis-h:before {
  content: "\f141";
}
.fa-ellipsis-v:before {
  content: "\f142";
}
.fa-rss-square:before {
  content: "\f143";
}
.fa-play-circle:before {
  content: "\f144";
}
.fa-ticket:before {
  content: "\f145";
}
.fa-minus-square:before {
  content: "\f146";
}
.fa-minus-square-o:before {
  content: "\f147";
}
.fa-level-up:before {
  content: "\f148";
}
.fa-level-down:before {
  content: "\f149";
}
.fa-check-square:before {
  content: "\f14a";
}
.fa-pencil-square:before {
  content: "\f14b";
}
.fa-external-link-square:before {
  content: "\f14c";
}
.fa-share-square:before {
  content: "\f14d";
}
.fa-compass:before {
  content: "\f14e";
}
.fa-toggle-down:before,
.fa-caret-square-o-down:before {
  content: "\f150";
}
.fa-toggle-up:before,
.fa-caret-square-o-up:before {
  content: "\f151";
}
.fa-toggle-right:before,
.fa-caret-square-o-right:before {
  content: "\f152";
}
.fa-euro:before,
.fa-eur:before {
  content: "\f153";
}
.fa-gbp:before {
  content: "\f154";
}
.fa-dollar:before,
.fa-usd:before {
  content: "\f155";
}
.fa-rupee:before,
.fa-inr:before {
  content: "\f156";
}
.fa-cny:before,
.fa-rmb:before,
.fa-yen:before,
.fa-jpy:before {
  content: "\f157";
}
.fa-ruble:before,
.fa-rouble:before,
.fa-rub:before {
  content: "\f158";
}
.fa-won:before,
.fa-krw:before {
  content: "\f159";
}
.fa-bitcoin:before,
.fa-btc:before {
  content: "\f15a";
}
.fa-file:before {
  content: "\f15b";
}
.fa-file-text:before {
  content: "\f15c";
}
.fa-sort-alpha-asc:before {
  content: "\f15d";
}
.fa-sort-alpha-desc:before {
  content: "\f15e";
}
.fa-sort-amount-asc:before {
  content: "\f160";
}
.fa-sort-amount-desc:before {
  content: "\f161";
}
.fa-sort-numeric-asc:before {
  content: "\f162";
}
.fa-sort-numeric-desc:before {
  content: "\f163";
}
.fa-thumbs-up:before {
  content: "\f164";
}
.fa-thumbs-down:before {
  content: "\f165";
}
.fa-youtube-square:before {
  content: "\f166";
}
.fa-youtube:before {
  content: "\f167";
}
.fa-xing:before {
  content: "\f168";
}
.fa-xing-square:before {
  content: "\f169";
}
.fa-youtube-play:before {
  content: "\f16a";
}
.fa-dropbox:before {
  content: "\f16b";
}
.fa-stack-overflow:before {
  content: "\f16c";
}
.fa-instagram:before {
  content: "\f16d";
}
.fa-flickr:before {
  content: "\f16e";
}
.fa-adn:before {
  content: "\f170";
}
.fa-bitbucket:before {
  content: "\f171";
}
.fa-bitbucket-square:before {
  content: "\f172";
}
.fa-tumblr:before {
  content: "\f173";
}
.fa-tumblr-square:before {
  content: "\f174";
}
.fa-long-arrow-down:before {
  content: "\f175";
}
.fa-long-arrow-up:before {
  content: "\f176";
}
.fa-long-arrow-left:before {
  content: "\f177";
}
.fa-long-arrow-right:before {
  content: "\f178";
}
.fa-apple:before {
  content: "\f179";
}
.fa-windows:before {
  content: "\f17a";
}
.fa-android:before {
  content: "\f17b";
}
.fa-linux:before {
  content: "\f17c";
}
.fa-dribbble:before {
  content: "\f17d";
}
.fa-skype:before {
  content: "\f17e";
}
.fa-foursquare:before {
  content: "\f180";
}
.fa-trello:before {
  content: "\f181";
}
.fa-female:before {
  content: "\f182";
}
.fa-male:before {
  content: "\f183";
}
.fa-gittip:before,
.fa-gratipay:before {
  content: "\f184";
}
.fa-sun-o:before {
  content: "\f185";
}
.fa-moon-o:before {
  content: "\f186";
}
.fa-archive:before {
  content: "\f187";
}
.fa-bug:before {
  content: "\f188";
}
.fa-vk:before {
  content: "\f189";
}
.fa-weibo:before {
  content: "\f18a";
}
.fa-renren:before {
  content: "\f18b";
}
.fa-pagelines:before {
  content: "\f18c";
}
.fa-stack-exchange:before {
  content: "\f18d";
}
.fa-arrow-circle-o-right:before {
  content: "\f18e";
}
.fa-arrow-circle-o-left:before {
  content: "\f190";
}
.fa-toggle-left:before,
.fa-caret-square-o-left:before {
  content: "\f191";
}
.fa-dot-circle-o:before {
  content: "\f192";
}
.fa-wheelchair:before {
  content: "\f193";
}
.fa-vimeo-square:before {
  content: "\f194";
}
.fa-turkish-lira:before,
.fa-try:before {
  content: "\f195";
}
.fa-plus-square-o:before {
  content: "\f196";
}
.fa-space-shuttle:before {
  content: "\f197";
}
.fa-slack:before {
  content: "\f198";
}
.fa-envelope-square:before {
  content: "\f199";
}
.fa-wordpress:before {
  content: "\f19a";
}
.fa-openid:before {
  content: "\f19b";
}
.fa-institution:before,
.fa-bank:before,
.fa-university:before {
  content: "\f19c";
}
.fa-mortar-board:before,
.fa-graduation-cap:before {
  content: "\f19d";
}
.fa-yahoo:before {
  content: "\f19e";
}
.fa-google:before {
  content: "\f1a0";
}
.fa-reddit:before {
  content: "\f1a1";
}
.fa-reddit-square:before {
  content: "\f1a2";
}
.fa-stumbleupon-circle:before {
  content: "\f1a3";
}
.fa-stumbleupon:before {
  content: "\f1a4";
}
.fa-delicious:before {
  content: "\f1a5";
}
.fa-digg:before {
  content: "\f1a6";
}
.fa-pied-piper-pp:before {
  content: "\f1a7";
}
.fa-pied-piper-alt:before {
  content: "\f1a8";
}
.fa-drupal:before {
  content: "\f1a9";
}
.fa-joomla:before {
  content: "\f1aa";
}
.fa-language:before {
  content: "\f1ab";
}
.fa-fax:before {
  content: "\f1ac";
}
.fa-building:before {
  content: "\f1ad";
}
.fa-child:before {
  content: "\f1ae";
}
.fa-paw:before {
  content: "\f1b0";
}
.fa-spoon:before {
  content: "\f1b1";
}
.fa-cube:before {
  content: "\f1b2";
}
.fa-cubes:before {
  content: "\f1b3";
}
.fa-behance:before {
  content: "\f1b4";
}
.fa-behance-square:before {
  content: "\f1b5";
}
.fa-steam:before {
  content: "\f1b6";
}
.fa-steam-square:before {
  content: "\f1b7";
}
.fa-recycle:before {
  content: "\f1b8";
}
.fa-automobile:before,
.fa-car:before {
  content: "\f1b9";
}
.fa-cab:before,
.fa-taxi:before {
  content: "\f1ba";
}
.fa-tree:before {
  content: "\f1bb";
}
.fa-spotify:before {
  content: "\f1bc";
}
.fa-deviantart:before {
  content: "\f1bd";
}
.fa-soundcloud:before {
  content: "\f1be";
}
.fa-database:before {
  content: "\f1c0";
}
.fa-file-pdf-o:before {
  content: "\f1c1";
}
.fa-file-word-o:before {
  content: "\f1c2";
}
.fa-file-excel-o:before {
  content: "\f1c3";
}
.fa-file-powerpoint-o:before {
  content: "\f1c4";
}
.fa-file-photo-o:before,
.fa-file-picture-o:before,
.fa-file-image-o:before {
  content: "\f1c5";
}
.fa-file-zip-o:before,
.fa-file-archive-o:before {
  content: "\f1c6";
}
.fa-file-sound-o:before,
.fa-file-audio-o:before {
  content: "\f1c7";
}
.fa-file-movie-o:before,
.fa-file-video-o:before {
  content: "\f1c8";
}
.fa-file-code-o:before {
  content: "\f1c9";
}
.fa-vine:before {
  content: "\f1ca";
}
.fa-codepen:before {
  content: "\f1cb";
}
.fa-jsfiddle:before {
  content: "\f1cc";
}
.fa-life-bouy:before,
.fa-life-buoy:before,
.fa-life-saver:before,
.fa-support:before,
.fa-life-ring:before {
  content: "\f1cd";
}
.fa-circle-o-notch:before {
  content: "\f1ce";
}
.fa-ra:before,
.fa-resistance:before,
.fa-rebel:before {
  content: "\f1d0";
}
.fa-ge:before,
.fa-empire:before {
  content: "\f1d1";
}
.fa-git-square:before {
  content: "\f1d2";
}
.fa-git:before {
  content: "\f1d3";
}
.fa-y-combinator-square:before,
.fa-yc-square:before,
.fa-hacker-news:before {
  content: "\f1d4";
}
.fa-tencent-weibo:before {
  content: "\f1d5";
}
.fa-qq:before {
  content: "\f1d6";
}
.fa-wechat:before,
.fa-weixin:before {
  content: "\f1d7";
}
.fa-send:before,
.fa-paper-plane:before {
  content: "\f1d8";
}
.fa-send-o:before,
.fa-paper-plane-o:before {
  content: "\f1d9";
}
.fa-history:before {
  content: "\f1da";
}
.fa-circle-thin:before {
  content: "\f1db";
}
.fa-header:before {
  content: "\f1dc";
}
.fa-paragraph:before {
  content: "\f1dd";
}
.fa-sliders:before {
  content: "\f1de";
}
.fa-share-alt:before {
  content: "\f1e0";
}
.fa-share-alt-square:before {
  content: "\f1e1";
}
.fa-bomb:before {
  content: "\f1e2";
}
.fa-soccer-ball-o:before,
.fa-futbol-o:before {
  content: "\f1e3";
}
.fa-tty:before {
  content: "\f1e4";
}
.fa-binoculars:before {
  content: "\f1e5";
}
.fa-plug:before {
  content: "\f1e6";
}
.fa-slideshare:before {
  content: "\f1e7";
}
.fa-twitch:before {
  content: "\f1e8";
}
.fa-yelp:before {
  content: "\f1e9";
}
.fa-newspaper-o:before {
  content: "\f1ea";
}
.fa-wifi:before {
  content: "\f1eb";
}
.fa-calculator:before {
  content: "\f1ec";
}
.fa-paypal:before {
  content: "\f1ed";
}
.fa-google-wallet:before {
  content: "\f1ee";
}
.fa-cc-visa:before {
  content: "\f1f0";
}
.fa-cc-mastercard:before {
  content: "\f1f1";
}
.fa-cc-discover:before {
  content: "\f1f2";
}
.fa-cc-amex:before {
  content: "\f1f3";
}
.fa-cc-paypal:before {
  content: "\f1f4";
}
.fa-cc-stripe:before {
  content: "\f1f5";
}
.fa-bell-slash:before {
  content: "\f1f6";
}
.fa-bell-slash-o:before {
  content: "\f1f7";
}
.fa-trash:before {
  content: "\f1f8";
}
.fa-copyright:before {
  content: "\f1f9";
}
.fa-at:before {
  content: "\f1fa";
}
.fa-eyedropper:before {
  content: "\f1fb";
}
.fa-paint-brush:before {
  content: "\f1fc";
}
.fa-birthday-cake:before {
  content: "\f1fd";
}
.fa-area-chart:before {
  content: "\f1fe";
}
.fa-pie-chart:before {
  content: "\f200";
}
.fa-line-chart:before {
  content: "\f201";
}
.fa-lastfm:before {
  content: "\f202";
}
.fa-lastfm-square:before {
  content: "\f203";
}
.fa-toggle-off:before {
  content: "\f204";
}
.fa-toggle-on:before {
  content: "\f205";
}
.fa-bicycle:before {
  content: "\f206";
}
.fa-bus:before {
  content: "\f207";
}
.fa-ioxhost:before {
  content: "\f208";
}
.fa-angellist:before {
  content: "\f209";
}
.fa-cc:before {
  content: "\f20a";
}
.fa-shekel:before,
.fa-sheqel:before,
.fa-ils:before {
  content: "\f20b";
}
.fa-meanpath:before {
  content: "\f20c";
}
.fa-buysellads:before {
  content: "\f20d";
}
.fa-connectdevelop:before {
  content: "\f20e";
}
.fa-dashcube:before {
  content: "\f210";
}
.fa-forumbee:before {
  content: "\f211";
}
.fa-leanpub:before {
  content: "\f212";
}
.fa-sellsy:before {
  content: "\f213";
}
.fa-shirtsinbulk:before {
  content: "\f214";
}
.fa-simplybuilt:before {
  content: "\f215";
}
.fa-skyatlas:before {
  content: "\f216";
}
.fa-cart-plus:before {
  content: "\f217";
}
.fa-cart-arrow-down:before {
  content: "\f218";
}
.fa-diamond:before {
  content: "\f219";
}
.fa-ship:before {
  content: "\f21a";
}
.fa-user-secret:before {
  content: "\f21b";
}
.fa-motorcycle:before {
  content: "\f21c";
}
.fa-street-view:before {
  content: "\f21d";
}
.fa-heartbeat:before {
  content: "\f21e";
}
.fa-venus:before {
  content: "\f221";
}
.fa-mars:before {
  content: "\f222";
}
.fa-mercury:before {
  content: "\f223";
}
.fa-intersex:before,
.fa-transgender:before {
  content: "\f224";
}
.fa-transgender-alt:before {
  content: "\f225";
}
.fa-venus-double:before {
  content: "\f226";
}
.fa-mars-double:before {
  content: "\f227";
}
.fa-venus-mars:before {
  content: "\f228";
}
.fa-mars-stroke:before {
  content: "\f229";
}
.fa-mars-stroke-v:before {
  content: "\f22a";
}
.fa-mars-stroke-h:before {
  content: "\f22b";
}
.fa-neuter:before {
  content: "\f22c";
}
.fa-genderless:before {
  content: "\f22d";
}
.fa-facebook-official:before {
  content: "\f230";
}
.fa-pinterest-p:before {
  content: "\f231";
}
.fa-whatsapp:before {
  content: "\f232";
}
.fa-server:before {
  content: "\f233";
}
.fa-user-plus:before {
  content: "\f234";
}
.fa-user-times:before {
  content: "\f235";
}
.fa-hotel:before,
.fa-bed:before {
  content: "\f236";
}
.fa-viacoin:before {
  content: "\f237";
}
.fa-train:before {
  content: "\f238";
}
.fa-subway:before {
  content: "\f239";
}
.fa-medium:before {
  content: "\f23a";
}
.fa-yc:before,
.fa-y-combinator:before {
  content: "\f23b";
}
.fa-optin-monster:before {
  content: "\f23c";
}
.fa-opencart:before {
  content: "\f23d";
}
.fa-expeditedssl:before {
  content: "\f23e";
}
.fa-battery-4:before,
.fa-battery:before,
.fa-battery-full:before {
  content: "\f240";
}
.fa-battery-3:before,
.fa-battery-three-quarters:before {
  content: "\f241";
}
.fa-battery-2:before,
.fa-battery-half:before {
  content: "\f242";
}
.fa-battery-1:before,
.fa-battery-quarter:before {
  content: "\f243";
}
.fa-battery-0:before,
.fa-battery-empty:before {
  content: "\f244";
}
.fa-mouse-pointer:before {
  content: "\f245";
}
.fa-i-cursor:before {
  content: "\f246";
}
.fa-object-group:before {
  content: "\f247";
}
.fa-object-ungroup:before {
  content: "\f248";
}
.fa-sticky-note:before {
  content: "\f249";
}
.fa-sticky-note-o:before {
  content: "\f24a";
}
.fa-cc-jcb:before {
  content: "\f24b";
}
.fa-cc-diners-club:before {
  content: "\f24c";
}
.fa-clone:before {
  content: "\f24d";
}
.fa-balance-scale:before {
  content: "\f24e";
}
.fa-hourglass-o:before {
  content: "\f250";
}
.fa-hourglass-1:before,
.fa-hourglass-start:before {
  content: "\f251";
}
.fa-hourglass-2:before,
.fa-hourglass-half:before {
  content: "\f252";
}
.fa-hourglass-3:before,
.fa-hourglass-end:before {
  content: "\f253";
}
.fa-hourglass:before {
  content: "\f254";
}
.fa-hand-grab-o:before,
.fa-hand-rock-o:before {
  content: "\f255";
}
.fa-hand-stop-o:before,
.fa-hand-paper-o:before {
  content: "\f256";
}
.fa-hand-scissors-o:before {
  content: "\f257";
}
.fa-hand-lizard-o:before {
  content: "\f258";
}
.fa-hand-spock-o:before {
  content: "\f259";
}
.fa-hand-pointer-o:before {
  content: "\f25a";
}
.fa-hand-peace-o:before {
  content: "\f25b";
}
.fa-trademark:before {
  content: "\f25c";
}
.fa-registered:before {
  content: "\f25d";
}
.fa-creative-commons:before {
  content: "\f25e";
}
.fa-gg:before {
  content: "\f260";
}
.fa-gg-circle:before {
  content: "\f261";
}
.fa-tripadvisor:before {
  content: "\f262";
}
.fa-odnoklassniki:before {
  content: "\f263";
}
.fa-odnoklassniki-square:before {
  content: "\f264";
}
.fa-get-pocket:before {
  content: "\f265";
}
.fa-wikipedia-w:before {
  content: "\f266";
}
.fa-safari:before {
  content: "\f267";
}
.fa-chrome:before {
  content: "\f268";
}
.fa-firefox:before {
  content: "\f269";
}
.fa-opera:before {
  content: "\f26a";
}
.fa-internet-explorer:before {
  content: "\f26b";
}
.fa-tv:before,
.fa-television:before {
  content: "\f26c";
}
.fa-contao:before {
  content: "\f26d";
}
.fa-500px:before {
  content: "\f26e";
}
.fa-amazon:before {
  content: "\f270";
}
.fa-calendar-plus-o:before {
  content: "\f271";
}
.fa-calendar-minus-o:before {
  content: "\f272";
}
.fa-calendar-times-o:before {
  content: "\f273";
}
.fa-calendar-check-o:before {
  content: "\f274";
}
.fa-industry:before {
  content: "\f275";
}
.fa-map-pin:before {
  content: "\f276";
}
.fa-map-signs:before {
  content: "\f277";
}
.fa-map-o:before {
  content: "\f278";
}
.fa-map:before {
  content: "\f279";
}
.fa-commenting:before {
  content: "\f27a";
}
.fa-commenting-o:before {
  content: "\f27b";
}
.fa-houzz:before {
  content: "\f27c";
}
.fa-vimeo:before {
  content: "\f27d";
}
.fa-black-tie:before {
  content: "\f27e";
}
.fa-fonticons:before {
  content: "\f280";
}
.fa-reddit-alien:before {
  content: "\f281";
}
.fa-edge:before {
  content: "\f282";
}
.fa-credit-card-alt:before {
  content: "\f283";
}
.fa-codiepie:before {
  content: "\f284";
}
.fa-modx:before {
  content: "\f285";
}
.fa-fort-awesome:before {
  content: "\f286";
}
.fa-usb:before {
  content: "\f287";
}
.fa-product-hunt:before {
  content: "\f288";
}
.fa-mixcloud:before {
  content: "\f289";
}
.fa-scribd:before {
  content: "\f28a";
}
.fa-pause-circle:before {
  content: "\f28b";
}
.fa-pause-circle-o:before {
  content: "\f28c";
}
.fa-stop-circle:before {
  content: "\f28d";
}
.fa-stop-circle-o:before {
  content: "\f28e";
}
.fa-shopping-bag:before {
  content: "\f290";
}
.fa-shopping-basket:before {
  content: "\f291";
}
.fa-hashtag:before {
  content: "\f292";
}
.fa-bluetooth:before {
  content: "\f293";
}
.fa-bluetooth-b:before {
  content: "\f294";
}
.fa-percent:before {
  content: "\f295";
}
.fa-gitlab:before {
  content: "\f296";
}
.fa-wpbeginner:before {
  content: "\f297";
}
.fa-wpforms:before {
  content: "\f298";
}
.fa-envira:before {
  content: "\f299";
}
.fa-universal-access:before {
  content: "\f29a";
}
.fa-wheelchair-alt:before {
  content: "\f29b";
}
.fa-question-circle-o:before {
  content: "\f29c";
}
.fa-blind:before {
  content: "\f29d";
}
.fa-audio-description:before {
  content: "\f29e";
}
.fa-volume-control-phone:before {
  content: "\f2a0";
}
.fa-braille:before {
  content: "\f2a1";
}
.fa-assistive-listening-systems:before {
  content: "\f2a2";
}
.fa-asl-interpreting:before,
.fa-american-sign-language-interpreting:before {
  content: "\f2a3";
}
.fa-deafness:before,
.fa-hard-of-hearing:before,
.fa-deaf:before {
  content: "\f2a4";
}
.fa-glide:before {
  content: "\f2a5";
}
.fa-glide-g:before {
  content: "\f2a6";
}
.fa-signing:before,
.fa-sign-language:before {
  content: "\f2a7";
}
.fa-low-vision:before {
  content: "\f2a8";
}
.fa-viadeo:before {
  content: "\f2a9";
}
.fa-viadeo-square:before {
  content: "\f2aa";
}
.fa-snapchat:before {
  content: "\f2ab";
}
.fa-snapchat-ghost:before {
  content: "\f2ac";
}
.fa-snapchat-square:before {
  content: "\f2ad";
}
.fa-pied-piper:before {
  content: "\f2ae";
}
.fa-first-order:before {
  content: "\f2b0";
}
.fa-yoast:before {
  content: "\f2b1";
}
.fa-themeisle:before {
  content: "\f2b2";
}
.fa-google-plus-circle:before,
.fa-google-plus-official:before {
  content: "\f2b3";
}
.fa-fa:before,
.fa-font-awesome:before {
  content: "\f2b4";
}
.fa-handshake-o:before {
  content: "\f2b5";
}
.fa-envelope-open:before {
  content: "\f2b6";
}
.fa-envelope-open-o:before {
  content: "\f2b7";
}
.fa-linode:before {
  content: "\f2b8";
}
.fa-address-book:before {
  content: "\f2b9";
}
.fa-address-book-o:before {
  content: "\f2ba";
}
.fa-vcard:before,
.fa-address-card:before {
  content: "\f2bb";
}
.fa-vcard-o:before,
.fa-address-card-o:before {
  content: "\f2bc";
}
.fa-user-circle:before {
  content: "\f2bd";
}
.fa-user-circle-o:before {
  content: "\f2be";
}
.fa-user-o:before {
  content: "\f2c0";
}
.fa-id-badge:before {
  content: "\f2c1";
}
.fa-drivers-license:before,
.fa-id-card:before {
  content: "\f2c2";
}
.fa-drivers-license-o:before,
.fa-id-card-o:before {
  content: "\f2c3";
}
.fa-quora:before {
  content: "\f2c4";
}
.fa-free-code-camp:before {
  content: "\f2c5";
}
.fa-telegram:before {
  content: "\f2c6";
}
.fa-thermometer-4:before,
.fa-thermometer:before,
.fa-thermometer-full:before {
  content: "\f2c7";
}
.fa-thermometer-3:before,
.fa-thermometer-three-quarters:before {
  content: "\f2c8";
}
.fa-thermometer-2:before,
.fa-thermometer-half:before {
  content: "\f2c9";
}
.fa-thermometer-1:before,
.fa-thermometer-quarter:before {
  content: "\f2ca";
}
.fa-thermometer-0:before,
.fa-thermometer-empty:before {
  content: "\f2cb";
}
.fa-shower:before {
  content: "\f2cc";
}
.fa-bathtub:before,
.fa-s15:before,
.fa-bath:before {
  content: "\f2cd";
}
.fa-podcast:before {
  content: "\f2ce";
}
.fa-window-maximize:before {
  content: "\f2d0";
}
.fa-window-minimize:before {
  content: "\f2d1";
}
.fa-window-restore:before {
  content: "\f2d2";
}
.fa-times-rectangle:before,
.fa-window-close:before {
  content: "\f2d3";
}
.fa-times-rectangle-o:before,
.fa-window-close-o:before {
  content: "\f2d4";
}
.fa-bandcamp:before {
  content: "\f2d5";
}
.fa-grav:before {
  content: "\f2d6";
}
.fa-etsy:before {
  content: "\f2d7";
}
.fa-imdb:before {
  content: "\f2d8";
}
.fa-ravelry:before {
  content: "\f2d9";
}
.fa-eercast:before {
  content: "\f2da";
}
.fa-microchip:before {
  content: "\f2db";
}
.fa-snowflake-o:before {
  content: "\f2dc";
}
.fa-superpowers:before {
  content: "\f2dd";
}
.fa-wpexplorer:before {
  content: "\f2de";
}
.fa-meetup:before {
  content: "\f2e0";
}
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  border: 0;
}
.sr-only-focusable:active,
.sr-only-focusable:focus {
  position: static;
  width: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  clip: auto;
}
{
    "tiddlers": {
        "$:/plugins/tiddlywiki/async/async.js": {
            "text": "!function(){function n(){}function t(n){return n}function e(n){return!!n}function r(n){return!n}function u(n){return function(){if(null===n)throw new Error(\"Callback was already called.\");n.apply(this,arguments),n=null}}function i(n){return function(){null!==n&&(n.apply(this,arguments),n=null)}}function o(n){return M(n)||\"number\"==typeof n.length&&n.length>=0&&n.length%1===0}function c(n,t){for(var e=-1,r=n.length;++e<r;)t(n[e],e,n)}function a(n,t){for(var e=-1,r=n.length,u=Array(r);++e<r;)u[e]=t(n[e],e,n);return u}function f(n){return a(Array(n),function(n,t){return t})}function l(n,t,e){return c(n,function(n,r,u){e=t(e,n,r,u)}),e}function s(n,t){c(W(n),function(e){t(n[e],e)})}function p(n,t){for(var e=0;e<n.length;e++)if(n[e]===t)return e;return-1}function h(n){var t,e,r=-1;return o(n)?(t=n.length,function(){return r++,t>r?r:null}):(e=W(n),t=e.length,function(){return r++,t>r?e[r]:null})}function m(n,t){return t=null==t?n.length-1:+t,function(){for(var e=Math.max(arguments.length-t,0),r=Array(e),u=0;e>u;u++)r[u]=arguments[u+t];switch(t){case 0:return n.call(this,r);case 1:return n.call(this,arguments[0],r)}}}function y(n){return function(t,e,r){return n(t,r)}}function v(t){return function(e,r,o){o=i(o||n),e=e||[];var c=h(e);if(0>=t)return o(null);var a=!1,f=0,l=!1;!function s(){if(a&&0>=f)return o(null);for(;t>f&&!l;){var n=c();if(null===n)return a=!0,void(0>=f&&o(null));f+=1,r(e[n],n,u(function(n){f-=1,n?(o(n),l=!0):s()}))}}()}}function d(n){return function(t,e,r){return n(C.eachOf,t,e,r)}}function g(n){return function(t,e,r,u){return n(v(e),t,r,u)}}function k(n){return function(t,e,r){return n(C.eachOfSeries,t,e,r)}}function b(t,e,r,u){u=i(u||n),e=e||[];var c=o(e)?[]:{};t(e,function(n,t,e){r(n,function(n,r){c[t]=r,e(n)})},function(n){u(n,c)})}function w(n,t,e,r){var u=[];n(t,function(n,t,r){e(n,function(e){e&&u.push({index:t,value:n}),r()})},function(){r(a(u.sort(function(n,t){return n.index-t.index}),function(n){return n.value}))})}function O(n,t,e,r){w(n,t,function(n,t){e(n,function(n){t(!n)})},r)}function S(n,t,e){return function(r,u,i,o){function c(){o&&o(e(!1,void 0))}function a(n,r,u){return o?void i(n,function(r){o&&t(r)&&(o(e(!0,n)),o=i=!1),u()}):u()}arguments.length>3?n(r,u,a,c):(o=i,i=u,n(r,a,c))}}function E(n,t){return t}function L(t,e,r){r=r||n;var u=o(e)?[]:{};t(e,function(n,t,e){n(m(function(n,r){r.length<=1&&(r=r[0]),u[t]=r,e(n)}))},function(n){r(n,u)})}function I(n,t,e,r){var u=[];n(t,function(n,t,r){e(n,function(n,t){u=u.concat(t||[]),r(n)})},function(n){r(n,u)})}function x(t,e,r){function i(t,e,r,u){if(null!=u&&\"function\"!=typeof u)throw new Error(\"task callback must be a function\");return t.started=!0,M(e)||(e=[e]),0===e.length&&t.idle()?C.setImmediate(function(){t.drain()}):(c(e,function(e){var i={data:e,callback:u||n};r?t.tasks.unshift(i):t.tasks.push(i),t.tasks.length===t.concurrency&&t.saturated()}),void C.setImmediate(t.process))}function o(n,t){return function(){f-=1;var e=!1,r=arguments;c(t,function(n){c(l,function(t,r){t!==n||e||(l.splice(r,1),e=!0)}),n.callback.apply(n,r)}),n.tasks.length+f===0&&n.drain(),n.process()}}if(null==e)e=1;else if(0===e)throw new Error(\"Concurrency must not be zero\");var f=0,l=[],s={tasks:[],concurrency:e,payload:r,saturated:n,empty:n,drain:n,started:!1,paused:!1,push:function(n,t){i(s,n,!1,t)},kill:function(){s.drain=n,s.tasks=[]},unshift:function(n,t){i(s,n,!0,t)},process:function(){if(!s.paused&&f<s.concurrency&&s.tasks.length)for(;f<s.concurrency&&s.tasks.length;){var n=s.payload?s.tasks.splice(0,s.payload):s.tasks.splice(0,s.tasks.length),e=a(n,function(n){return n.data});0===s.tasks.length&&s.empty(),f+=1,l.push(n[0]);var r=u(o(s,n));t(e,r)}},length:function(){return s.tasks.length},running:function(){return f},workersList:function(){return l},idle:function(){return s.tasks.length+f===0},pause:function(){s.paused=!0},resume:function(){if(s.paused!==!1){s.paused=!1;for(var n=Math.min(s.concurrency,s.tasks.length),t=1;n>=t;t++)C.setImmediate(s.process)}}};return s}function j(n){return m(function(t,e){t.apply(null,e.concat([m(function(t,e){\"object\"==typeof console&&(t?console.error&&console.error(t):console[n]&&c(e,function(t){console[n](t)}))})]))})}function A(n){return function(t,e,r){n(f(t),e,r)}}function T(n){return m(function(t,e){var r=m(function(e){var r=this,u=e.pop();return n(t,function(n,t,u){n.apply(r,e.concat([u]))},u)});return e.length?r.apply(this,e):r})}function z(n){return m(function(t){var e=t.pop();t.push(function(){var n=arguments;r?C.setImmediate(function(){e.apply(null,n)}):e.apply(null,n)});var r=!0;n.apply(this,t),r=!1})}var q,C={},P=\"object\"==typeof self&&self.self===self&&self||\"object\"==typeof global&&global.global===global&&global||this;null!=P&&(q=P.async),C.noConflict=function(){return P.async=q,C};var H=Object.prototype.toString,M=Array.isArray||function(n){return\"[object Array]\"===H.call(n)},U=function(n){var t=typeof n;return\"function\"===t||\"object\"===t&&!!n},W=Object.keys||function(n){var t=[];for(var e in n)n.hasOwnProperty(e)&&t.push(e);return t},B=\"function\"==typeof setImmediate&&setImmediate,D=B?function(n){B(n)}:function(n){setTimeout(n,0)};\"object\"==typeof process&&\"function\"==typeof process.nextTick?C.nextTick=process.nextTick:C.nextTick=D,C.setImmediate=B?D:C.nextTick,C.forEach=C.each=function(n,t,e){return C.eachOf(n,y(t),e)},C.forEachSeries=C.eachSeries=function(n,t,e){return C.eachOfSeries(n,y(t),e)},C.forEachLimit=C.eachLimit=function(n,t,e,r){return v(t)(n,y(e),r)},C.forEachOf=C.eachOf=function(t,e,r){function o(n){f--,n?r(n):null===c&&0>=f&&r(null)}r=i(r||n),t=t||[];for(var c,a=h(t),f=0;null!=(c=a());)f+=1,e(t[c],c,u(o));0===f&&r(null)},C.forEachOfSeries=C.eachOfSeries=function(t,e,r){function o(){var n=!0;return null===a?r(null):(e(t[a],a,u(function(t){if(t)r(t);else{if(a=c(),null===a)return r(null);n?C.setImmediate(o):o()}})),void(n=!1))}r=i(r||n),t=t||[];var c=h(t),a=c();o()},C.forEachOfLimit=C.eachOfLimit=function(n,t,e,r){v(t)(n,e,r)},C.map=d(b),C.mapSeries=k(b),C.mapLimit=g(b),C.inject=C.foldl=C.reduce=function(n,t,e,r){C.eachOfSeries(n,function(n,r,u){e(t,n,function(n,e){t=e,u(n)})},function(n){r(n,t)})},C.foldr=C.reduceRight=function(n,e,r,u){var i=a(n,t).reverse();C.reduce(i,e,r,u)},C.transform=function(n,t,e,r){3===arguments.length&&(r=e,e=t,t=M(n)?[]:{}),C.eachOf(n,function(n,r,u){e(t,n,r,u)},function(n){r(n,t)})},C.select=C.filter=d(w),C.selectLimit=C.filterLimit=g(w),C.selectSeries=C.filterSeries=k(w),C.reject=d(O),C.rejectLimit=g(O),C.rejectSeries=k(O),C.any=C.some=S(C.eachOf,e,t),C.someLimit=S(C.eachOfLimit,e,t),C.all=C.every=S(C.eachOf,r,r),C.everyLimit=S(C.eachOfLimit,r,r),C.detect=S(C.eachOf,t,E),C.detectSeries=S(C.eachOfSeries,t,E),C.detectLimit=S(C.eachOfLimit,t,E),C.sortBy=function(n,t,e){function r(n,t){var e=n.criteria,r=t.criteria;return r>e?-1:e>r?1:0}C.map(n,function(n,e){t(n,function(t,r){t?e(t):e(null,{value:n,criteria:r})})},function(n,t){return n?e(n):void e(null,a(t.sort(r),function(n){return n.value}))})},C.auto=function(t,e,r){function u(n){d.unshift(n)}function o(n){var t=p(d,n);t>=0&&d.splice(t,1)}function a(){h--,c(d.slice(0),function(n){n()})}r||(r=e,e=null),r=i(r||n);var f=W(t),h=f.length;if(!h)return r(null);e||(e=h);var y={},v=0,d=[];u(function(){h||r(null,y)}),c(f,function(n){function i(){return e>v&&l(g,function(n,t){return n&&y.hasOwnProperty(t)},!0)&&!y.hasOwnProperty(n)}function c(){i()&&(v++,o(c),h[h.length-1](d,y))}for(var f,h=M(t[n])?t[n]:[t[n]],d=m(function(t,e){if(v--,e.length<=1&&(e=e[0]),t){var u={};s(y,function(n,t){u[t]=n}),u[n]=e,r(t,u)}else y[n]=e,C.setImmediate(a)}),g=h.slice(0,h.length-1),k=g.length;k--;){if(!(f=t[g[k]]))throw new Error(\"Has inexistant dependency\");if(M(f)&&p(f,n)>=0)throw new Error(\"Has cyclic dependencies\")}i()?(v++,h[h.length-1](d,y)):u(c)})},C.retry=function(n,t,e){function r(n,t){if(\"number\"==typeof t)n.times=parseInt(t,10)||i;else{if(\"object\"!=typeof t)throw new Error(\"Unsupported argument type for 'times': \"+typeof t);n.times=parseInt(t.times,10)||i,n.interval=parseInt(t.interval,10)||o}}function u(n,t){function e(n,e){return function(r){n(function(n,t){r(!n||e,{err:n,result:t})},t)}}function r(n){return function(t){setTimeout(function(){t(null)},n)}}for(;a.times;){var u=!(a.times-=1);c.push(e(a.task,u)),!u&&a.interval>0&&c.push(r(a.interval))}C.series(c,function(t,e){e=e[e.length-1],(n||a.callback)(e.err,e.result)})}var i=5,o=0,c=[],a={times:i,interval:o},f=arguments.length;if(1>f||f>3)throw new Error(\"Invalid arguments - must be either (task), (task, callback), (times, task) or (times, task, callback)\");return 2>=f&&\"function\"==typeof n&&(e=t,t=n),\"function\"!=typeof n&&r(a,n),a.callback=e,a.task=t,a.callback?u():u},C.waterfall=function(t,e){function r(n){return m(function(t,u){if(t)e.apply(null,[t].concat(u));else{var i=n.next();i?u.push(r(i)):u.push(e),z(n).apply(null,u)}})}if(e=i(e||n),!M(t)){var u=new Error(\"First argument to waterfall must be an array of functions\");return e(u)}return t.length?void r(C.iterator(t))():e()},C.parallel=function(n,t){L(C.eachOf,n,t)},C.parallelLimit=function(n,t,e){L(v(t),n,e)},C.series=function(n,t){L(C.eachOfSeries,n,t)},C.iterator=function(n){function t(e){function r(){return n.length&&n[e].apply(null,arguments),r.next()}return r.next=function(){return e<n.length-1?t(e+1):null},r}return t(0)},C.apply=m(function(n,t){return m(function(e){return n.apply(null,t.concat(e))})}),C.concat=d(I),C.concatSeries=k(I),C.whilst=function(t,e,r){if(r=r||n,t()){var u=m(function(n,i){n?r(n):t.apply(this,i)?e(u):r(null)});e(u)}else r(null)},C.doWhilst=function(n,t,e){var r=0;return C.whilst(function(){return++r<=1||t.apply(this,arguments)},n,e)},C.until=function(n,t,e){return C.whilst(function(){return!n.apply(this,arguments)},t,e)},C.doUntil=function(n,t,e){return C.doWhilst(n,function(){return!t.apply(this,arguments)},e)},C.during=function(t,e,r){r=r||n;var u=m(function(n,e){n?r(n):(e.push(i),t.apply(this,e))}),i=function(n,t){n?r(n):t?e(u):r(null)};t(i)},C.doDuring=function(n,t,e){var r=0;C.during(function(n){r++<1?n(null,!0):t.apply(this,arguments)},n,e)},C.queue=function(n,t){var e=x(function(t,e){n(t[0],e)},t,1);return e},C.priorityQueue=function(t,e){function r(n,t){return n.priority-t.priority}function u(n,t,e){for(var r=-1,u=n.length-1;u>r;){var i=r+(u-r+1>>>1);e(t,n[i])>=0?r=i:u=i-1}return r}function i(t,e,i,o){if(null!=o&&\"function\"!=typeof o)throw new Error(\"task callback must be a function\");return t.started=!0,M(e)||(e=[e]),0===e.length?C.setImmediate(function(){t.drain()}):void c(e,function(e){var c={data:e,priority:i,callback:\"function\"==typeof o?o:n};t.tasks.splice(u(t.tasks,c,r)+1,0,c),t.tasks.length===t.concurrency&&t.saturated(),C.setImmediate(t.process)})}var o=C.queue(t,e);return o.push=function(n,t,e){i(o,n,t,e)},delete o.unshift,o},C.cargo=function(n,t){return x(n,1,t)},C.log=j(\"log\"),C.dir=j(\"dir\"),C.memoize=function(n,e){var r={},u={};e=e||t;var i=m(function(t){var i=t.pop(),o=e.apply(null,t);o in r?C.setImmediate(function(){i.apply(null,r[o])}):o in u?u[o].push(i):(u[o]=[i],n.apply(null,t.concat([m(function(n){r[o]=n;var t=u[o];delete u[o];for(var e=0,i=t.length;i>e;e++)t[e].apply(null,n)})])))});return i.memo=r,i.unmemoized=n,i},C.unmemoize=function(n){return function(){return(n.unmemoized||n).apply(null,arguments)}},C.times=A(C.map),C.timesSeries=A(C.mapSeries),C.timesLimit=function(n,t,e,r){return C.mapLimit(f(n),t,e,r)},C.seq=function(){var t=arguments;return m(function(e){var r=this,u=e[e.length-1];\"function\"==typeof u?e.pop():u=n,C.reduce(t,e,function(n,t,e){t.apply(r,n.concat([m(function(n,t){e(n,t)})]))},function(n,t){u.apply(r,[n].concat(t))})})},C.compose=function(){return C.seq.apply(null,Array.prototype.reverse.call(arguments))},C.applyEach=T(C.eachOf),C.applyEachSeries=T(C.eachOfSeries),C.forever=function(t,e){function r(n){return n?i(n):void o(r)}var i=u(e||n),o=z(t);r()},C.ensureAsync=z,C.constant=m(function(n){var t=[null].concat(n);return function(n){return n.apply(this,t)}}),C.wrapSync=C.asyncify=function(n){return m(function(t){var e,r=t.pop();try{e=n.apply(this,t)}catch(u){return r(u)}U(e)&&\"function\"==typeof e.then?e.then(function(n){r(null,n)})[\"catch\"](function(n){r(n.message?n:new Error(n))}):r(null,e)})},\"object\"==typeof module&&module.exports?module.exports=C:\"function\"==typeof define&&define.amd?define([],function(){return C}):P.async=C}();\n//# sourceMappingURL=dist/async.min.map",
            "type": "application/javascript",
            "title": "$:/plugins/tiddlywiki/async/async.js",
            "module-type": "library"
        },
        "$:/plugins/tiddlywiki/async/license": {
            "text": "Copyright (c) 2010-2014 Caolan McMahon\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE.\n",
            "type": "text/plain",
            "title": "$:/plugins/tiddlywiki/async/license"
        },
        "$:/plugins/tiddlywiki/async/readme": {
            "title": "$:/plugins/tiddlywiki/async/readme",
            "text": "This plugin packages [[async.js|https://github.com/caolan/async]] for use by other plugins. It does not provide any end-user visible features.\n"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/tiddlywiki/googleanalytics/googleanalytics.js": {
            "title": "$:/plugins/tiddlywiki/googleanalytics/googleanalytics.js",
            "text": "/*\\\ntitle: $:/plugins/tiddlywiki/googleanalytics/googleanalytics.js\ntype: application/javascript\nmodule-type: startup\n\nRuns Google Analytics with the account number in the tiddler `$:/GoogleAnalyticsAccount` and the domain name in `$:/GoogleAnalyticsDomain`\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\n// Export name and synchronous status\nexports.name = \"google-analytics\";\nexports.platforms = [\"browser\"];\nexports.synchronous = true;\n\nexports.startup = function() {\n\t// getting parameters\n\tvar GA_ACCOUNT = $tw.wiki.getTiddlerText(\"$:/GoogleAnalyticsAccount\",\"\").replace(/\\n/g,\"\"),\n\t\tGA_DOMAIN = $tw.wiki.getTiddlerText(\"$:/GoogleAnalyticsDomain\",\"\").replace(/\\n/g,\"\");\n\tif (GA_DOMAIN == \"\" || GA_DOMAIN == undefined) GA_DOMAIN = \"auto\";\n\n\t// using ga \"isogram\" function\n  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)\n  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');\n\n  ga('create', GA_ACCOUNT, GA_DOMAIN);\n  ga('send', 'pageview');\n};\n\n})();\n",
            "type": "application/javascript",
            "module-type": "startup"
        },
        "$:/plugins/tiddlywiki/googleanalytics/readme": {
            "title": "$:/plugins/tiddlywiki/googleanalytics/readme",
            "text": "This plugin enables you to use Google Analytics to track access to your online TiddlyWiki document. Based upon the [[official Google code|https://developers.google.com/analytics/devguides/collection/analyticsjs]].\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/googleanalytics]]\n"
        },
        "$:/plugins/tiddlywiki/googleanalytics/settings": {
            "title": "$:/plugins/tiddlywiki/googleanalytics/settings",
            "text": "You have only two value to set, only first is mandatory:\n\n# ''[[Google Analytics Account|$:/GoogleAnalyticsAccount]]'': (mandatory) a code of the form `UA-XXXXXX-XX` where X are digits<br/><$edit-text tiddler=\"$:/GoogleAnalyticsAccount\" default=\"\" tag=\"input\"/>\n\n# ''[[Google Analytics Domain|$:/GoogleAnalyticsDomain]]'': (optional) the website URL where the TiddlyWiki file is published. Defaults to `auto` if not set.<br/><$edit-text tiddler=\"$:/GoogleAnalyticsDomain\" default=\"\" tag=\"input\"/>\n"
        },
        "$:/plugins/tiddlywiki/googleanalytics/usage": {
            "title": "$:/plugins/tiddlywiki/googleanalytics/usage",
            "text": "!! Create a Google Analytics account\n\nIf you don't already have an account:\n\n# Go to the Google Analytics website: http://www.google.com/analytics/\n# Click the ''Access Google Analytics'' button and follow instructions to set up your account\n# Enter the URL where the wiki is hosted\n# Note the Tracking ID for this domain of the form `UA-XXXXXX-XX`\n\n!! Install the plugin on your local copy of the TiddlyWiki\n\n# ''Backup your TiddlyWiki''. Just in case\n# Install the plugin via the plugin manager in control panel\n# Save the TiddlyWiki andrefresh the page to load the plugin\n# Go to [[$:/ControlPanel]] > Plugins tab and unfold the Google Analytics Plugin\n# Go to the //settings// tab and edit the parameters\n# Save the TiddlyWiki\n\n!! Upload the new version of your TiddlyWiki\n\n# Upload the saved TiddlyWiki to TiddlySpot, GitHub, GitLab or other web host\n# Return to your Google Analytics page to check that your site is being tracked\n"
        }
    }
}
{
    "tiddlers": {
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/bold": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/bold",
            "list-after": "$:/core/ui/EditorToolbar/bold",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/bold",
            "caption": "{{$:/language/Buttons/Bold/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Bold/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((bold))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"**\"\n\tsuffix=\"**\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-1": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-1",
            "list-after": "$:/core/ui/EditorToolbar/heading-1",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-1",
            "caption": "{{$:/language/Buttons/Heading1/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading1/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-1))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-2": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-2",
            "list-after": "$:/core/ui/EditorToolbar/heading-2",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-2",
            "caption": "{{$:/language/Buttons/Heading2/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading2/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-2))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"2\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-3": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-3",
            "list-after": "$:/core/ui/EditorToolbar/heading-3",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-3",
            "caption": "{{$:/language/Buttons/Heading3/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading3/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-3))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"3\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-4": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-4",
            "list-after": "$:/core/ui/EditorToolbar/heading-4",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-4",
            "caption": "{{$:/language/Buttons/Heading4/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading4/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-4))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"4\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-5": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-5",
            "list-after": "$:/core/ui/EditorToolbar/heading-5",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-5",
            "caption": "{{$:/language/Buttons/Heading5/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading5/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-5))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"5\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-6": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/heading-6",
            "list-after": "$:/core/ui/EditorToolbar/heading-6",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/heading-6",
            "caption": "{{$:/language/Buttons/Heading6/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Heading6/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((heading-6))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"#\"\n\tcount=\"6\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/italic": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/italic",
            "list-after": "$:/core/ui/EditorToolbar/italic",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/italic",
            "caption": "{{$:/language/Buttons/Italic/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Italic/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((italic))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"*\"\n\tsuffix=\"*\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/list-bullet": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/list-bullet",
            "list-after": "$:/core/ui/EditorToolbar/list-bullet",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-bullet",
            "caption": "{{$:/language/Buttons/ListBullet/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/ListBullet/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((list-bullet))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"*\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/list-number": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/list-number",
            "list-after": "$:/core/ui/EditorToolbar/list-number",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/list-number",
            "caption": "{{$:/language/Buttons/ListNumber/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/ListNumber/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((list-number))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\"1.\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-line": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/mono-line",
            "list-after": "$:/core/ui/EditorToolbar/mono-line",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/mono-line",
            "caption": "{{$:/language/Buttons/MonoLine/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/MonoLine/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((mono-line))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"wrap-selection\"\n\tprefix=\"`\"\n\tsuffix=\"`\"\n/>\n"
        },
        "$:/plugins/tiddlywiki/markdown/EditorToolbar/quote": {
            "title": "$:/plugins/tiddlywiki/markdown/EditorToolbar/quote",
            "list-after": "$:/core/ui/EditorToolbar/quote",
            "tags": "$:/tags/EditorToolbar",
            "icon": "$:/core/images/quote",
            "caption": "{{$:/language/Buttons/Quote/Caption}} (Markdown)",
            "description": "{{$:/language/Buttons/Quote/Hint}}",
            "condition": "[<targetTiddler>type[text/x-markdown]]",
            "shortcuts": "((quote))",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"prefix-lines\"\n\tcharacter=\">\"\n\tcount=\"1\"\n/>\n"
        },
        "$:/config/markdown/breaks": {
            "title": "$:/config/markdown/breaks",
            "text": "false"
        },
        "$:/config/markdown/linkNewWindow": {
            "title": "$:/config/markdown/linkNewWindow",
            "text": "true"
        },
        "$:/config/markdown/linkify": {
            "title": "$:/config/markdown/linkify",
            "text": "false"
        },
        "$:/config/markdown/quotes": {
            "title": "$:/config/markdown/quotes",
            "text": "“”‘’"
        },
        "$:/config/markdown/renderWikiText": {
            "title": "$:/config/markdown/renderWikiText",
            "text": "true"
        },
        "$:/config/markdown/renderWikiTextPragma": {
            "title": "$:/config/markdown/renderWikiTextPragma",
            "text": "\\rules only html image macrocallinline syslink transcludeinline wikilink filteredtranscludeblock macrocallblock transcludeblock"
        },
        "$:/config/markdown/typographer": {
            "title": "$:/config/markdown/typographer",
            "text": "false"
        },
        "$:/language/Docs/Types/text/x-markdown": {
            "title": "$:/language/Docs/Types/text/x-markdown",
            "description": "Markdown",
            "name": "text/x-markdown",
            "group": "Text"
        },
        "$:/plugins/tiddlywiki/markdown/remarkable.js": {
            "text": "!function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?t(exports):\"function\"==typeof define&&define.amd?define([\"exports\"],t):t((e=e||self).remarkable={})}(this,function(e){\"use strict\";var t={Aacute:\"Á\",aacute:\"á\",Abreve:\"Ă\",abreve:\"ă\",ac:\"∾\",acd:\"∿\",acE:\"∾̳\",Acirc:\"Â\",acirc:\"â\",acute:\"´\",Acy:\"А\",acy:\"а\",AElig:\"Æ\",aelig:\"æ\",af:\"⁡\",Afr:\"������\",afr:\"������\",Agrave:\"À\",agrave:\"à\",alefsym:\"ℵ\",aleph:\"ℵ\",Alpha:\"Α\",alpha:\"α\",Amacr:\"Ā\",amacr:\"ā\",amalg:\"⨿\",AMP:\"&\",amp:\"&\",And:\"⩓\",and:\"∧\",andand:\"⩕\",andd:\"⩜\",andslope:\"⩘\",andv:\"⩚\",ang:\"∠\",ange:\"⦤\",angle:\"∠\",angmsd:\"∡\",angmsdaa:\"⦨\",angmsdab:\"⦩\",angmsdac:\"⦪\",angmsdad:\"⦫\",angmsdae:\"⦬\",angmsdaf:\"⦭\",angmsdag:\"⦮\",angmsdah:\"⦯\",angrt:\"∟\",angrtvb:\"⊾\",angrtvbd:\"⦝\",angsph:\"∢\",angst:\"Å\",angzarr:\"⍼\",Aogon:\"Ą\",aogon:\"ą\",Aopf:\"������\",aopf:\"������\",ap:\"≈\",apacir:\"⩯\",apE:\"⩰\",ape:\"≊\",apid:\"≋\",apos:\"'\",ApplyFunction:\"⁡\",approx:\"≈\",approxeq:\"≊\",Aring:\"Å\",aring:\"å\",Ascr:\"������\",ascr:\"������\",Assign:\"≔\",ast:\"*\",asymp:\"≈\",asympeq:\"≍\",Atilde:\"Ã\",atilde:\"ã\",Auml:\"Ä\",auml:\"ä\",awconint:\"∳\",awint:\"⨑\",backcong:\"≌\",backepsilon:\"϶\",backprime:\"‵\",backsim:\"∽\",backsimeq:\"⋍\",Backslash:\"∖\",Barv:\"⫧\",barvee:\"⊽\",Barwed:\"⌆\",barwed:\"⌅\",barwedge:\"⌅\",bbrk:\"⎵\",bbrktbrk:\"⎶\",bcong:\"≌\",Bcy:\"Б\",bcy:\"б\",bdquo:\"„\",becaus:\"∵\",Because:\"∵\",because:\"∵\",bemptyv:\"⦰\",bepsi:\"϶\",bernou:\"ℬ\",Bernoullis:\"ℬ\",Beta:\"Β\",beta:\"β\",beth:\"ℶ\",between:\"≬\",Bfr:\"������\",bfr:\"������\",bigcap:\"⋂\",bigcirc:\"◯\",bigcup:\"⋃\",bigodot:\"⨀\",bigoplus:\"⨁\",bigotimes:\"⨂\",bigsqcup:\"⨆\",bigstar:\"★\",bigtriangledown:\"▽\",bigtriangleup:\"△\",biguplus:\"⨄\",bigvee:\"⋁\",bigwedge:\"⋀\",bkarow:\"⤍\",blacklozenge:\"⧫\",blacksquare:\"▪\",blacktriangle:\"▴\",blacktriangledown:\"▾\",blacktriangleleft:\"◂\",blacktriangleright:\"▸\",blank:\"␣\",blk12:\"▒\",blk14:\"░\",blk34:\"▓\",block:\"█\",bne:\"=⃥\",bnequiv:\"≡⃥\",bNot:\"⫭\",bnot:\"⌐\",Bopf:\"������\",bopf:\"������\",bot:\"⊥\",bottom:\"⊥\",bowtie:\"⋈\",boxbox:\"⧉\",boxDL:\"╗\",boxDl:\"╖\",boxdL:\"╕\",boxdl:\"┐\",boxDR:\"╔\",boxDr:\"╓\",boxdR:\"╒\",boxdr:\"┌\",boxH:\"═\",boxh:\"─\",boxHD:\"╦\",boxHd:\"╤\",boxhD:\"╥\",boxhd:\"┬\",boxHU:\"╩\",boxHu:\"╧\",boxhU:\"╨\",boxhu:\"┴\",boxminus:\"⊟\",boxplus:\"⊞\",boxtimes:\"⊠\",boxUL:\"╝\",boxUl:\"╜\",boxuL:\"╛\",boxul:\"┘\",boxUR:\"╚\",boxUr:\"╙\",boxuR:\"╘\",boxur:\"└\",boxV:\"║\",boxv:\"│\",boxVH:\"╬\",boxVh:\"╫\",boxvH:\"╪\",boxvh:\"┼\",boxVL:\"╣\",boxVl:\"╢\",boxvL:\"╡\",boxvl:\"┤\",boxVR:\"╠\",boxVr:\"╟\",boxvR:\"╞\",boxvr:\"├\",bprime:\"‵\",Breve:\"˘\",breve:\"˘\",brvbar:\"¦\",Bscr:\"ℬ\",bscr:\"������\",bsemi:\"⁏\",bsim:\"∽\",bsime:\"⋍\",bsol:\"\\\\\",bsolb:\"⧅\",bsolhsub:\"⟈\",bull:\"•\",bullet:\"•\",bump:\"≎\",bumpE:\"⪮\",bumpe:\"≏\",Bumpeq:\"≎\",bumpeq:\"≏\",Cacute:\"Ć\",cacute:\"ć\",Cap:\"⋒\",cap:\"∩\",capand:\"⩄\",capbrcup:\"⩉\",capcap:\"⩋\",capcup:\"⩇\",capdot:\"⩀\",CapitalDifferentialD:\"ⅅ\",caps:\"∩︀\",caret:\"⁁\",caron:\"ˇ\",Cayleys:\"ℭ\",ccaps:\"⩍\",Ccaron:\"Č\",ccaron:\"č\",Ccedil:\"Ç\",ccedil:\"ç\",Ccirc:\"Ĉ\",ccirc:\"ĉ\",Cconint:\"∰\",ccups:\"⩌\",ccupssm:\"⩐\",Cdot:\"Ċ\",cdot:\"ċ\",cedil:\"¸\",Cedilla:\"¸\",cemptyv:\"⦲\",cent:\"¢\",CenterDot:\"·\",centerdot:\"·\",Cfr:\"ℭ\",cfr:\"������\",CHcy:\"Ч\",chcy:\"ч\",check:\"✓\",checkmark:\"✓\",Chi:\"Χ\",chi:\"χ\",cir:\"○\",circ:\"ˆ\",circeq:\"≗\",circlearrowleft:\"↺\",circlearrowright:\"↻\",circledast:\"⊛\",circledcirc:\"⊚\",circleddash:\"⊝\",CircleDot:\"⊙\",circledR:\"®\",circledS:\"Ⓢ\",CircleMinus:\"⊖\",CirclePlus:\"⊕\",CircleTimes:\"⊗\",cirE:\"⧃\",cire:\"≗\",cirfnint:\"⨐\",cirmid:\"⫯\",cirscir:\"⧂\",ClockwiseContourIntegral:\"∲\",CloseCurlyDoubleQuote:\"”\",CloseCurlyQuote:\"’\",clubs:\"♣\",clubsuit:\"♣\",Colon:\"∷\",colon:\":\",Colone:\"⩴\",colone:\"≔\",coloneq:\"≔\",comma:\",\",commat:\"@\",comp:\"∁\",compfn:\"∘\",complement:\"∁\",complexes:\"ℂ\",cong:\"≅\",congdot:\"⩭\",Congruent:\"≡\",Conint:\"∯\",conint:\"∮\",ContourIntegral:\"∮\",Copf:\"ℂ\",copf:\"������\",coprod:\"∐\",Coproduct:\"∐\",COPY:\"©\",copy:\"©\",copysr:\"℗\",CounterClockwiseContourIntegral:\"∳\",crarr:\"↵\",Cross:\"⨯\",cross:\"✗\",Cscr:\"������\",cscr:\"������\",csub:\"⫏\",csube:\"⫑\",csup:\"⫐\",csupe:\"⫒\",ctdot:\"⋯\",cudarrl:\"⤸\",cudarrr:\"⤵\",cuepr:\"⋞\",cuesc:\"⋟\",cularr:\"↶\",cularrp:\"⤽\",Cup:\"⋓\",cup:\"∪\",cupbrcap:\"⩈\",CupCap:\"≍\",cupcap:\"⩆\",cupcup:\"⩊\",cupdot:\"⊍\",cupor:\"⩅\",cups:\"∪︀\",curarr:\"↷\",curarrm:\"⤼\",curlyeqprec:\"⋞\",curlyeqsucc:\"⋟\",curlyvee:\"⋎\",curlywedge:\"⋏\",curren:\"¤\",curvearrowleft:\"↶\",curvearrowright:\"↷\",cuvee:\"⋎\",cuwed:\"⋏\",cwconint:\"∲\",cwint:\"∱\",cylcty:\"⌭\",Dagger:\"‡\",dagger:\"†\",daleth:\"ℸ\",Darr:\"↡\",dArr:\"⇓\",darr:\"↓\",dash:\"‐\",Dashv:\"⫤\",dashv:\"⊣\",dbkarow:\"⤏\",dblac:\"˝\",Dcaron:\"Ď\",dcaron:\"ď\",Dcy:\"Д\",dcy:\"д\",DD:\"ⅅ\",dd:\"ⅆ\",ddagger:\"‡\",ddarr:\"⇊\",DDotrahd:\"⤑\",ddotseq:\"⩷\",deg:\"°\",Del:\"∇\",Delta:\"Δ\",delta:\"δ\",demptyv:\"⦱\",dfisht:\"⥿\",Dfr:\"������\",dfr:\"������\",dHar:\"⥥\",dharl:\"⇃\",dharr:\"⇂\",DiacriticalAcute:\"´\",DiacriticalDot:\"˙\",DiacriticalDoubleAcute:\"˝\",DiacriticalGrave:\"`\",DiacriticalTilde:\"˜\",diam:\"⋄\",Diamond:\"⋄\",diamond:\"⋄\",diamondsuit:\"♦\",diams:\"♦\",die:\"¨\",DifferentialD:\"ⅆ\",digamma:\"ϝ\",disin:\"⋲\",div:\"÷\",divide:\"÷\",divideontimes:\"⋇\",divonx:\"⋇\",DJcy:\"Ђ\",djcy:\"ђ\",dlcorn:\"⌞\",dlcrop:\"⌍\",dollar:\"$\",Dopf:\"������\",dopf:\"������\",Dot:\"¨\",dot:\"˙\",DotDot:\"⃜\",doteq:\"≐\",doteqdot:\"≑\",DotEqual:\"≐\",dotminus:\"∸\",dotplus:\"∔\",dotsquare:\"⊡\",doublebarwedge:\"⌆\",DoubleContourIntegral:\"∯\",DoubleDot:\"¨\",DoubleDownArrow:\"⇓\",DoubleLeftArrow:\"⇐\",DoubleLeftRightArrow:\"⇔\",DoubleLeftTee:\"⫤\",DoubleLongLeftArrow:\"⟸\",DoubleLongLeftRightArrow:\"⟺\",DoubleLongRightArrow:\"⟹\",DoubleRightArrow:\"⇒\",DoubleRightTee:\"⊨\",DoubleUpArrow:\"⇑\",DoubleUpDownArrow:\"⇕\",DoubleVerticalBar:\"∥\",DownArrow:\"↓\",Downarrow:\"⇓\",downarrow:\"↓\",DownArrowBar:\"⤓\",DownArrowUpArrow:\"⇵\",DownBreve:\"̑\",downdownarrows:\"⇊\",downharpoonleft:\"⇃\",downharpoonright:\"⇂\",DownLeftRightVector:\"⥐\",DownLeftTeeVector:\"⥞\",DownLeftVector:\"↽\",DownLeftVectorBar:\"⥖\",DownRightTeeVector:\"⥟\",DownRightVector:\"⇁\",DownRightVectorBar:\"⥗\",DownTee:\"⊤\",DownTeeArrow:\"↧\",drbkarow:\"⤐\",drcorn:\"⌟\",drcrop:\"⌌\",Dscr:\"������\",dscr:\"������\",DScy:\"Ѕ\",dscy:\"ѕ\",dsol:\"⧶\",Dstrok:\"Đ\",dstrok:\"đ\",dtdot:\"⋱\",dtri:\"▿\",dtrif:\"▾\",duarr:\"⇵\",duhar:\"⥯\",dwangle:\"⦦\",DZcy:\"Џ\",dzcy:\"џ\",dzigrarr:\"⟿\",Eacute:\"É\",eacute:\"é\",easter:\"⩮\",Ecaron:\"Ě\",ecaron:\"ě\",ecir:\"≖\",Ecirc:\"Ê\",ecirc:\"ê\",ecolon:\"≕\",Ecy:\"Э\",ecy:\"э\",eDDot:\"⩷\",Edot:\"Ė\",eDot:\"≑\",edot:\"ė\",ee:\"ⅇ\",efDot:\"≒\",Efr:\"������\",efr:\"������\",eg:\"⪚\",Egrave:\"È\",egrave:\"è\",egs:\"⪖\",egsdot:\"⪘\",el:\"⪙\",Element:\"∈\",elinters:\"⏧\",ell:\"ℓ\",els:\"⪕\",elsdot:\"⪗\",Emacr:\"Ē\",emacr:\"ē\",empty:\"∅\",emptyset:\"∅\",EmptySmallSquare:\"◻\",emptyv:\"∅\",EmptyVerySmallSquare:\"▫\",emsp:\" \",emsp13:\" \",emsp14:\" \",ENG:\"Ŋ\",eng:\"ŋ\",ensp:\" \",Eogon:\"Ę\",eogon:\"ę\",Eopf:\"������\",eopf:\"������\",epar:\"⋕\",eparsl:\"⧣\",eplus:\"⩱\",epsi:\"ε\",Epsilon:\"Ε\",epsilon:\"ε\",epsiv:\"ϵ\",eqcirc:\"≖\",eqcolon:\"≕\",eqsim:\"≂\",eqslantgtr:\"⪖\",eqslantless:\"⪕\",Equal:\"⩵\",equals:\"=\",EqualTilde:\"≂\",equest:\"≟\",Equilibrium:\"⇌\",equiv:\"≡\",equivDD:\"⩸\",eqvparsl:\"⧥\",erarr:\"⥱\",erDot:\"≓\",Escr:\"ℰ\",escr:\"ℯ\",esdot:\"≐\",Esim:\"⩳\",esim:\"≂\",Eta:\"Η\",eta:\"η\",ETH:\"Ð\",eth:\"ð\",Euml:\"Ë\",euml:\"ë\",euro:\"€\",excl:\"!\",exist:\"∃\",Exists:\"∃\",expectation:\"ℰ\",ExponentialE:\"ⅇ\",exponentiale:\"ⅇ\",fallingdotseq:\"≒\",Fcy:\"Ф\",fcy:\"ф\",female:\"♀\",ffilig:\"ffi\",fflig:\"ff\",ffllig:\"ffl\",Ffr:\"������\",ffr:\"������\",filig:\"fi\",FilledSmallSquare:\"◼\",FilledVerySmallSquare:\"▪\",fjlig:\"fj\",flat:\"♭\",fllig:\"fl\",fltns:\"▱\",fnof:\"ƒ\",Fopf:\"������\",fopf:\"������\",ForAll:\"∀\",forall:\"∀\",fork:\"⋔\",forkv:\"⫙\",Fouriertrf:\"ℱ\",fpartint:\"⨍\",frac12:\"½\",frac13:\"⅓\",frac14:\"¼\",frac15:\"⅕\",frac16:\"⅙\",frac18:\"⅛\",frac23:\"⅔\",frac25:\"⅖\",frac34:\"¾\",frac35:\"⅗\",frac38:\"⅜\",frac45:\"⅘\",frac56:\"⅚\",frac58:\"⅝\",frac78:\"⅞\",frasl:\"⁄\",frown:\"⌢\",Fscr:\"ℱ\",fscr:\"������\",gacute:\"ǵ\",Gamma:\"Γ\",gamma:\"γ\",Gammad:\"Ϝ\",gammad:\"ϝ\",gap:\"⪆\",Gbreve:\"Ğ\",gbreve:\"ğ\",Gcedil:\"Ģ\",Gcirc:\"Ĝ\",gcirc:\"ĝ\",Gcy:\"Г\",gcy:\"г\",Gdot:\"Ġ\",gdot:\"ġ\",gE:\"≧\",ge:\"≥\",gEl:\"⪌\",gel:\"⋛\",geq:\"≥\",geqq:\"≧\",geqslant:\"⩾\",ges:\"⩾\",gescc:\"⪩\",gesdot:\"⪀\",gesdoto:\"⪂\",gesdotol:\"⪄\",gesl:\"⋛︀\",gesles:\"⪔\",Gfr:\"������\",gfr:\"������\",Gg:\"⋙\",gg:\"≫\",ggg:\"⋙\",gimel:\"ℷ\",GJcy:\"Ѓ\",gjcy:\"ѓ\",gl:\"≷\",gla:\"⪥\",glE:\"⪒\",glj:\"⪤\",gnap:\"⪊\",gnapprox:\"⪊\",gnE:\"≩\",gne:\"⪈\",gneq:\"⪈\",gneqq:\"≩\",gnsim:\"⋧\",Gopf:\"������\",gopf:\"������\",grave:\"`\",GreaterEqual:\"≥\",GreaterEqualLess:\"⋛\",GreaterFullEqual:\"≧\",GreaterGreater:\"⪢\",GreaterLess:\"≷\",GreaterSlantEqual:\"⩾\",GreaterTilde:\"≳\",Gscr:\"������\",gscr:\"ℊ\",gsim:\"≳\",gsime:\"⪎\",gsiml:\"⪐\",GT:\">\",Gt:\"≫\",gt:\">\",gtcc:\"⪧\",gtcir:\"⩺\",gtdot:\"⋗\",gtlPar:\"⦕\",gtquest:\"⩼\",gtrapprox:\"⪆\",gtrarr:\"⥸\",gtrdot:\"⋗\",gtreqless:\"⋛\",gtreqqless:\"⪌\",gtrless:\"≷\",gtrsim:\"≳\",gvertneqq:\"≩︀\",gvnE:\"≩︀\",Hacek:\"ˇ\",hairsp:\" \",half:\"½\",hamilt:\"ℋ\",HARDcy:\"Ъ\",hardcy:\"ъ\",hArr:\"⇔\",harr:\"↔\",harrcir:\"⥈\",harrw:\"↭\",Hat:\"^\",hbar:\"ℏ\",Hcirc:\"Ĥ\",hcirc:\"ĥ\",hearts:\"♥\",heartsuit:\"♥\",hellip:\"…\",hercon:\"⊹\",Hfr:\"ℌ\",hfr:\"������\",HilbertSpace:\"ℋ\",hksearow:\"⤥\",hkswarow:\"⤦\",hoarr:\"⇿\",homtht:\"∻\",hookleftarrow:\"↩\",hookrightarrow:\"↪\",Hopf:\"ℍ\",hopf:\"������\",horbar:\"―\",HorizontalLine:\"─\",Hscr:\"ℋ\",hscr:\"������\",hslash:\"ℏ\",Hstrok:\"Ħ\",hstrok:\"ħ\",HumpDownHump:\"≎\",HumpEqual:\"≏\",hybull:\"⁃\",hyphen:\"‐\",Iacute:\"Í\",iacute:\"í\",ic:\"⁣\",Icirc:\"Î\",icirc:\"î\",Icy:\"И\",icy:\"и\",Idot:\"İ\",IEcy:\"Е\",iecy:\"е\",iexcl:\"¡\",iff:\"⇔\",Ifr:\"ℑ\",ifr:\"������\",Igrave:\"Ì\",igrave:\"ì\",ii:\"ⅈ\",iiiint:\"⨌\",iiint:\"∭\",iinfin:\"⧜\",iiota:\"℩\",IJlig:\"IJ\",ijlig:\"ij\",Im:\"ℑ\",Imacr:\"Ī\",imacr:\"ī\",image:\"ℑ\",ImaginaryI:\"ⅈ\",imagline:\"ℐ\",imagpart:\"ℑ\",imath:\"ı\",imof:\"⊷\",imped:\"Ƶ\",Implies:\"⇒\",in:\"∈\",incare:\"℅\",infin:\"∞\",infintie:\"⧝\",inodot:\"ı\",Int:\"∬\",int:\"∫\",intcal:\"⊺\",integers:\"ℤ\",Integral:\"∫\",intercal:\"⊺\",Intersection:\"⋂\",intlarhk:\"⨗\",intprod:\"⨼\",InvisibleComma:\"⁣\",InvisibleTimes:\"⁢\",IOcy:\"Ё\",iocy:\"ё\",Iogon:\"Į\",iogon:\"į\",Iopf:\"������\",iopf:\"������\",Iota:\"Ι\",iota:\"ι\",iprod:\"⨼\",iquest:\"¿\",Iscr:\"ℐ\",iscr:\"������\",isin:\"∈\",isindot:\"⋵\",isinE:\"⋹\",isins:\"⋴\",isinsv:\"⋳\",isinv:\"∈\",it:\"⁢\",Itilde:\"Ĩ\",itilde:\"ĩ\",Iukcy:\"І\",iukcy:\"і\",Iuml:\"Ï\",iuml:\"ï\",Jcirc:\"Ĵ\",jcirc:\"ĵ\",Jcy:\"Й\",jcy:\"й\",Jfr:\"������\",jfr:\"������\",jmath:\"ȷ\",Jopf:\"������\",jopf:\"������\",Jscr:\"������\",jscr:\"������\",Jsercy:\"Ј\",jsercy:\"ј\",Jukcy:\"Є\",jukcy:\"є\",Kappa:\"Κ\",kappa:\"κ\",kappav:\"ϰ\",Kcedil:\"Ķ\",kcedil:\"ķ\",Kcy:\"К\",kcy:\"к\",Kfr:\"������\",kfr:\"������\",kgreen:\"ĸ\",KHcy:\"Х\",khcy:\"х\",KJcy:\"Ќ\",kjcy:\"ќ\",Kopf:\"������\",kopf:\"������\",Kscr:\"������\",kscr:\"������\",lAarr:\"⇚\",Lacute:\"Ĺ\",lacute:\"ĺ\",laemptyv:\"⦴\",lagran:\"ℒ\",Lambda:\"Λ\",lambda:\"λ\",Lang:\"⟪\",lang:\"⟨\",langd:\"⦑\",langle:\"⟨\",lap:\"⪅\",Laplacetrf:\"ℒ\",laquo:\"«\",Larr:\"↞\",lArr:\"⇐\",larr:\"←\",larrb:\"⇤\",larrbfs:\"⤟\",larrfs:\"⤝\",larrhk:\"↩\",larrlp:\"↫\",larrpl:\"⤹\",larrsim:\"⥳\",larrtl:\"↢\",lat:\"⪫\",lAtail:\"⤛\",latail:\"⤙\",late:\"⪭\",lates:\"⪭︀\",lBarr:\"⤎\",lbarr:\"⤌\",lbbrk:\"❲\",lbrace:\"{\",lbrack:\"[\",lbrke:\"⦋\",lbrksld:\"⦏\",lbrkslu:\"⦍\",Lcaron:\"Ľ\",lcaron:\"ľ\",Lcedil:\"Ļ\",lcedil:\"ļ\",lceil:\"⌈\",lcub:\"{\",Lcy:\"Л\",lcy:\"л\",ldca:\"⤶\",ldquo:\"“\",ldquor:\"„\",ldrdhar:\"⥧\",ldrushar:\"⥋\",ldsh:\"↲\",lE:\"≦\",le:\"≤\",LeftAngleBracket:\"⟨\",LeftArrow:\"←\",Leftarrow:\"⇐\",leftarrow:\"←\",LeftArrowBar:\"⇤\",LeftArrowRightArrow:\"⇆\",leftarrowtail:\"↢\",LeftCeiling:\"⌈\",LeftDoubleBracket:\"⟦\",LeftDownTeeVector:\"⥡\",LeftDownVector:\"⇃\",LeftDownVectorBar:\"⥙\",LeftFloor:\"⌊\",leftharpoondown:\"↽\",leftharpoonup:\"↼\",leftleftarrows:\"⇇\",LeftRightArrow:\"↔\",Leftrightarrow:\"⇔\",leftrightarrow:\"↔\",leftrightarrows:\"⇆\",leftrightharpoons:\"⇋\",leftrightsquigarrow:\"↭\",LeftRightVector:\"⥎\",LeftTee:\"⊣\",LeftTeeArrow:\"↤\",LeftTeeVector:\"⥚\",leftthreetimes:\"⋋\",LeftTriangle:\"⊲\",LeftTriangleBar:\"⧏\",LeftTriangleEqual:\"⊴\",LeftUpDownVector:\"⥑\",LeftUpTeeVector:\"⥠\",LeftUpVector:\"↿\",LeftUpVectorBar:\"⥘\",LeftVector:\"↼\",LeftVectorBar:\"⥒\",lEg:\"⪋\",leg:\"⋚\",leq:\"≤\",leqq:\"≦\",leqslant:\"⩽\",les:\"⩽\",lescc:\"⪨\",lesdot:\"⩿\",lesdoto:\"⪁\",lesdotor:\"⪃\",lesg:\"⋚︀\",lesges:\"⪓\",lessapprox:\"⪅\",lessdot:\"⋖\",lesseqgtr:\"⋚\",lesseqqgtr:\"⪋\",LessEqualGreater:\"⋚\",LessFullEqual:\"≦\",LessGreater:\"≶\",lessgtr:\"≶\",LessLess:\"⪡\",lesssim:\"≲\",LessSlantEqual:\"⩽\",LessTilde:\"≲\",lfisht:\"⥼\",lfloor:\"⌊\",Lfr:\"������\",lfr:\"������\",lg:\"≶\",lgE:\"⪑\",lHar:\"⥢\",lhard:\"↽\",lharu:\"↼\",lharul:\"⥪\",lhblk:\"▄\",LJcy:\"Љ\",ljcy:\"љ\",Ll:\"⋘\",ll:\"≪\",llarr:\"⇇\",llcorner:\"⌞\",Lleftarrow:\"⇚\",llhard:\"⥫\",lltri:\"◺\",Lmidot:\"Ŀ\",lmidot:\"ŀ\",lmoust:\"⎰\",lmoustache:\"⎰\",lnap:\"⪉\",lnapprox:\"⪉\",lnE:\"≨\",lne:\"⪇\",lneq:\"⪇\",lneqq:\"≨\",lnsim:\"⋦\",loang:\"⟬\",loarr:\"⇽\",lobrk:\"⟦\",LongLeftArrow:\"⟵\",Longleftarrow:\"⟸\",longleftarrow:\"⟵\",LongLeftRightArrow:\"⟷\",Longleftrightarrow:\"⟺\",longleftrightarrow:\"⟷\",longmapsto:\"⟼\",LongRightArrow:\"⟶\",Longrightarrow:\"⟹\",longrightarrow:\"⟶\",looparrowleft:\"↫\",looparrowright:\"↬\",lopar:\"⦅\",Lopf:\"������\",lopf:\"������\",loplus:\"⨭\",lotimes:\"⨴\",lowast:\"∗\",lowbar:\"_\",LowerLeftArrow:\"↙\",LowerRightArrow:\"↘\",loz:\"◊\",lozenge:\"◊\",lozf:\"⧫\",lpar:\"(\",lparlt:\"⦓\",lrarr:\"⇆\",lrcorner:\"⌟\",lrhar:\"⇋\",lrhard:\"⥭\",lrm:\"‎\",lrtri:\"⊿\",lsaquo:\"‹\",Lscr:\"ℒ\",lscr:\"������\",Lsh:\"↰\",lsh:\"↰\",lsim:\"≲\",lsime:\"⪍\",lsimg:\"⪏\",lsqb:\"[\",lsquo:\"‘\",lsquor:\"‚\",Lstrok:\"Ł\",lstrok:\"ł\",LT:\"<\",Lt:\"≪\",lt:\"<\",ltcc:\"⪦\",ltcir:\"⩹\",ltdot:\"⋖\",lthree:\"⋋\",ltimes:\"⋉\",ltlarr:\"⥶\",ltquest:\"⩻\",ltri:\"◃\",ltrie:\"⊴\",ltrif:\"◂\",ltrPar:\"⦖\",lurdshar:\"⥊\",luruhar:\"⥦\",lvertneqq:\"≨︀\",lvnE:\"≨︀\",macr:\"¯\",male:\"♂\",malt:\"✠\",maltese:\"✠\",Map:\"⤅\",map:\"↦\",mapsto:\"↦\",mapstodown:\"↧\",mapstoleft:\"↤\",mapstoup:\"↥\",marker:\"▮\",mcomma:\"⨩\",Mcy:\"М\",mcy:\"м\",mdash:\"—\",mDDot:\"∺\",measuredangle:\"∡\",MediumSpace:\" \",Mellintrf:\"ℳ\",Mfr:\"������\",mfr:\"������\",mho:\"℧\",micro:\"µ\",mid:\"∣\",midast:\"*\",midcir:\"⫰\",middot:\"·\",minus:\"−\",minusb:\"⊟\",minusd:\"∸\",minusdu:\"⨪\",MinusPlus:\"∓\",mlcp:\"⫛\",mldr:\"…\",mnplus:\"∓\",models:\"⊧\",Mopf:\"������\",mopf:\"������\",mp:\"∓\",Mscr:\"ℳ\",mscr:\"������\",mstpos:\"∾\",Mu:\"Μ\",mu:\"μ\",multimap:\"⊸\",mumap:\"⊸\",nabla:\"∇\",Nacute:\"Ń\",nacute:\"ń\",nang:\"∠⃒\",nap:\"≉\",napE:\"⩰̸\",napid:\"≋̸\",napos:\"ʼn\",napprox:\"≉\",natur:\"♮\",natural:\"♮\",naturals:\"ℕ\",nbsp:\" \",nbump:\"≎̸\",nbumpe:\"≏̸\",ncap:\"⩃\",Ncaron:\"Ň\",ncaron:\"ň\",Ncedil:\"Ņ\",ncedil:\"ņ\",ncong:\"≇\",ncongdot:\"⩭̸\",ncup:\"⩂\",Ncy:\"Н\",ncy:\"н\",ndash:\"–\",ne:\"≠\",nearhk:\"⤤\",neArr:\"⇗\",nearr:\"↗\",nearrow:\"↗\",nedot:\"≐̸\",NegativeMediumSpace:\"​\",NegativeThickSpace:\"​\",NegativeThinSpace:\"​\",NegativeVeryThinSpace:\"​\",nequiv:\"≢\",nesear:\"⤨\",nesim:\"≂̸\",NestedGreaterGreater:\"≫\",NestedLessLess:\"≪\",NewLine:\"\\n\",nexist:\"∄\",nexists:\"∄\",Nfr:\"������\",nfr:\"������\",ngE:\"≧̸\",nge:\"≱\",ngeq:\"≱\",ngeqq:\"≧̸\",ngeqslant:\"⩾̸\",nges:\"⩾̸\",nGg:\"⋙̸\",ngsim:\"≵\",nGt:\"≫⃒\",ngt:\"≯\",ngtr:\"≯\",nGtv:\"≫̸\",nhArr:\"⇎\",nharr:\"↮\",nhpar:\"⫲\",ni:\"∋\",nis:\"⋼\",nisd:\"⋺\",niv:\"∋\",NJcy:\"Њ\",njcy:\"њ\",nlArr:\"⇍\",nlarr:\"↚\",nldr:\"‥\",nlE:\"≦̸\",nle:\"≰\",nLeftarrow:\"⇍\",nleftarrow:\"↚\",nLeftrightarrow:\"⇎\",nleftrightarrow:\"↮\",nleq:\"≰\",nleqq:\"≦̸\",nleqslant:\"⩽̸\",nles:\"⩽̸\",nless:\"≮\",nLl:\"⋘̸\",nlsim:\"≴\",nLt:\"≪⃒\",nlt:\"≮\",nltri:\"⋪\",nltrie:\"⋬\",nLtv:\"≪̸\",nmid:\"∤\",NoBreak:\"⁠\",NonBreakingSpace:\" \",Nopf:\"ℕ\",nopf:\"������\",Not:\"⫬\",not:\"¬\",NotCongruent:\"≢\",NotCupCap:\"≭\",NotDoubleVerticalBar:\"∦\",NotElement:\"∉\",NotEqual:\"≠\",NotEqualTilde:\"≂̸\",NotExists:\"∄\",NotGreater:\"≯\",NotGreaterEqual:\"≱\",NotGreaterFullEqual:\"≧̸\",NotGreaterGreater:\"≫̸\",NotGreaterLess:\"≹\",NotGreaterSlantEqual:\"⩾̸\",NotGreaterTilde:\"≵\",NotHumpDownHump:\"≎̸\",NotHumpEqual:\"≏̸\",notin:\"∉\",notindot:\"⋵̸\",notinE:\"⋹̸\",notinva:\"∉\",notinvb:\"⋷\",notinvc:\"⋶\",NotLeftTriangle:\"⋪\",NotLeftTriangleBar:\"⧏̸\",NotLeftTriangleEqual:\"⋬\",NotLess:\"≮\",NotLessEqual:\"≰\",NotLessGreater:\"≸\",NotLessLess:\"≪̸\",NotLessSlantEqual:\"⩽̸\",NotLessTilde:\"≴\",NotNestedGreaterGreater:\"⪢̸\",NotNestedLessLess:\"⪡̸\",notni:\"∌\",notniva:\"∌\",notnivb:\"⋾\",notnivc:\"⋽\",NotPrecedes:\"⊀\",NotPrecedesEqual:\"⪯̸\",NotPrecedesSlantEqual:\"⋠\",NotReverseElement:\"∌\",NotRightTriangle:\"⋫\",NotRightTriangleBar:\"⧐̸\",NotRightTriangleEqual:\"⋭\",NotSquareSubset:\"⊏̸\",NotSquareSubsetEqual:\"⋢\",NotSquareSuperset:\"⊐̸\",NotSquareSupersetEqual:\"⋣\",NotSubset:\"⊂⃒\",NotSubsetEqual:\"⊈\",NotSucceeds:\"⊁\",NotSucceedsEqual:\"⪰̸\",NotSucceedsSlantEqual:\"⋡\",NotSucceedsTilde:\"≿̸\",NotSuperset:\"⊃⃒\",NotSupersetEqual:\"⊉\",NotTilde:\"≁\",NotTildeEqual:\"≄\",NotTildeFullEqual:\"≇\",NotTildeTilde:\"≉\",NotVerticalBar:\"∤\",npar:\"∦\",nparallel:\"∦\",nparsl:\"⫽⃥\",npart:\"∂̸\",npolint:\"⨔\",npr:\"⊀\",nprcue:\"⋠\",npre:\"⪯̸\",nprec:\"⊀\",npreceq:\"⪯̸\",nrArr:\"⇏\",nrarr:\"↛\",nrarrc:\"⤳̸\",nrarrw:\"↝̸\",nRightarrow:\"⇏\",nrightarrow:\"↛\",nrtri:\"⋫\",nrtrie:\"⋭\",nsc:\"⊁\",nsccue:\"⋡\",nsce:\"⪰̸\",Nscr:\"������\",nscr:\"������\",nshortmid:\"∤\",nshortparallel:\"∦\",nsim:\"≁\",nsime:\"≄\",nsimeq:\"≄\",nsmid:\"∤\",nspar:\"∦\",nsqsube:\"⋢\",nsqsupe:\"⋣\",nsub:\"⊄\",nsubE:\"⫅̸\",nsube:\"⊈\",nsubset:\"⊂⃒\",nsubseteq:\"⊈\",nsubseteqq:\"⫅̸\",nsucc:\"⊁\",nsucceq:\"⪰̸\",nsup:\"⊅\",nsupE:\"⫆̸\",nsupe:\"⊉\",nsupset:\"⊃⃒\",nsupseteq:\"⊉\",nsupseteqq:\"⫆̸\",ntgl:\"≹\",Ntilde:\"Ñ\",ntilde:\"ñ\",ntlg:\"≸\",ntriangleleft:\"⋪\",ntrianglelefteq:\"⋬\",ntriangleright:\"⋫\",ntrianglerighteq:\"⋭\",Nu:\"Ν\",nu:\"ν\",num:\"#\",numero:\"№\",numsp:\" \",nvap:\"≍⃒\",nVDash:\"⊯\",nVdash:\"⊮\",nvDash:\"⊭\",nvdash:\"⊬\",nvge:\"≥⃒\",nvgt:\">⃒\",nvHarr:\"⤄\",nvinfin:\"⧞\",nvlArr:\"⤂\",nvle:\"≤⃒\",nvlt:\"<⃒\",nvltrie:\"⊴⃒\",nvrArr:\"⤃\",nvrtrie:\"⊵⃒\",nvsim:\"∼⃒\",nwarhk:\"⤣\",nwArr:\"⇖\",nwarr:\"↖\",nwarrow:\"↖\",nwnear:\"⤧\",Oacute:\"Ó\",oacute:\"ó\",oast:\"⊛\",ocir:\"⊚\",Ocirc:\"Ô\",ocirc:\"ô\",Ocy:\"О\",ocy:\"о\",odash:\"⊝\",Odblac:\"Ő\",odblac:\"ő\",odiv:\"⨸\",odot:\"⊙\",odsold:\"⦼\",OElig:\"Œ\",oelig:\"œ\",ofcir:\"⦿\",Ofr:\"������\",ofr:\"������\",ogon:\"˛\",Ograve:\"Ò\",ograve:\"ò\",ogt:\"⧁\",ohbar:\"⦵\",ohm:\"Ω\",oint:\"∮\",olarr:\"↺\",olcir:\"⦾\",olcross:\"⦻\",oline:\"‾\",olt:\"⧀\",Omacr:\"Ō\",omacr:\"ō\",Omega:\"Ω\",omega:\"ω\",Omicron:\"Ο\",omicron:\"ο\",omid:\"⦶\",ominus:\"⊖\",Oopf:\"������\",oopf:\"������\",opar:\"⦷\",OpenCurlyDoubleQuote:\"“\",OpenCurlyQuote:\"‘\",operp:\"⦹\",oplus:\"⊕\",Or:\"⩔\",or:\"∨\",orarr:\"↻\",ord:\"⩝\",order:\"ℴ\",orderof:\"ℴ\",ordf:\"ª\",ordm:\"º\",origof:\"⊶\",oror:\"⩖\",orslope:\"⩗\",orv:\"⩛\",oS:\"Ⓢ\",Oscr:\"������\",oscr:\"ℴ\",Oslash:\"Ø\",oslash:\"ø\",osol:\"⊘\",Otilde:\"Õ\",otilde:\"õ\",Otimes:\"⨷\",otimes:\"⊗\",otimesas:\"⨶\",Ouml:\"Ö\",ouml:\"ö\",ovbar:\"⌽\",OverBar:\"‾\",OverBrace:\"⏞\",OverBracket:\"⎴\",OverParenthesis:\"⏜\",par:\"∥\",para:\"¶\",parallel:\"∥\",parsim:\"⫳\",parsl:\"⫽\",part:\"∂\",PartialD:\"∂\",Pcy:\"П\",pcy:\"п\",percnt:\"%\",period:\".\",permil:\"‰\",perp:\"⊥\",pertenk:\"‱\",Pfr:\"������\",pfr:\"������\",Phi:\"Φ\",phi:\"φ\",phiv:\"ϕ\",phmmat:\"ℳ\",phone:\"☎\",Pi:\"Π\",pi:\"π\",pitchfork:\"⋔\",piv:\"ϖ\",planck:\"ℏ\",planckh:\"ℎ\",plankv:\"ℏ\",plus:\"+\",plusacir:\"⨣\",plusb:\"⊞\",pluscir:\"⨢\",plusdo:\"∔\",plusdu:\"⨥\",pluse:\"⩲\",PlusMinus:\"±\",plusmn:\"±\",plussim:\"⨦\",plustwo:\"⨧\",pm:\"±\",Poincareplane:\"ℌ\",pointint:\"⨕\",Popf:\"ℙ\",popf:\"������\",pound:\"£\",Pr:\"⪻\",pr:\"≺\",prap:\"⪷\",prcue:\"≼\",prE:\"⪳\",pre:\"⪯\",prec:\"≺\",precapprox:\"⪷\",preccurlyeq:\"≼\",Precedes:\"≺\",PrecedesEqual:\"⪯\",PrecedesSlantEqual:\"≼\",PrecedesTilde:\"≾\",preceq:\"⪯\",precnapprox:\"⪹\",precneqq:\"⪵\",precnsim:\"⋨\",precsim:\"≾\",Prime:\"″\",prime:\"′\",primes:\"ℙ\",prnap:\"⪹\",prnE:\"⪵\",prnsim:\"⋨\",prod:\"∏\",Product:\"∏\",profalar:\"⌮\",profline:\"⌒\",profsurf:\"⌓\",prop:\"∝\",Proportion:\"∷\",Proportional:\"∝\",propto:\"∝\",prsim:\"≾\",prurel:\"⊰\",Pscr:\"������\",pscr:\"������\",Psi:\"Ψ\",psi:\"ψ\",puncsp:\" \",Qfr:\"������\",qfr:\"������\",qint:\"⨌\",Qopf:\"ℚ\",qopf:\"������\",qprime:\"⁗\",Qscr:\"������\",qscr:\"������\",quaternions:\"ℍ\",quatint:\"⨖\",quest:\"?\",questeq:\"≟\",QUOT:'\"',quot:'\"',rAarr:\"⇛\",race:\"∽̱\",Racute:\"Ŕ\",racute:\"ŕ\",radic:\"√\",raemptyv:\"⦳\",Rang:\"⟫\",rang:\"⟩\",rangd:\"⦒\",range:\"⦥\",rangle:\"⟩\",raquo:\"»\",Rarr:\"↠\",rArr:\"⇒\",rarr:\"→\",rarrap:\"⥵\",rarrb:\"⇥\",rarrbfs:\"⤠\",rarrc:\"⤳\",rarrfs:\"⤞\",rarrhk:\"↪\",rarrlp:\"↬\",rarrpl:\"⥅\",rarrsim:\"⥴\",Rarrtl:\"⤖\",rarrtl:\"↣\",rarrw:\"↝\",rAtail:\"⤜\",ratail:\"⤚\",ratio:\"∶\",rationals:\"ℚ\",RBarr:\"⤐\",rBarr:\"⤏\",rbarr:\"⤍\",rbbrk:\"❳\",rbrace:\"}\",rbrack:\"]\",rbrke:\"⦌\",rbrksld:\"⦎\",rbrkslu:\"⦐\",Rcaron:\"Ř\",rcaron:\"ř\",Rcedil:\"Ŗ\",rcedil:\"ŗ\",rceil:\"⌉\",rcub:\"}\",Rcy:\"Р\",rcy:\"р\",rdca:\"⤷\",rdldhar:\"⥩\",rdquo:\"”\",rdquor:\"”\",rdsh:\"↳\",Re:\"ℜ\",real:\"ℜ\",realine:\"ℛ\",realpart:\"ℜ\",reals:\"ℝ\",rect:\"▭\",REG:\"®\",reg:\"®\",ReverseElement:\"∋\",ReverseEquilibrium:\"⇋\",ReverseUpEquilibrium:\"⥯\",rfisht:\"⥽\",rfloor:\"⌋\",Rfr:\"ℜ\",rfr:\"������\",rHar:\"⥤\",rhard:\"⇁\",rharu:\"⇀\",rharul:\"⥬\",Rho:\"Ρ\",rho:\"ρ\",rhov:\"ϱ\",RightAngleBracket:\"⟩\",RightArrow:\"→\",Rightarrow:\"⇒\",rightarrow:\"→\",RightArrowBar:\"⇥\",RightArrowLeftArrow:\"⇄\",rightarrowtail:\"↣\",RightCeiling:\"⌉\",RightDoubleBracket:\"⟧\",RightDownTeeVector:\"⥝\",RightDownVector:\"⇂\",RightDownVectorBar:\"⥕\",RightFloor:\"⌋\",rightharpoondown:\"⇁\",rightharpoonup:\"⇀\",rightleftarrows:\"⇄\",rightleftharpoons:\"⇌\",rightrightarrows:\"⇉\",rightsquigarrow:\"↝\",RightTee:\"⊢\",RightTeeArrow:\"↦\",RightTeeVector:\"⥛\",rightthreetimes:\"⋌\",RightTriangle:\"⊳\",RightTriangleBar:\"⧐\",RightTriangleEqual:\"⊵\",RightUpDownVector:\"⥏\",RightUpTeeVector:\"⥜\",RightUpVector:\"↾\",RightUpVectorBar:\"⥔\",RightVector:\"⇀\",RightVectorBar:\"⥓\",ring:\"˚\",risingdotseq:\"≓\",rlarr:\"⇄\",rlhar:\"⇌\",rlm:\"‏\",rmoust:\"⎱\",rmoustache:\"⎱\",rnmid:\"⫮\",roang:\"⟭\",roarr:\"⇾\",robrk:\"⟧\",ropar:\"⦆\",Ropf:\"ℝ\",ropf:\"������\",roplus:\"⨮\",rotimes:\"⨵\",RoundImplies:\"⥰\",rpar:\")\",rpargt:\"⦔\",rppolint:\"⨒\",rrarr:\"⇉\",Rrightarrow:\"⇛\",rsaquo:\"›\",Rscr:\"ℛ\",rscr:\"������\",Rsh:\"↱\",rsh:\"↱\",rsqb:\"]\",rsquo:\"’\",rsquor:\"’\",rthree:\"⋌\",rtimes:\"⋊\",rtri:\"▹\",rtrie:\"⊵\",rtrif:\"▸\",rtriltri:\"⧎\",RuleDelayed:\"⧴\",ruluhar:\"⥨\",rx:\"℞\",Sacute:\"Ś\",sacute:\"ś\",sbquo:\"‚\",Sc:\"⪼\",sc:\"≻\",scap:\"⪸\",Scaron:\"Š\",scaron:\"š\",sccue:\"≽\",scE:\"⪴\",sce:\"⪰\",Scedil:\"Ş\",scedil:\"ş\",Scirc:\"Ŝ\",scirc:\"ŝ\",scnap:\"⪺\",scnE:\"⪶\",scnsim:\"⋩\",scpolint:\"⨓\",scsim:\"≿\",Scy:\"С\",scy:\"с\",sdot:\"⋅\",sdotb:\"⊡\",sdote:\"⩦\",searhk:\"⤥\",seArr:\"⇘\",searr:\"↘\",searrow:\"↘\",sect:\"§\",semi:\";\",seswar:\"⤩\",setminus:\"∖\",setmn:\"∖\",sext:\"✶\",Sfr:\"������\",sfr:\"������\",sfrown:\"⌢\",sharp:\"♯\",SHCHcy:\"Щ\",shchcy:\"щ\",SHcy:\"Ш\",shcy:\"ш\",ShortDownArrow:\"↓\",ShortLeftArrow:\"←\",shortmid:\"∣\",shortparallel:\"∥\",ShortRightArrow:\"→\",ShortUpArrow:\"↑\",shy:\"­\",Sigma:\"Σ\",sigma:\"σ\",sigmaf:\"ς\",sigmav:\"ς\",sim:\"∼\",simdot:\"⩪\",sime:\"≃\",simeq:\"≃\",simg:\"⪞\",simgE:\"⪠\",siml:\"⪝\",simlE:\"⪟\",simne:\"≆\",simplus:\"⨤\",simrarr:\"⥲\",slarr:\"←\",SmallCircle:\"∘\",smallsetminus:\"∖\",smashp:\"⨳\",smeparsl:\"⧤\",smid:\"∣\",smile:\"⌣\",smt:\"⪪\",smte:\"⪬\",smtes:\"⪬︀\",SOFTcy:\"Ь\",softcy:\"ь\",sol:\"/\",solb:\"⧄\",solbar:\"⌿\",Sopf:\"������\",sopf:\"������\",spades:\"♠\",spadesuit:\"♠\",spar:\"∥\",sqcap:\"⊓\",sqcaps:\"⊓︀\",sqcup:\"⊔\",sqcups:\"⊔︀\",Sqrt:\"√\",sqsub:\"⊏\",sqsube:\"⊑\",sqsubset:\"⊏\",sqsubseteq:\"⊑\",sqsup:\"⊐\",sqsupe:\"⊒\",sqsupset:\"⊐\",sqsupseteq:\"⊒\",squ:\"□\",Square:\"□\",square:\"□\",SquareIntersection:\"⊓\",SquareSubset:\"⊏\",SquareSubsetEqual:\"⊑\",SquareSuperset:\"⊐\",SquareSupersetEqual:\"⊒\",SquareUnion:\"⊔\",squarf:\"▪\",squf:\"▪\",srarr:\"→\",Sscr:\"������\",sscr:\"������\",ssetmn:\"∖\",ssmile:\"⌣\",sstarf:\"⋆\",Star:\"⋆\",star:\"☆\",starf:\"★\",straightepsilon:\"ϵ\",straightphi:\"ϕ\",strns:\"¯\",Sub:\"⋐\",sub:\"⊂\",subdot:\"⪽\",subE:\"⫅\",sube:\"⊆\",subedot:\"⫃\",submult:\"⫁\",subnE:\"⫋\",subne:\"⊊\",subplus:\"⪿\",subrarr:\"⥹\",Subset:\"⋐\",subset:\"⊂\",subseteq:\"⊆\",subseteqq:\"⫅\",SubsetEqual:\"⊆\",subsetneq:\"⊊\",subsetneqq:\"⫋\",subsim:\"⫇\",subsub:\"⫕\",subsup:\"⫓\",succ:\"≻\",succapprox:\"⪸\",succcurlyeq:\"≽\",Succeeds:\"≻\",SucceedsEqual:\"⪰\",SucceedsSlantEqual:\"≽\",SucceedsTilde:\"≿\",succeq:\"⪰\",succnapprox:\"⪺\",succneqq:\"⪶\",succnsim:\"⋩\",succsim:\"≿\",SuchThat:\"∋\",Sum:\"∑\",sum:\"∑\",sung:\"♪\",Sup:\"⋑\",sup:\"⊃\",sup1:\"¹\",sup2:\"²\",sup3:\"³\",supdot:\"⪾\",supdsub:\"⫘\",supE:\"⫆\",supe:\"⊇\",supedot:\"⫄\",Superset:\"⊃\",SupersetEqual:\"⊇\",suphsol:\"⟉\",suphsub:\"⫗\",suplarr:\"⥻\",supmult:\"⫂\",supnE:\"⫌\",supne:\"⊋\",supplus:\"⫀\",Supset:\"⋑\",supset:\"⊃\",supseteq:\"⊇\",supseteqq:\"⫆\",supsetneq:\"⊋\",supsetneqq:\"⫌\",supsim:\"⫈\",supsub:\"⫔\",supsup:\"⫖\",swarhk:\"⤦\",swArr:\"⇙\",swarr:\"↙\",swarrow:\"↙\",swnwar:\"⤪\",szlig:\"ß\",Tab:\"\\t\",target:\"⌖\",Tau:\"Τ\",tau:\"τ\",tbrk:\"⎴\",Tcaron:\"Ť\",tcaron:\"ť\",Tcedil:\"Ţ\",tcedil:\"ţ\",Tcy:\"Т\",tcy:\"т\",tdot:\"⃛\",telrec:\"⌕\",Tfr:\"������\",tfr:\"������\",there4:\"∴\",Therefore:\"∴\",therefore:\"∴\",Theta:\"Θ\",theta:\"θ\",thetasym:\"ϑ\",thetav:\"ϑ\",thickapprox:\"≈\",thicksim:\"∼\",ThickSpace:\"  \",thinsp:\" \",ThinSpace:\" \",thkap:\"≈\",thksim:\"∼\",THORN:\"Þ\",thorn:\"þ\",Tilde:\"∼\",tilde:\"˜\",TildeEqual:\"≃\",TildeFullEqual:\"≅\",TildeTilde:\"≈\",times:\"×\",timesb:\"⊠\",timesbar:\"⨱\",timesd:\"⨰\",tint:\"∭\",toea:\"⤨\",top:\"⊤\",topbot:\"⌶\",topcir:\"⫱\",Topf:\"������\",topf:\"������\",topfork:\"⫚\",tosa:\"⤩\",tprime:\"‴\",TRADE:\"™\",trade:\"™\",triangle:\"▵\",triangledown:\"▿\",triangleleft:\"◃\",trianglelefteq:\"⊴\",triangleq:\"≜\",triangleright:\"▹\",trianglerighteq:\"⊵\",tridot:\"◬\",trie:\"≜\",triminus:\"⨺\",TripleDot:\"⃛\",triplus:\"⨹\",trisb:\"⧍\",tritime:\"⨻\",trpezium:\"⏢\",Tscr:\"������\",tscr:\"������\",TScy:\"Ц\",tscy:\"ц\",TSHcy:\"Ћ\",tshcy:\"ћ\",Tstrok:\"Ŧ\",tstrok:\"ŧ\",twixt:\"≬\",twoheadleftarrow:\"↞\",twoheadrightarrow:\"↠\",Uacute:\"Ú\",uacute:\"ú\",Uarr:\"↟\",uArr:\"⇑\",uarr:\"↑\",Uarrocir:\"⥉\",Ubrcy:\"Ў\",ubrcy:\"ў\",Ubreve:\"Ŭ\",ubreve:\"ŭ\",Ucirc:\"Û\",ucirc:\"û\",Ucy:\"У\",ucy:\"у\",udarr:\"⇅\",Udblac:\"Ű\",udblac:\"ű\",udhar:\"⥮\",ufisht:\"⥾\",Ufr:\"������\",ufr:\"������\",Ugrave:\"Ù\",ugrave:\"ù\",uHar:\"⥣\",uharl:\"↿\",uharr:\"↾\",uhblk:\"▀\",ulcorn:\"⌜\",ulcorner:\"⌜\",ulcrop:\"⌏\",ultri:\"◸\",Umacr:\"Ū\",umacr:\"ū\",uml:\"¨\",UnderBar:\"_\",UnderBrace:\"⏟\",UnderBracket:\"⎵\",UnderParenthesis:\"⏝\",Union:\"⋃\",UnionPlus:\"⊎\",Uogon:\"Ų\",uogon:\"ų\",Uopf:\"������\",uopf:\"������\",UpArrow:\"↑\",Uparrow:\"⇑\",uparrow:\"↑\",UpArrowBar:\"⤒\",UpArrowDownArrow:\"⇅\",UpDownArrow:\"↕\",Updownarrow:\"⇕\",updownarrow:\"↕\",UpEquilibrium:\"⥮\",upharpoonleft:\"↿\",upharpoonright:\"↾\",uplus:\"⊎\",UpperLeftArrow:\"↖\",UpperRightArrow:\"↗\",Upsi:\"ϒ\",upsi:\"υ\",upsih:\"ϒ\",Upsilon:\"Υ\",upsilon:\"υ\",UpTee:\"⊥\",UpTeeArrow:\"↥\",upuparrows:\"⇈\",urcorn:\"⌝\",urcorner:\"⌝\",urcrop:\"⌎\",Uring:\"Ů\",uring:\"ů\",urtri:\"◹\",Uscr:\"������\",uscr:\"������\",utdot:\"⋰\",Utilde:\"Ũ\",utilde:\"ũ\",utri:\"▵\",utrif:\"▴\",uuarr:\"⇈\",Uuml:\"Ü\",uuml:\"ü\",uwangle:\"⦧\",vangrt:\"⦜\",varepsilon:\"ϵ\",varkappa:\"ϰ\",varnothing:\"∅\",varphi:\"ϕ\",varpi:\"ϖ\",varpropto:\"∝\",vArr:\"⇕\",varr:\"↕\",varrho:\"ϱ\",varsigma:\"ς\",varsubsetneq:\"⊊︀\",varsubsetneqq:\"⫋︀\",varsupsetneq:\"⊋︀\",varsupsetneqq:\"⫌︀\",vartheta:\"ϑ\",vartriangleleft:\"⊲\",vartriangleright:\"⊳\",Vbar:\"⫫\",vBar:\"⫨\",vBarv:\"⫩\",Vcy:\"В\",vcy:\"в\",VDash:\"⊫\",Vdash:\"⊩\",vDash:\"⊨\",vdash:\"⊢\",Vdashl:\"⫦\",Vee:\"⋁\",vee:\"∨\",veebar:\"⊻\",veeeq:\"≚\",vellip:\"⋮\",Verbar:\"‖\",verbar:\"|\",Vert:\"‖\",vert:\"|\",VerticalBar:\"∣\",VerticalLine:\"|\",VerticalSeparator:\"❘\",VerticalTilde:\"≀\",VeryThinSpace:\" \",Vfr:\"������\",vfr:\"������\",vltri:\"⊲\",vnsub:\"⊂⃒\",vnsup:\"⊃⃒\",Vopf:\"������\",vopf:\"������\",vprop:\"∝\",vrtri:\"⊳\",Vscr:\"������\",vscr:\"������\",vsubnE:\"⫋︀\",vsubne:\"⊊︀\",vsupnE:\"⫌︀\",vsupne:\"⊋︀\",Vvdash:\"⊪\",vzigzag:\"⦚\",Wcirc:\"Ŵ\",wcirc:\"ŵ\",wedbar:\"⩟\",Wedge:\"⋀\",wedge:\"∧\",wedgeq:\"≙\",weierp:\"℘\",Wfr:\"������\",wfr:\"������\",Wopf:\"������\",wopf:\"������\",wp:\"℘\",wr:\"≀\",wreath:\"≀\",Wscr:\"������\",wscr:\"������\",xcap:\"⋂\",xcirc:\"◯\",xcup:\"⋃\",xdtri:\"▽\",Xfr:\"������\",xfr:\"������\",xhArr:\"⟺\",xharr:\"⟷\",Xi:\"Ξ\",xi:\"ξ\",xlArr:\"⟸\",xlarr:\"⟵\",xmap:\"⟼\",xnis:\"⋻\",xodot:\"⨀\",Xopf:\"������\",xopf:\"������\",xoplus:\"⨁\",xotime:\"⨂\",xrArr:\"⟹\",xrarr:\"⟶\",Xscr:\"������\",xscr:\"������\",xsqcup:\"⨆\",xuplus:\"⨄\",xutri:\"△\",xvee:\"⋁\",xwedge:\"⋀\",Yacute:\"Ý\",yacute:\"ý\",YAcy:\"Я\",yacy:\"я\",Ycirc:\"Ŷ\",ycirc:\"ŷ\",Ycy:\"Ы\",ycy:\"ы\",yen:\"¥\",Yfr:\"������\",yfr:\"������\",YIcy:\"Ї\",yicy:\"ї\",Yopf:\"������\",yopf:\"������\",Yscr:\"������\",yscr:\"������\",YUcy:\"Ю\",yucy:\"ю\",Yuml:\"Ÿ\",yuml:\"ÿ\",Zacute:\"Ź\",zacute:\"ź\",Zcaron:\"Ž\",zcaron:\"ž\",Zcy:\"З\",zcy:\"з\",Zdot:\"Ż\",zdot:\"ż\",zeetrf:\"ℨ\",ZeroWidthSpace:\"​\",Zeta:\"Ζ\",zeta:\"ζ\",Zfr:\"ℨ\",zfr:\"������\",ZHcy:\"Ж\",zhcy:\"ж\",zigrarr:\"⇝\",Zopf:\"ℤ\",zopf:\"������\",Zscr:\"������\",zscr:\"������\",zwj:\"‍\",zwnj:\"‌\"},r=Object.prototype.hasOwnProperty;function n(e){return o=e,(n=t)&&r.call(n,o)?t[e]:e;var n,o}var o=Object.prototype.hasOwnProperty;function s(e,t){return!!e&&o.call(e,t)}function i(e){return[].slice.call(arguments,1).forEach(function(t){if(t){if(\"object\"!=typeof t)throw new TypeError(t+\"must be object\");Object.keys(t).forEach(function(r){e[r]=t[r]})}}),e}var a=/\\\\([\\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;function u(e){return e.indexOf(\"\\\\\")<0?e:e.replace(a,\"$1\")}function l(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(65535!=(65535&e)&&65534!=(65535&e)&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function c(e){if(e>65535){var t=55296+((e-=65536)>>10),r=56320+(1023&e);return String.fromCharCode(t,r)}return String.fromCharCode(e)}var p=/&([a-z#][a-z0-9]{1,31});/gi,h=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i;function f(e,t){var r=0,o=n(t);return t!==o?o:35===t.charCodeAt(0)&&h.test(t)&&l(r=\"x\"===t[1].toLowerCase()?parseInt(t.slice(2),16):parseInt(t.slice(1),10))?c(r):e}function g(e){return e.indexOf(\"&\")<0?e:e.replace(p,f)}var d=/[&<>\"]/,m=/[&<>\"]/g,b={\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",'\"':\"&quot;\"};function v(e){return b[e]}function k(e){return d.test(e)?e.replace(m,v):e}var A=Object.freeze({isString:function(e){return\"[object String]\"===function(e){return Object.prototype.toString.call(e)}(e)},has:s,assign:i,unescapeMd:u,isValidEntityCode:l,fromCodePoint:c,replaceEntities:g,escapeHtml:k}),y={};y.blockquote_open=function(){return\"<blockquote>\\n\"},y.blockquote_close=function(e,t){return\"</blockquote>\"+x(e,t)},y.code=function(e,t){return e[t].block?\"<pre><code>\"+k(e[t].content)+\"</code></pre>\"+x(e,t):\"<code>\"+k(e[t].content)+\"</code>\"},y.fence=function(e,t,r,n,o){var i,a,l=e[t],c=\"\",p=r.langPrefix;if(l.params){if(a=(i=l.params.split(/\\s+/g)).join(\" \"),s(o.rules.fence_custom,i[0]))return o.rules.fence_custom[i[0]](e,t,r,n,o);c=' class=\"'+p+k(g(u(a)))+'\"'}return\"<pre><code\"+c+\">\"+(r.highlight&&r.highlight.apply(r.highlight,[l.content].concat(i))||k(l.content))+\"</code></pre>\"+x(e,t)},y.fence_custom={},y.heading_open=function(e,t){return\"<h\"+e[t].hLevel+\">\"},y.heading_close=function(e,t){return\"</h\"+e[t].hLevel+\">\\n\"},y.hr=function(e,t,r){return(r.xhtmlOut?\"<hr />\":\"<hr>\")+x(e,t)},y.bullet_list_open=function(){return\"<ul>\\n\"},y.bullet_list_close=function(e,t){return\"</ul>\"+x(e,t)},y.list_item_open=function(){return\"<li>\"},y.list_item_close=function(){return\"</li>\\n\"},y.ordered_list_open=function(e,t){var r=e[t];return\"<ol\"+(r.order>1?' start=\"'+r.order+'\"':\"\")+\">\\n\"},y.ordered_list_close=function(e,t){return\"</ol>\"+x(e,t)},y.paragraph_open=function(e,t){return e[t].tight?\"\":\"<p>\"},y.paragraph_close=function(e,t){var r=!(e[t].tight&&t&&\"inline\"===e[t-1].type&&!e[t-1].content);return(e[t].tight?\"\":\"</p>\")+(r?x(e,t):\"\")},y.link_open=function(e,t,r){var n=e[t].title?' title=\"'+k(g(e[t].title))+'\"':\"\",o=r.linkTarget?' target=\"'+r.linkTarget+'\"':\"\";return'<a href=\"'+k(e[t].href)+'\"'+n+o+\">\"},y.link_close=function(){return\"</a>\"},y.image=function(e,t,r){var n=' src=\"'+k(e[t].src)+'\"',o=e[t].title?' title=\"'+k(g(e[t].title))+'\"':\"\";return\"<img\"+n+(' alt=\"'+(e[t].alt?k(g(u(e[t].alt))):\"\")+'\"')+o+(r.xhtmlOut?\" /\":\"\")+\">\"},y.table_open=function(){return\"<table>\\n\"},y.table_close=function(){return\"</table>\\n\"},y.thead_open=function(){return\"<thead>\\n\"},y.thead_close=function(){return\"</thead>\\n\"},y.tbody_open=function(){return\"<tbody>\\n\"},y.tbody_close=function(){return\"</tbody>\\n\"},y.tr_open=function(){return\"<tr>\"},y.tr_close=function(){return\"</tr>\\n\"},y.th_open=function(e,t){var r=e[t];return\"<th\"+(r.align?' style=\"text-align:'+r.align+'\"':\"\")+\">\"},y.th_close=function(){return\"</th>\"},y.td_open=function(e,t){var r=e[t];return\"<td\"+(r.align?' style=\"text-align:'+r.align+'\"':\"\")+\">\"},y.td_close=function(){return\"</td>\"},y.strong_open=function(){return\"<strong>\"},y.strong_close=function(){return\"</strong>\"},y.em_open=function(){return\"<em>\"},y.em_close=function(){return\"</em>\"},y.del_open=function(){return\"<del>\"},y.del_close=function(){return\"</del>\"},y.ins_open=function(){return\"<ins>\"},y.ins_close=function(){return\"</ins>\"},y.mark_open=function(){return\"<mark>\"},y.mark_close=function(){return\"</mark>\"},y.sub=function(e,t){return\"<sub>\"+k(e[t].content)+\"</sub>\"},y.sup=function(e,t){return\"<sup>\"+k(e[t].content)+\"</sup>\"},y.hardbreak=function(e,t,r){return r.xhtmlOut?\"<br />\\n\":\"<br>\\n\"},y.softbreak=function(e,t,r){return r.breaks?r.xhtmlOut?\"<br />\\n\":\"<br>\\n\":\"\\n\"},y.text=function(e,t){return k(e[t].content)},y.htmlblock=function(e,t){return e[t].content},y.htmltag=function(e,t){return e[t].content},y.abbr_open=function(e,t){return'<abbr title=\"'+k(g(e[t].title))+'\">'},y.abbr_close=function(){return\"</abbr>\"},y.footnote_ref=function(e,t){var r=Number(e[t].id+1).toString(),n=\"fnref\"+r;return e[t].subId>0&&(n+=\":\"+e[t].subId),'<sup class=\"footnote-ref\"><a href=\"#fn'+r+'\" id=\"'+n+'\">['+r+\"]</a></sup>\"},y.footnote_block_open=function(e,t,r){return(r.xhtmlOut?'<hr class=\"footnotes-sep\" />\\n':'<hr class=\"footnotes-sep\">\\n')+'<section class=\"footnotes\">\\n<ol class=\"footnotes-list\">\\n'},y.footnote_block_close=function(){return\"</ol>\\n</section>\\n\"},y.footnote_open=function(e,t){return'<li id=\"fn'+Number(e[t].id+1).toString()+'\"  class=\"footnote-item\">'},y.footnote_close=function(){return\"</li>\\n\"},y.footnote_anchor=function(e,t){var r=\"fnref\"+Number(e[t].id+1).toString();return e[t].subId>0&&(r+=\":\"+e[t].subId),' <a href=\"#'+r+'\" class=\"footnote-backref\">↩</a>'},y.dl_open=function(){return\"<dl>\\n\"},y.dt_open=function(){return\"<dt>\"},y.dd_open=function(){return\"<dd>\"},y.dl_close=function(){return\"</dl>\\n\"},y.dt_close=function(){return\"</dt>\\n\"},y.dd_close=function(){return\"</dd>\\n\"};var x=y.getBreak=function(e,t){return(t=function e(t,r){return++r>=t.length-2?r:\"paragraph_open\"===t[r].type&&t[r].tight&&\"inline\"===t[r+1].type&&0===t[r+1].content.length&&\"paragraph_close\"===t[r+2].type&&t[r+2].tight?e(t,r+2):r}(e,t))<e.length&&\"list_item_close\"===e[t].type?\"\":\"\\n\"};function w(){this.rules=i({},y),this.getBreak=y.getBreak}function C(){this.__rules__=[],this.__cache__=null}function E(e,t,r,n,o){this.src=e,this.env=n,this.options=r,this.parser=t,this.tokens=o,this.pos=0,this.posMax=this.src.length,this.level=0,this.pending=\"\",this.pendingLevel=0,this.cache=[],this.isInLabel=!1,this.linkLevel=0,this.linkContent=\"\",this.labelUnmatchedScopes=0}function D(e,t){var r,n,o,s=-1,i=e.posMax,a=e.pos,u=e.isInLabel;if(e.isInLabel)return-1;if(e.labelUnmatchedScopes)return e.labelUnmatchedScopes--,-1;for(e.pos=t+1,e.isInLabel=!0,r=1;e.pos<i;){if(91===(o=e.src.charCodeAt(e.pos)))r++;else if(93===o&&0===--r){n=!0;break}e.parser.skipToken(e)}return n?(s=e.pos,e.labelUnmatchedScopes=0):e.labelUnmatchedScopes=r-1,e.pos=a,e.isInLabel=u,s}function _(e,t,r,n){var o,s,i,a,u,l;if(42!==e.charCodeAt(0))return-1;if(91!==e.charCodeAt(1))return-1;if(-1===e.indexOf(\"]:\"))return-1;if((s=D(o=new E(e,t,r,n,[]),1))<0||58!==e.charCodeAt(s+1))return-1;for(a=o.posMax,i=s+2;i<a&&10!==o.src.charCodeAt(i);i++);return u=e.slice(2,s),0===(l=e.slice(s+2,i).trim()).length?-1:(n.abbreviations||(n.abbreviations={}),void 0===n.abbreviations[\":\"+u]&&(n.abbreviations[\":\"+u]=l),i)}function B(e){var t=g(e);try{t=decodeURI(t)}catch(e){}return encodeURI(t)}function q(e,t){var r,n,o,s=t,i=e.posMax;if(60===e.src.charCodeAt(t)){for(t++;t<i;){if(10===(r=e.src.charCodeAt(t)))return!1;if(62===r)return o=B(u(e.src.slice(s+1,t))),!!e.parser.validateLink(o)&&(e.pos=t+1,e.linkContent=o,!0);92===r&&t+1<i?t+=2:t++}return!1}for(n=0;t<i&&32!==(r=e.src.charCodeAt(t))&&!(r<32||127===r);)if(92===r&&t+1<i)t+=2;else{if(40===r&&++n>1)break;if(41===r&&--n<0)break;t++}return s!==t&&(o=u(e.src.slice(s,t)),!!e.parser.validateLink(o)&&(e.linkContent=o,e.pos=t,!0))}function F(e,t){var r,n=t,o=e.posMax,s=e.src.charCodeAt(t);if(34!==s&&39!==s&&40!==s)return!1;for(t++,40===s&&(s=41);t<o;){if((r=e.src.charCodeAt(t))===s)return e.pos=t+1,e.linkContent=u(e.src.slice(n+1,t)),!0;92===r&&t+1<o?t+=2:t++}return!1}function M(e){return e.trim().replace(/\\s+/g,\" \").toUpperCase()}function S(e,t,r,n){var o,s,i,a,u,l,c,p,h;if(91!==e.charCodeAt(0))return-1;if(-1===e.indexOf(\"]:\"))return-1;if((s=D(o=new E(e,t,r,n,[]),0))<0||58!==e.charCodeAt(s+1))return-1;for(a=o.posMax,i=s+2;i<a&&(32===(u=o.src.charCodeAt(i))||10===u);i++);if(!q(o,i))return-1;for(c=o.linkContent,l=i=o.pos,i+=1;i<a&&(32===(u=o.src.charCodeAt(i))||10===u);i++);for(i<a&&l!==i&&F(o,i)?(p=o.linkContent,i=o.pos):(p=\"\",i=l);i<a&&32===o.src.charCodeAt(i);)i++;return i<a&&10!==o.src.charCodeAt(i)?-1:(h=M(e.slice(1,s)),void 0===n.references[h]&&(n.references[h]={title:p,href:c}),i)}w.prototype.renderInline=function(e,t,r){for(var n=this.rules,o=e.length,s=0,i=\"\";o--;)i+=n[e[s].type](e,s++,t,r,this);return i},w.prototype.render=function(e,t,r){for(var n=this.rules,o=e.length,s=-1,i=\"\";++s<o;)\"inline\"===e[s].type?i+=this.renderInline(e[s].children,t,r):i+=n[e[s].type](e,s,t,r,this);return i},C.prototype.__find__=function(e){for(var t=this.__rules__.length,r=-1;t--;)if(this.__rules__[++r].name===e)return r;return-1},C.prototype.__compile__=function(){var e=this,t=[\"\"];e.__rules__.forEach(function(e){e.enabled&&e.alt.forEach(function(e){t.indexOf(e)<0&&t.push(e)})}),e.__cache__={},t.forEach(function(t){e.__cache__[t]=[],e.__rules__.forEach(function(r){r.enabled&&(t&&r.alt.indexOf(t)<0||e.__cache__[t].push(r.fn))})})},C.prototype.at=function(e,t,r){var n=this.__find__(e),o=r||{};if(-1===n)throw new Error(\"Parser rule not found: \"+e);this.__rules__[n].fn=t,this.__rules__[n].alt=o.alt||[],this.__cache__=null},C.prototype.before=function(e,t,r,n){var o=this.__find__(e),s=n||{};if(-1===o)throw new Error(\"Parser rule not found: \"+e);this.__rules__.splice(o,0,{name:t,enabled:!0,fn:r,alt:s.alt||[]}),this.__cache__=null},C.prototype.after=function(e,t,r,n){var o=this.__find__(e),s=n||{};if(-1===o)throw new Error(\"Parser rule not found: \"+e);this.__rules__.splice(o+1,0,{name:t,enabled:!0,fn:r,alt:s.alt||[]}),this.__cache__=null},C.prototype.push=function(e,t,r){var n=r||{};this.__rules__.push({name:e,enabled:!0,fn:t,alt:n.alt||[]}),this.__cache__=null},C.prototype.enable=function(e,t){e=Array.isArray(e)?e:[e],t&&this.__rules__.forEach(function(e){e.enabled=!1}),e.forEach(function(e){var t=this.__find__(e);if(t<0)throw new Error(\"Rules manager: invalid rule name \"+e);this.__rules__[t].enabled=!0},this),this.__cache__=null},C.prototype.disable=function(e){(e=Array.isArray(e)?e:[e]).forEach(function(e){var t=this.__find__(e);if(t<0)throw new Error(\"Rules manager: invalid rule name \"+e);this.__rules__[t].enabled=!1},this),this.__cache__=null},C.prototype.getRules=function(e){return null===this.__cache__&&this.__compile__(),this.__cache__[e]||[]},E.prototype.pushPending=function(){this.tokens.push({type:\"text\",content:this.pending,level:this.pendingLevel}),this.pending=\"\"},E.prototype.push=function(e){this.pending&&this.pushPending(),this.tokens.push(e),this.pendingLevel=this.level},E.prototype.cacheSet=function(e,t){for(var r=this.cache.length;r<=e;r++)this.cache.push(0);this.cache[e]=t},E.prototype.cacheGet=function(e){return e<this.cache.length?this.cache[e]:0};var T=\" \\n()[]'\\\".,!?-\";function L(e){return e.replace(/([-()\\[\\]{}+?*.$\\^|,:#<!\\\\])/g,\"\\\\$1\")}var R=/\\+-|\\.\\.|\\?\\?\\?\\?|!!!!|,,|--/,N=/\\((c|tm|r|p)\\)/gi,z={c:\"©\",r:\"®\",p:\"§\",tm:\"™\"};var P=/['\"]/,j=/['\"]/g,I=/[-\\s()\\[\\]]/,O=\"’\";function U(e,t){return!(t<0||t>=e.length)&&!I.test(e[t])}function H(e,t,r){return e.substr(0,t)+r+e.substr(t+1)}var V=[[\"block\",function(e){e.inlineMode?e.tokens.push({type:\"inline\",content:e.src.replace(/\\n/g,\" \").trim(),level:0,lines:[0,1],children:[]}):e.block.parse(e.src,e.options,e.env,e.tokens)}],[\"abbr\",function(e){var t,r,n,o,s=e.tokens;if(!e.inlineMode)for(t=1,r=s.length-1;t<r;t++)if(\"paragraph_open\"===s[t-1].type&&\"inline\"===s[t].type&&\"paragraph_close\"===s[t+1].type){for(n=s[t].content;n.length&&!((o=_(n,e.inline,e.options,e.env))<0);)n=n.slice(o).trim();s[t].content=n,n.length||(s[t-1].tight=!0,s[t+1].tight=!0)}}],[\"references\",function(e){var t,r,n,o,s=e.tokens;if(e.env.references=e.env.references||{},!e.inlineMode)for(t=1,r=s.length-1;t<r;t++)if(\"inline\"===s[t].type&&\"paragraph_open\"===s[t-1].type&&\"paragraph_close\"===s[t+1].type){for(n=s[t].content;n.length&&!((o=S(n,e.inline,e.options,e.env))<0);)n=n.slice(o).trim();s[t].content=n,n.length||(s[t-1].tight=!0,s[t+1].tight=!0)}}],[\"inline\",function(e){var t,r,n,o=e.tokens;for(r=0,n=o.length;r<n;r++)\"inline\"===(t=o[r]).type&&e.inline.parse(t.content,e.options,e.env,t.children)}],[\"footnote_tail\",function(e){var t,r,n,o,s,i,a,u,l,c=0,p=!1,h={};if(e.env.footnotes&&(e.tokens=e.tokens.filter(function(e){return\"footnote_reference_open\"===e.type?(p=!0,u=[],l=e.label,!1):\"footnote_reference_close\"===e.type?(p=!1,h[\":\"+l]=u,!1):(p&&u.push(e),!p)}),e.env.footnotes.list)){for(i=e.env.footnotes.list,e.tokens.push({type:\"footnote_block_open\",level:c++}),t=0,r=i.length;t<r;t++){for(e.tokens.push({type:\"footnote_open\",id:t,level:c++}),i[t].tokens?((a=[]).push({type:\"paragraph_open\",tight:!1,level:c++}),a.push({type:\"inline\",content:\"\",level:c,children:i[t].tokens}),a.push({type:\"paragraph_close\",tight:!1,level:--c})):i[t].label&&(a=h[\":\"+i[t].label]),e.tokens=e.tokens.concat(a),s=\"paragraph_close\"===e.tokens[e.tokens.length-1].type?e.tokens.pop():null,o=i[t].count>0?i[t].count:1,n=0;n<o;n++)e.tokens.push({type:\"footnote_anchor\",id:t,subId:n,level:c});s&&e.tokens.push(s),e.tokens.push({type:\"footnote_close\",level:--c})}e.tokens.push({type:\"footnote_block_close\",level:--c})}}],[\"abbr2\",function(e){var t,r,n,o,s,i,a,u,l,c,p,h,f=e.tokens;if(e.env.abbreviations)for(e.env.abbrRegExp||(h=\"(^|[\"+T.split(\"\").map(L).join(\"\")+\"])(\"+Object.keys(e.env.abbreviations).map(function(e){return e.substr(1)}).sort(function(e,t){return t.length-e.length}).map(L).join(\"|\")+\")($|[\"+T.split(\"\").map(L).join(\"\")+\"])\",e.env.abbrRegExp=new RegExp(h,\"g\")),c=e.env.abbrRegExp,r=0,n=f.length;r<n;r++)if(\"inline\"===f[r].type)for(t=(o=f[r].children).length-1;t>=0;t--)if(\"text\"===(s=o[t]).type){for(u=0,i=s.content,c.lastIndex=0,l=s.level,a=[];p=c.exec(i);)c.lastIndex>u&&a.push({type:\"text\",content:i.slice(u,p.index+p[1].length),level:l}),a.push({type:\"abbr_open\",title:e.env.abbreviations[\":\"+p[2]],level:l++}),a.push({type:\"text\",content:p[2],level:l}),a.push({type:\"abbr_close\",level:--l}),u=c.lastIndex-p[3].length;a.length&&(u<i.length&&a.push({type:\"text\",content:i.slice(u),level:l}),f[r].children=o=[].concat(o.slice(0,t),a,o.slice(t+1)))}}],[\"replacements\",function(e){var t,r,n,o,s,i;if(e.options.typographer)for(s=e.tokens.length-1;s>=0;s--)if(\"inline\"===e.tokens[s].type)for(t=(o=e.tokens[s].children).length-1;t>=0;t--)\"text\"===(r=o[t]).type&&(n=r.content,n=(i=n).indexOf(\"(\")<0?i:i.replace(N,function(e,t){return z[t.toLowerCase()]}),R.test(n)&&(n=n.replace(/\\+-/g,\"±\").replace(/\\.{2,}/g,\"…\").replace(/([?!])…/g,\"$1..\").replace(/([?!]){4,}/g,\"$1$1$1\").replace(/,{2,}/g,\",\").replace(/(^|[^-])---([^-]|$)/gm,\"$1—$2\").replace(/(^|\\s)--(\\s|$)/gm,\"$1–$2\").replace(/(^|[^-\\s])--([^-\\s]|$)/gm,\"$1–$2\")),r.content=n)}],[\"smartquotes\",function(e){var t,r,n,o,s,i,a,u,l,c,p,h,f,g,d,m,b;if(e.options.typographer)for(b=[],d=e.tokens.length-1;d>=0;d--)if(\"inline\"===e.tokens[d].type)for(m=e.tokens[d].children,b.length=0,t=0;t<m.length;t++)if(\"text\"===(r=m[t]).type&&!P.test(r.text)){for(a=m[t].level,f=b.length-1;f>=0&&!(b[f].level<=a);f--);b.length=f+1,s=0,i=(n=r.content).length;e:for(;s<i&&(j.lastIndex=s,o=j.exec(n));)if(u=!U(n,o.index-1),s=o.index+1,g=\"'\"===o[0],(l=!U(n,s))||u){if(p=!l,h=!u)for(f=b.length-1;f>=0&&(c=b[f],!(b[f].level<a));f--)if(c.single===g&&b[f].level===a){c=b[f],g?(m[c.token].content=H(m[c.token].content,c.pos,e.options.quotes[2]),r.content=H(r.content,o.index,e.options.quotes[3])):(m[c.token].content=H(m[c.token].content,c.pos,e.options.quotes[0]),r.content=H(r.content,o.index,e.options.quotes[1])),b.length=f;continue e}p?b.push({token:t,pos:o.index,single:g,level:a}):h&&g&&(r.content=H(r.content,o.index,O))}else g&&(r.content=H(r.content,o.index,O))}}]];function G(){this.options={},this.ruler=new C;for(var e=0;e<V.length;e++)this.ruler.push(V[e][0],V[e][1])}function $(e,t,r,n,o){var s,i,a,u,l,c,p;for(this.src=e,this.parser=t,this.options=r,this.env=n,this.tokens=o,this.bMarks=[],this.eMarks=[],this.tShift=[],this.blkIndent=0,this.line=0,this.lineMax=0,this.tight=!1,this.parentType=\"root\",this.ddIndent=-1,this.level=0,this.result=\"\",c=0,p=!1,a=u=c=0,l=(i=this.src).length;u<l;u++){if(s=i.charCodeAt(u),!p){if(32===s){c++;continue}p=!0}10!==s&&u!==l-1||(10!==s&&u++,this.bMarks.push(a),this.eMarks.push(u),this.tShift.push(c),p=!1,c=0,a=u+1)}this.bMarks.push(i.length),this.eMarks.push(i.length),this.tShift.push(0),this.lineMax=this.bMarks.length-1}function Z(e,t){var r,n,o;return(n=e.bMarks[t]+e.tShift[t])>=(o=e.eMarks[t])?-1:42!==(r=e.src.charCodeAt(n++))&&45!==r&&43!==r?-1:n<o&&32!==e.src.charCodeAt(n)?-1:n}function W(e,t){var r,n=e.bMarks[t]+e.tShift[t],o=e.eMarks[t];if(n+1>=o)return-1;if((r=e.src.charCodeAt(n++))<48||r>57)return-1;for(;;){if(n>=o)return-1;if(!((r=e.src.charCodeAt(n++))>=48&&r<=57)){if(41===r||46===r)break;return-1}}return n<o&&32!==e.src.charCodeAt(n)?-1:n}G.prototype.process=function(e){var t,r,n;for(t=0,r=(n=this.ruler.getRules(\"\")).length;t<r;t++)n[t](e)},$.prototype.isEmpty=function(e){return this.bMarks[e]+this.tShift[e]>=this.eMarks[e]},$.prototype.skipEmptyLines=function(e){for(var t=this.lineMax;e<t&&!(this.bMarks[e]+this.tShift[e]<this.eMarks[e]);e++);return e},$.prototype.skipSpaces=function(e){for(var t=this.src.length;e<t&&32===this.src.charCodeAt(e);e++);return e},$.prototype.skipChars=function(e,t){for(var r=this.src.length;e<r&&this.src.charCodeAt(e)===t;e++);return e},$.prototype.skipCharsBack=function(e,t,r){if(e<=r)return e;for(;e>r;)if(t!==this.src.charCodeAt(--e))return e+1;return e},$.prototype.getLines=function(e,t,r,n){var o,s,i,a,u,l=e;if(e>=t)return\"\";if(l+1===t)return s=this.bMarks[l]+Math.min(this.tShift[l],r),i=n?this.eMarks[l]+1:this.eMarks[l],this.src.slice(s,i);for(a=new Array(t-e),o=0;l<t;l++,o++)(u=this.tShift[l])>r&&(u=r),u<0&&(u=0),s=this.bMarks[l]+u,i=l+1<t||n?this.eMarks[l]+1:this.eMarks[l],a[o]=this.src.slice(s,i);return a.join(\"\")};var J={};[\"article\",\"aside\",\"button\",\"blockquote\",\"body\",\"canvas\",\"caption\",\"col\",\"colgroup\",\"dd\",\"div\",\"dl\",\"dt\",\"embed\",\"fieldset\",\"figcaption\",\"figure\",\"footer\",\"form\",\"h1\",\"h2\",\"h3\",\"h4\",\"h5\",\"h6\",\"header\",\"hgroup\",\"hr\",\"iframe\",\"li\",\"map\",\"object\",\"ol\",\"output\",\"p\",\"pre\",\"progress\",\"script\",\"section\",\"style\",\"table\",\"tbody\",\"td\",\"textarea\",\"tfoot\",\"th\",\"tr\",\"thead\",\"ul\",\"video\"].forEach(function(e){J[e]=!0});var Y=/^<([a-zA-Z]{1,15})[\\s\\/>]/,K=/^<\\/([a-zA-Z]{1,15})[\\s>]/;function Q(e,t){var r=e.bMarks[t]+e.blkIndent,n=e.eMarks[t];return e.src.substr(r,n-r)}function X(e,t){var r,n,o=e.bMarks[t]+e.tShift[t],s=e.eMarks[t];return o>=s?-1:126!==(n=e.src.charCodeAt(o++))&&58!==n?-1:o===(r=e.skipSpaces(o))?-1:r>=s?-1:r}var ee=[[\"code\",function(e,t,r){var n,o;if(e.tShift[t]-e.blkIndent<4)return!1;for(o=n=t+1;n<r;)if(e.isEmpty(n))n++;else{if(!(e.tShift[n]-e.blkIndent>=4))break;o=++n}return e.line=n,e.tokens.push({type:\"code\",content:e.getLines(t,o,4+e.blkIndent,!0),block:!0,lines:[t,e.line],level:e.level}),!0}],[\"fences\",function(e,t,r,n){var o,s,i,a,u,l=!1,c=e.bMarks[t]+e.tShift[t],p=e.eMarks[t];if(c+3>p)return!1;if(126!==(o=e.src.charCodeAt(c))&&96!==o)return!1;if(u=c,(s=(c=e.skipChars(c,o))-u)<3)return!1;if((i=e.src.slice(c,p).trim()).indexOf(\"`\")>=0)return!1;if(n)return!0;for(a=t;!(++a>=r||(c=u=e.bMarks[a]+e.tShift[a])<(p=e.eMarks[a])&&e.tShift[a]<e.blkIndent);)if(e.src.charCodeAt(c)===o&&!(e.tShift[a]-e.blkIndent>=4||(c=e.skipChars(c,o))-u<s||(c=e.skipSpaces(c))<p)){l=!0;break}return s=e.tShift[t],e.line=a+(l?1:0),e.tokens.push({type:\"fence\",params:i,content:e.getLines(t+1,a,s,!0),lines:[t,e.line],level:e.level}),!0},[\"paragraph\",\"blockquote\",\"list\"]],[\"blockquote\",function(e,t,r,n){var o,s,i,a,u,l,c,p,h,f,g,d=e.bMarks[t]+e.tShift[t],m=e.eMarks[t];if(d>m)return!1;if(62!==e.src.charCodeAt(d++))return!1;if(e.level>=e.options.maxNesting)return!1;if(n)return!0;for(32===e.src.charCodeAt(d)&&d++,u=e.blkIndent,e.blkIndent=0,a=[e.bMarks[t]],e.bMarks[t]=d,s=(d=d<m?e.skipSpaces(d):d)>=m,i=[e.tShift[t]],e.tShift[t]=d-e.bMarks[t],p=e.parser.ruler.getRules(\"blockquote\"),o=t+1;o<r&&!((d=e.bMarks[o]+e.tShift[o])>=(m=e.eMarks[o]));o++)if(62!==e.src.charCodeAt(d++)){if(s)break;for(g=!1,h=0,f=p.length;h<f;h++)if(p[h](e,o,r,!0)){g=!0;break}if(g)break;a.push(e.bMarks[o]),i.push(e.tShift[o]),e.tShift[o]=-1337}else 32===e.src.charCodeAt(d)&&d++,a.push(e.bMarks[o]),e.bMarks[o]=d,s=(d=d<m?e.skipSpaces(d):d)>=m,i.push(e.tShift[o]),e.tShift[o]=d-e.bMarks[o];for(l=e.parentType,e.parentType=\"blockquote\",e.tokens.push({type:\"blockquote_open\",lines:c=[t,0],level:e.level++}),e.parser.tokenize(e,t,o),e.tokens.push({type:\"blockquote_close\",level:--e.level}),e.parentType=l,c[1]=e.line,h=0;h<i.length;h++)e.bMarks[h+t]=a[h],e.tShift[h+t]=i[h];return e.blkIndent=u,!0},[\"paragraph\",\"blockquote\",\"list\"]],[\"hr\",function(e,t,r,n){var o,s,i,a=e.bMarks[t],u=e.eMarks[t];if((a+=e.tShift[t])>u)return!1;if(42!==(o=e.src.charCodeAt(a++))&&45!==o&&95!==o)return!1;for(s=1;a<u;){if((i=e.src.charCodeAt(a++))!==o&&32!==i)return!1;i===o&&s++}return!(s<3||!n&&(e.line=t+1,e.tokens.push({type:\"hr\",lines:[t,e.line],level:e.level}),0))},[\"paragraph\",\"blockquote\",\"list\"]],[\"list\",function(e,t,r,n){var o,s,i,a,u,l,c,p,h,f,g,d,m,b,v,k,A,y,x,w,C,E=!0;if((p=W(e,t))>=0)d=!0;else{if(!((p=Z(e,t))>=0))return!1;d=!1}if(e.level>=e.options.maxNesting)return!1;if(g=e.src.charCodeAt(p-1),n)return!0;for(b=e.tokens.length,d?(c=e.bMarks[t]+e.tShift[t],f=Number(e.src.substr(c,p-c-1)),e.tokens.push({type:\"ordered_list_open\",order:f,lines:k=[t,0],level:e.level++})):e.tokens.push({type:\"bullet_list_open\",lines:k=[t,0],level:e.level++}),o=t,v=!1,y=e.parser.ruler.getRules(\"list\");!(!(o<r)||((h=(m=e.skipSpaces(p))>=e.eMarks[o]?1:m-p)>4&&(h=1),h<1&&(h=1),s=p-e.bMarks[o]+h,e.tokens.push({type:\"list_item_open\",lines:A=[t,0],level:e.level++}),a=e.blkIndent,u=e.tight,i=e.tShift[t],l=e.parentType,e.tShift[t]=m-e.bMarks[t],e.blkIndent=s,e.tight=!0,e.parentType=\"list\",e.parser.tokenize(e,t,r,!0),e.tight&&!v||(E=!1),v=e.line-t>1&&e.isEmpty(e.line-1),e.blkIndent=a,e.tShift[t]=i,e.tight=u,e.parentType=l,e.tokens.push({type:\"list_item_close\",level:--e.level}),o=t=e.line,A[1]=o,m=e.bMarks[t],o>=r)||e.isEmpty(o)||e.tShift[o]<e.blkIndent);){for(C=!1,x=0,w=y.length;x<w;x++)if(y[x](e,o,r,!0)){C=!0;break}if(C)break;if(d){if((p=W(e,o))<0)break}else if((p=Z(e,o))<0)break;if(g!==e.src.charCodeAt(p-1))break}return e.tokens.push({type:d?\"ordered_list_close\":\"bullet_list_close\",level:--e.level}),k[1]=o,e.line=o,E&&function(e,t){var r,n,o=e.level+2;for(r=t+2,n=e.tokens.length-2;r<n;r++)e.tokens[r].level===o&&\"paragraph_open\"===e.tokens[r].type&&(e.tokens[r+2].tight=!0,e.tokens[r].tight=!0,r+=2)}(e,b),!0},[\"paragraph\",\"blockquote\"]],[\"footnote\",function(e,t,r,n){var o,s,i,a,u,l=e.bMarks[t]+e.tShift[t],c=e.eMarks[t];if(l+4>c)return!1;if(91!==e.src.charCodeAt(l))return!1;if(94!==e.src.charCodeAt(l+1))return!1;if(e.level>=e.options.maxNesting)return!1;for(a=l+2;a<c;a++){if(32===e.src.charCodeAt(a))return!1;if(93===e.src.charCodeAt(a))break}return!(a===l+2||a+1>=c||58!==e.src.charCodeAt(++a)||!n&&(a++,e.env.footnotes||(e.env.footnotes={}),e.env.footnotes.refs||(e.env.footnotes.refs={}),u=e.src.slice(l+2,a-2),e.env.footnotes.refs[\":\"+u]=-1,e.tokens.push({type:\"footnote_reference_open\",label:u,level:e.level++}),o=e.bMarks[t],s=e.tShift[t],i=e.parentType,e.tShift[t]=e.skipSpaces(a)-a,e.bMarks[t]=a,e.blkIndent+=4,e.parentType=\"footnote\",e.tShift[t]<e.blkIndent&&(e.tShift[t]+=e.blkIndent,e.bMarks[t]-=e.blkIndent),e.parser.tokenize(e,t,r,!0),e.parentType=i,e.blkIndent-=4,e.tShift[t]=s,e.bMarks[t]=o,e.tokens.push({type:\"footnote_reference_close\",level:--e.level}),0))},[\"paragraph\"]],[\"heading\",function(e,t,r,n){var o,s,i,a=e.bMarks[t]+e.tShift[t],u=e.eMarks[t];if(a>=u)return!1;if(35!==(o=e.src.charCodeAt(a))||a>=u)return!1;for(s=1,o=e.src.charCodeAt(++a);35===o&&a<u&&s<=6;)s++,o=e.src.charCodeAt(++a);return!(s>6||a<u&&32!==o||!n&&(u=e.skipCharsBack(u,32,a),(i=e.skipCharsBack(u,35,a))>a&&32===e.src.charCodeAt(i-1)&&(u=i),e.line=t+1,e.tokens.push({type:\"heading_open\",hLevel:s,lines:[t,e.line],level:e.level}),a<u&&e.tokens.push({type:\"inline\",content:e.src.slice(a,u).trim(),level:e.level+1,lines:[t,e.line],children:[]}),e.tokens.push({type:\"heading_close\",hLevel:s,level:e.level}),0))},[\"paragraph\",\"blockquote\"]],[\"lheading\",function(e,t,r){var n,o,s,i=t+1;return!(i>=r||e.tShift[i]<e.blkIndent||e.tShift[i]-e.blkIndent>3||(o=e.bMarks[i]+e.tShift[i])>=(s=e.eMarks[i])||45!==(n=e.src.charCodeAt(o))&&61!==n||(o=e.skipChars(o,n),(o=e.skipSpaces(o))<s||(o=e.bMarks[t]+e.tShift[t],e.line=i+1,e.tokens.push({type:\"heading_open\",hLevel:61===n?1:2,lines:[t,e.line],level:e.level}),e.tokens.push({type:\"inline\",content:e.src.slice(o,e.eMarks[t]).trim(),level:e.level+1,lines:[t,e.line-1],children:[]}),e.tokens.push({type:\"heading_close\",hLevel:61===n?1:2,level:e.level}),0)))}],[\"htmlblock\",function(e,t,r,n){var o,s,i,a=e.bMarks[t],u=e.eMarks[t],l=e.tShift[t];if(a+=l,!e.options.html)return!1;if(l>3||a+2>=u)return!1;if(60!==e.src.charCodeAt(a))return!1;if(33===(o=e.src.charCodeAt(a+1))||63===o){if(n)return!0}else{if(47!==o&&!function(e){var t=32|e;return t>=97&&t<=122}(o))return!1;if(47===o){if(!(s=e.src.slice(a,u).match(K)))return!1}else if(!(s=e.src.slice(a,u).match(Y)))return!1;if(!0!==J[s[1].toLowerCase()])return!1;if(n)return!0}for(i=t+1;i<e.lineMax&&!e.isEmpty(i);)i++;return e.line=i,e.tokens.push({type:\"htmlblock\",level:e.level,lines:[t,e.line],content:e.getLines(t,i,0,!0)}),!0},[\"paragraph\",\"blockquote\"]],[\"table\",function(e,t,r,n){var o,s,i,a,u,l,c,p,h,f,g;if(t+2>r)return!1;if(u=t+1,e.tShift[u]<e.blkIndent)return!1;if((i=e.bMarks[u]+e.tShift[u])>=e.eMarks[u])return!1;if(124!==(o=e.src.charCodeAt(i))&&45!==o&&58!==o)return!1;if(s=Q(e,t+1),!/^[-:| ]+$/.test(s))return!1;if((l=s.split(\"|\"))<=2)return!1;for(p=[],a=0;a<l.length;a++){if(!(h=l[a].trim())){if(0===a||a===l.length-1)continue;return!1}if(!/^:?-+:?$/.test(h))return!1;58===h.charCodeAt(h.length-1)?p.push(58===h.charCodeAt(0)?\"center\":\"right\"):58===h.charCodeAt(0)?p.push(\"left\"):p.push(\"\")}if(-1===(s=Q(e,t).trim()).indexOf(\"|\"))return!1;if(l=s.replace(/^\\||\\|$/g,\"\").split(\"|\"),p.length!==l.length)return!1;if(n)return!0;for(e.tokens.push({type:\"table_open\",lines:f=[t,0],level:e.level++}),e.tokens.push({type:\"thead_open\",lines:[t,t+1],level:e.level++}),e.tokens.push({type:\"tr_open\",lines:[t,t+1],level:e.level++}),a=0;a<l.length;a++)e.tokens.push({type:\"th_open\",align:p[a],lines:[t,t+1],level:e.level++}),e.tokens.push({type:\"inline\",content:l[a].trim(),lines:[t,t+1],level:e.level,children:[]}),e.tokens.push({type:\"th_close\",level:--e.level});for(e.tokens.push({type:\"tr_close\",level:--e.level}),e.tokens.push({type:\"thead_close\",level:--e.level}),e.tokens.push({type:\"tbody_open\",lines:g=[t+2,0],level:e.level++}),u=t+2;u<r&&!(e.tShift[u]<e.blkIndent)&&-1!==(s=Q(e,u).trim()).indexOf(\"|\");u++){for(l=s.replace(/^\\||\\|$/g,\"\").split(\"|\"),e.tokens.push({type:\"tr_open\",level:e.level++}),a=0;a<l.length;a++)e.tokens.push({type:\"td_open\",align:p[a],level:e.level++}),c=l[a].substring(124===l[a].charCodeAt(0)?1:0,124===l[a].charCodeAt(l[a].length-1)?l[a].length-1:l[a].length).trim(),e.tokens.push({type:\"inline\",content:c,level:e.level,children:[]}),e.tokens.push({type:\"td_close\",level:--e.level});e.tokens.push({type:\"tr_close\",level:--e.level})}return e.tokens.push({type:\"tbody_close\",level:--e.level}),e.tokens.push({type:\"table_close\",level:--e.level}),f[1]=g[1]=u,e.line=u,!0},[\"paragraph\"]],[\"deflist\",function(e,t,r,n){var o,s,i,a,u,l,c,p,h,f,g,d,m,b;if(n)return!(e.ddIndent<0)&&X(e,t)>=0;if(c=t+1,e.isEmpty(c)&&++c>r)return!1;if(e.tShift[c]<e.blkIndent)return!1;if((o=X(e,c))<0)return!1;if(e.level>=e.options.maxNesting)return!1;l=e.tokens.length,e.tokens.push({type:\"dl_open\",lines:u=[t,0],level:e.level++}),i=t,s=c;e:for(;;){for(b=!0,m=!1,e.tokens.push({type:\"dt_open\",lines:[i,i],level:e.level++}),e.tokens.push({type:\"inline\",content:e.getLines(i,i+1,e.blkIndent,!1).trim(),level:e.level+1,lines:[i,i],children:[]}),e.tokens.push({type:\"dt_close\",level:--e.level});;){if(e.tokens.push({type:\"dd_open\",lines:a=[c,0],level:e.level++}),d=e.tight,h=e.ddIndent,p=e.blkIndent,g=e.tShift[s],f=e.parentType,e.blkIndent=e.ddIndent=e.tShift[s]+2,e.tShift[s]=o-e.bMarks[s],e.tight=!0,e.parentType=\"deflist\",e.parser.tokenize(e,s,r,!0),e.tight&&!m||(b=!1),m=e.line-s>1&&e.isEmpty(e.line-1),e.tShift[s]=g,e.tight=d,e.parentType=f,e.blkIndent=p,e.ddIndent=h,e.tokens.push({type:\"dd_close\",level:--e.level}),a[1]=c=e.line,c>=r)break e;if(e.tShift[c]<e.blkIndent)break e;if((o=X(e,c))<0)break;s=c}if(c>=r)break;if(i=c,e.isEmpty(i))break;if(e.tShift[i]<e.blkIndent)break;if((s=i+1)>=r)break;if(e.isEmpty(s)&&s++,s>=r)break;if(e.tShift[s]<e.blkIndent)break;if((o=X(e,s))<0)break}return e.tokens.push({type:\"dl_close\",level:--e.level}),u[1]=c,e.line=c,b&&function(e,t){var r,n,o=e.level+2;for(r=t+2,n=e.tokens.length-2;r<n;r++)e.tokens[r].level===o&&\"paragraph_open\"===e.tokens[r].type&&(e.tokens[r+2].tight=!0,e.tokens[r].tight=!0,r+=2)}(e,l),!0},[\"paragraph\"]],[\"paragraph\",function(e,t){var r,n,o,s,i,a,u=t+1;if(u<(r=e.lineMax)&&!e.isEmpty(u))for(a=e.parser.ruler.getRules(\"paragraph\");u<r&&!e.isEmpty(u);u++)if(!(e.tShift[u]-e.blkIndent>3)){for(o=!1,s=0,i=a.length;s<i;s++)if(a[s](e,u,r,!0)){o=!0;break}if(o)break}return n=e.getLines(t,u,e.blkIndent,!1).trim(),e.line=u,n.length&&(e.tokens.push({type:\"paragraph_open\",tight:!1,lines:[t,e.line],level:e.level}),e.tokens.push({type:\"inline\",content:n,level:e.level+1,lines:[t,e.line],children:[]}),e.tokens.push({type:\"paragraph_close\",tight:!1,level:e.level})),!0}]];function te(){this.ruler=new C;for(var e=0;e<ee.length;e++)this.ruler.push(ee[e][0],ee[e][1],{alt:(ee[e][2]||[]).slice()})}te.prototype.tokenize=function(e,t,r){for(var n,o=this.ruler.getRules(\"\"),s=o.length,i=t,a=!1;i<r&&(e.line=i=e.skipEmptyLines(i),!(i>=r))&&!(e.tShift[i]<e.blkIndent);){for(n=0;n<s&&!o[n](e,i,r,!1);n++);if(e.tight=!a,e.isEmpty(e.line-1)&&(a=!0),(i=e.line)<r&&e.isEmpty(i)){if(a=!0,++i<r&&\"list\"===e.parentType&&e.isEmpty(i))break;e.line=i}}};var re=/[\\n\\t]/g,ne=/\\r[\\n\\u0085]|[\\u2424\\u2028\\u0085]/g,oe=/\\u00a0/g;function se(e){switch(e){case 10:case 92:case 96:case 42:case 95:case 94:case 91:case 93:case 33:case 38:case 60:case 62:case 123:case 125:case 36:case 37:case 64:case 126:case 43:case 61:case 58:return!0;default:return!1}}te.prototype.parse=function(e,t,r,n){var o,s=0,i=0;if(!e)return[];(e=(e=e.replace(oe,\" \")).replace(ne,\"\\n\")).indexOf(\"\\t\")>=0&&(e=e.replace(re,function(t,r){var n;return 10===e.charCodeAt(r)?(s=r+1,i=0,t):(n=\"    \".slice((r-s-i)%4),i=r-s+1,n)})),o=new $(e,this,t,r,n),this.tokenize(o,o.line,o.lineMax)};for(var ie=[],ae=0;ae<256;ae++)ie.push(0);function ue(e){return e>=48&&e<=57||e>=65&&e<=90||e>=97&&e<=122}function le(e,t){var r,n,o,s=t,i=!0,a=!0,u=e.posMax,l=e.src.charCodeAt(t);for(r=t>0?e.src.charCodeAt(t-1):-1;s<u&&e.src.charCodeAt(s)===l;)s++;return s>=u&&(i=!1),(o=s-t)>=4?i=a=!1:(32!==(n=s<u?e.src.charCodeAt(s):-1)&&10!==n||(i=!1),32!==r&&10!==r||(a=!1),95===l&&(ue(r)&&(i=!1),ue(n)&&(a=!1))),{can_open:i,can_close:a,delims:o}}\"\\\\!\\\"#$%&'()*+,./:;<=>?@[]^_`{|}~-\".split(\"\").forEach(function(e){ie[e.charCodeAt(0)]=1});var ce=/\\\\([ \\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;var pe=/\\\\([ \\\\!\"#$%&'()*+,.\\/:;<=>?@[\\]^_`{|}~-])/g;var he=[\"coap\",\"doi\",\"javascript\",\"aaa\",\"aaas\",\"about\",\"acap\",\"cap\",\"cid\",\"crid\",\"data\",\"dav\",\"dict\",\"dns\",\"file\",\"ftp\",\"geo\",\"go\",\"gopher\",\"h323\",\"http\",\"https\",\"iax\",\"icap\",\"im\",\"imap\",\"info\",\"ipp\",\"iris\",\"iris.beep\",\"iris.xpc\",\"iris.xpcs\",\"iris.lwz\",\"ldap\",\"mailto\",\"mid\",\"msrp\",\"msrps\",\"mtqp\",\"mupdate\",\"news\",\"nfs\",\"ni\",\"nih\",\"nntp\",\"opaquelocktoken\",\"pop\",\"pres\",\"rtsp\",\"service\",\"session\",\"shttp\",\"sieve\",\"sip\",\"sips\",\"sms\",\"snmp\",\"soap.beep\",\"soap.beeps\",\"tag\",\"tel\",\"telnet\",\"tftp\",\"thismessage\",\"tn3270\",\"tip\",\"tv\",\"urn\",\"vemmi\",\"ws\",\"wss\",\"xcon\",\"xcon-userid\",\"xmlrpc.beep\",\"xmlrpc.beeps\",\"xmpp\",\"z39.50r\",\"z39.50s\",\"adiumxtra\",\"afp\",\"afs\",\"aim\",\"apt\",\"attachment\",\"aw\",\"beshare\",\"bitcoin\",\"bolo\",\"callto\",\"chrome\",\"chrome-extension\",\"com-eventbrite-attendee\",\"content\",\"cvs\",\"dlna-playsingle\",\"dlna-playcontainer\",\"dtn\",\"dvb\",\"ed2k\",\"facetime\",\"feed\",\"finger\",\"fish\",\"gg\",\"git\",\"gizmoproject\",\"gtalk\",\"hcp\",\"icon\",\"ipn\",\"irc\",\"irc6\",\"ircs\",\"itms\",\"jar\",\"jms\",\"keyparc\",\"lastfm\",\"ldaps\",\"magnet\",\"maps\",\"market\",\"message\",\"mms\",\"ms-help\",\"msnim\",\"mumble\",\"mvn\",\"notes\",\"oid\",\"palm\",\"paparazzi\",\"platform\",\"proxy\",\"psyc\",\"query\",\"res\",\"resource\",\"rmi\",\"rsync\",\"rtmp\",\"secondlife\",\"sftp\",\"sgn\",\"skype\",\"smb\",\"soldat\",\"spotify\",\"ssh\",\"steam\",\"svn\",\"teamspeak\",\"things\",\"udp\",\"unreal\",\"ut2004\",\"ventrilo\",\"view-source\",\"webcal\",\"wtai\",\"wyciwyg\",\"xfire\",\"xri\",\"ymsgr\"],fe=/^<([a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/,ge=/^<([a-zA-Z.\\-]{1,25}):([^<>\\x00-\\x20]*)>/;function de(e,t){return e=e.source,t=t||\"\",function r(n,o){return n?(o=o.source||o,e=e.replace(n,o),r):new RegExp(e,t)}}var me=de(/(?:unquoted|single_quoted|double_quoted)/)(\"unquoted\",/[^\"'=<>`\\x00-\\x20]+/)(\"single_quoted\",/'[^']*'/)(\"double_quoted\",/\"[^\"]*\"/)(),be=de(/(?:\\s+attr_name(?:\\s*=\\s*attr_value)?)/)(\"attr_name\",/[a-zA-Z_:][a-zA-Z0-9:._-]*/)(\"attr_value\",me)(),ve=de(/<[A-Za-z][A-Za-z0-9]*attribute*\\s*\\/?>/)(\"attribute\",be)(),ke=de(/^(?:open_tag|close_tag|comment|processing|declaration|cdata)/)(\"open_tag\",ve)(\"close_tag\",/<\\/[A-Za-z][A-Za-z0-9]*\\s*>/)(\"comment\",/<!---->|<!--(?:-?[^>-])(?:-?[^-])*-->/)(\"processing\",/<[?].*?[?]>/)(\"declaration\",/<![A-Z]+\\s+[^>]*>/)(\"cdata\",/<!\\[CDATA\\[[\\s\\S]*?\\]\\]>/)();var Ae=/^&#((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i,ye=/^&([a-z][a-z0-9]{1,31});/i;var xe=[[\"text\",function(e,t){for(var r=e.pos;r<e.posMax&&!se(e.src.charCodeAt(r));)r++;return r!==e.pos&&(t||(e.pending+=e.src.slice(e.pos,r)),e.pos=r,!0)}],[\"newline\",function(e,t){var r,n,o=e.pos;if(10!==e.src.charCodeAt(o))return!1;if(r=e.pending.length-1,n=e.posMax,!t)if(r>=0&&32===e.pending.charCodeAt(r))if(r>=1&&32===e.pending.charCodeAt(r-1)){for(var s=r-2;s>=0;s--)if(32!==e.pending.charCodeAt(s)){e.pending=e.pending.substring(0,s+1);break}e.push({type:\"hardbreak\",level:e.level})}else e.pending=e.pending.slice(0,-1),e.push({type:\"softbreak\",level:e.level});else e.push({type:\"softbreak\",level:e.level});for(o++;o<n&&32===e.src.charCodeAt(o);)o++;return e.pos=o,!0}],[\"escape\",function(e,t){var r,n=e.pos,o=e.posMax;if(92!==e.src.charCodeAt(n))return!1;if(++n<o){if((r=e.src.charCodeAt(n))<256&&0!==ie[r])return t||(e.pending+=e.src[n]),e.pos+=2,!0;if(10===r){for(t||e.push({type:\"hardbreak\",level:e.level}),n++;n<o&&32===e.src.charCodeAt(n);)n++;return e.pos=n,!0}}return t||(e.pending+=\"\\\\\"),e.pos++,!0}],[\"backticks\",function(e,t){var r,n,o,s,i,a=e.pos;if(96!==e.src.charCodeAt(a))return!1;for(r=a,a++,n=e.posMax;a<n&&96===e.src.charCodeAt(a);)a++;for(o=e.src.slice(r,a),s=i=a;-1!==(s=e.src.indexOf(\"`\",i));){for(i=s+1;i<n&&96===e.src.charCodeAt(i);)i++;if(i-s===o.length)return t||e.push({type:\"code\",content:e.src.slice(a,s).replace(/[ \\n]+/g,\" \").trim(),block:!1,level:e.level}),e.pos=i,!0}return t||(e.pending+=o),e.pos+=o.length,!0}],[\"del\",function(e,t){var r,n,o,s,i,a=e.posMax,u=e.pos;if(126!==e.src.charCodeAt(u))return!1;if(t)return!1;if(u+4>=a)return!1;if(126!==e.src.charCodeAt(u+1))return!1;if(e.level>=e.options.maxNesting)return!1;if(s=u>0?e.src.charCodeAt(u-1):-1,i=e.src.charCodeAt(u+2),126===s)return!1;if(126===i)return!1;if(32===i||10===i)return!1;for(n=u+2;n<a&&126===e.src.charCodeAt(n);)n++;if(n>u+3)return e.pos+=n-u,t||(e.pending+=e.src.slice(u,n)),!0;for(e.pos=u+2,o=1;e.pos+1<a;){if(126===e.src.charCodeAt(e.pos)&&126===e.src.charCodeAt(e.pos+1)&&(s=e.src.charCodeAt(e.pos-1),126!==(i=e.pos+2<a?e.src.charCodeAt(e.pos+2):-1)&&126!==s&&(32!==s&&10!==s?o--:32!==i&&10!==i&&o++,o<=0))){r=!0;break}e.parser.skipToken(e)}return r?(e.posMax=e.pos,e.pos=u+2,t||(e.push({type:\"del_open\",level:e.level++}),e.parser.tokenize(e),e.push({type:\"del_close\",level:--e.level})),e.pos=e.posMax+2,e.posMax=a,!0):(e.pos=u,!1)}],[\"ins\",function(e,t){var r,n,o,s,i,a=e.posMax,u=e.pos;if(43!==e.src.charCodeAt(u))return!1;if(t)return!1;if(u+4>=a)return!1;if(43!==e.src.charCodeAt(u+1))return!1;if(e.level>=e.options.maxNesting)return!1;if(s=u>0?e.src.charCodeAt(u-1):-1,i=e.src.charCodeAt(u+2),43===s)return!1;if(43===i)return!1;if(32===i||10===i)return!1;for(n=u+2;n<a&&43===e.src.charCodeAt(n);)n++;if(n!==u+2)return e.pos+=n-u,t||(e.pending+=e.src.slice(u,n)),!0;for(e.pos=u+2,o=1;e.pos+1<a;){if(43===e.src.charCodeAt(e.pos)&&43===e.src.charCodeAt(e.pos+1)&&(s=e.src.charCodeAt(e.pos-1),43!==(i=e.pos+2<a?e.src.charCodeAt(e.pos+2):-1)&&43!==s&&(32!==s&&10!==s?o--:32!==i&&10!==i&&o++,o<=0))){r=!0;break}e.parser.skipToken(e)}return r?(e.posMax=e.pos,e.pos=u+2,t||(e.push({type:\"ins_open\",level:e.level++}),e.parser.tokenize(e),e.push({type:\"ins_close\",level:--e.level})),e.pos=e.posMax+2,e.posMax=a,!0):(e.pos=u,!1)}],[\"mark\",function(e,t){var r,n,o,s,i,a=e.posMax,u=e.pos;if(61!==e.src.charCodeAt(u))return!1;if(t)return!1;if(u+4>=a)return!1;if(61!==e.src.charCodeAt(u+1))return!1;if(e.level>=e.options.maxNesting)return!1;if(s=u>0?e.src.charCodeAt(u-1):-1,i=e.src.charCodeAt(u+2),61===s)return!1;if(61===i)return!1;if(32===i||10===i)return!1;for(n=u+2;n<a&&61===e.src.charCodeAt(n);)n++;if(n!==u+2)return e.pos+=n-u,t||(e.pending+=e.src.slice(u,n)),!0;for(e.pos=u+2,o=1;e.pos+1<a;){if(61===e.src.charCodeAt(e.pos)&&61===e.src.charCodeAt(e.pos+1)&&(s=e.src.charCodeAt(e.pos-1),61!==(i=e.pos+2<a?e.src.charCodeAt(e.pos+2):-1)&&61!==s&&(32!==s&&10!==s?o--:32!==i&&10!==i&&o++,o<=0))){r=!0;break}e.parser.skipToken(e)}return r?(e.posMax=e.pos,e.pos=u+2,t||(e.push({type:\"mark_open\",level:e.level++}),e.parser.tokenize(e),e.push({type:\"mark_close\",level:--e.level})),e.pos=e.posMax+2,e.posMax=a,!0):(e.pos=u,!1)}],[\"emphasis\",function(e,t){var r,n,o,s,i,a,u,l=e.posMax,c=e.pos,p=e.src.charCodeAt(c);if(95!==p&&42!==p)return!1;if(t)return!1;if(r=(u=le(e,c)).delims,!u.can_open)return e.pos+=r,t||(e.pending+=e.src.slice(c,e.pos)),!0;if(e.level>=e.options.maxNesting)return!1;for(e.pos=c+r,a=[r];e.pos<l;)if(e.src.charCodeAt(e.pos)!==p)e.parser.skipToken(e);else{if(n=(u=le(e,e.pos)).delims,u.can_close){for(s=a.pop(),i=n;s!==i;){if(i<s){a.push(s-i);break}if(i-=s,0===a.length)break;e.pos+=s,s=a.pop()}if(0===a.length){r=s,o=!0;break}e.pos+=n;continue}u.can_open&&a.push(n),e.pos+=n}return o?(e.posMax=e.pos,e.pos=c+r,t||(2!==r&&3!==r||e.push({type:\"strong_open\",level:e.level++}),1!==r&&3!==r||e.push({type:\"em_open\",level:e.level++}),e.parser.tokenize(e),1!==r&&3!==r||e.push({type:\"em_close\",level:--e.level}),2!==r&&3!==r||e.push({type:\"strong_close\",level:--e.level})),e.pos=e.posMax+r,e.posMax=l,!0):(e.pos=c,!1)}],[\"sub\",function(e,t){var r,n,o=e.posMax,s=e.pos;if(126!==e.src.charCodeAt(s))return!1;if(t)return!1;if(s+2>=o)return!1;if(e.level>=e.options.maxNesting)return!1;for(e.pos=s+1;e.pos<o;){if(126===e.src.charCodeAt(e.pos)){r=!0;break}e.parser.skipToken(e)}return r&&s+1!==e.pos?(n=e.src.slice(s+1,e.pos)).match(/(^|[^\\\\])(\\\\\\\\)*\\s/)?(e.pos=s,!1):(e.posMax=e.pos,e.pos=s+1,t||e.push({type:\"sub\",level:e.level,content:n.replace(ce,\"$1\")}),e.pos=e.posMax+1,e.posMax=o,!0):(e.pos=s,!1)}],[\"sup\",function(e,t){var r,n,o=e.posMax,s=e.pos;if(94!==e.src.charCodeAt(s))return!1;if(t)return!1;if(s+2>=o)return!1;if(e.level>=e.options.maxNesting)return!1;for(e.pos=s+1;e.pos<o;){if(94===e.src.charCodeAt(e.pos)){r=!0;break}e.parser.skipToken(e)}return r&&s+1!==e.pos?(n=e.src.slice(s+1,e.pos)).match(/(^|[^\\\\])(\\\\\\\\)*\\s/)?(e.pos=s,!1):(e.posMax=e.pos,e.pos=s+1,t||e.push({type:\"sup\",level:e.level,content:n.replace(pe,\"$1\")}),e.pos=e.posMax+1,e.posMax=o,!0):(e.pos=s,!1)}],[\"links\",function(e,t){var r,n,o,s,i,a,u,l,c=!1,p=e.pos,h=e.posMax,f=e.pos,g=e.src.charCodeAt(f);if(33===g&&(c=!0,g=e.src.charCodeAt(++f)),91!==g)return!1;if(e.level>=e.options.maxNesting)return!1;if(r=f+1,(n=D(e,f))<0)return!1;if((a=n+1)<h&&40===e.src.charCodeAt(a)){for(a++;a<h&&(32===(l=e.src.charCodeAt(a))||10===l);a++);if(a>=h)return!1;for(f=a,q(e,a)?(s=e.linkContent,a=e.pos):s=\"\",f=a;a<h&&(32===(l=e.src.charCodeAt(a))||10===l);a++);if(a<h&&f!==a&&F(e,a))for(i=e.linkContent,a=e.pos;a<h&&(32===(l=e.src.charCodeAt(a))||10===l);a++);else i=\"\";if(a>=h||41!==e.src.charCodeAt(a))return e.pos=p,!1;a++}else{if(e.linkLevel>0)return!1;for(;a<h&&(32===(l=e.src.charCodeAt(a))||10===l);a++);if(a<h&&91===e.src.charCodeAt(a)&&(f=a+1,(a=D(e,a))>=0?o=e.src.slice(f,a++):a=f-1),o||(void 0===o&&(a=n+1),o=e.src.slice(r,n)),!(u=e.env.references[M(o)]))return e.pos=p,!1;s=u.href,i=u.title}return t||(e.pos=r,e.posMax=n,c?e.push({type:\"image\",src:s,title:i,alt:e.src.substr(r,n-r),level:e.level}):(e.push({type:\"link_open\",href:s,title:i,level:e.level++}),e.linkLevel++,e.parser.tokenize(e),e.linkLevel--,e.push({type:\"link_close\",level:--e.level}))),e.pos=a,e.posMax=h,!0}],[\"footnote_inline\",function(e,t){var r,n,o,s,i=e.posMax,a=e.pos;return!(a+2>=i||94!==e.src.charCodeAt(a)||91!==e.src.charCodeAt(a+1)||e.level>=e.options.maxNesting||(r=a+2,(n=D(e,a+1))<0||(t||(e.env.footnotes||(e.env.footnotes={}),e.env.footnotes.list||(e.env.footnotes.list=[]),o=e.env.footnotes.list.length,e.pos=r,e.posMax=n,e.push({type:\"footnote_ref\",id:o,level:e.level}),e.linkLevel++,s=e.tokens.length,e.parser.tokenize(e),e.env.footnotes.list[o]={tokens:e.tokens.splice(s)},e.linkLevel--),e.pos=n+1,e.posMax=i,0)))}],[\"footnote_ref\",function(e,t){var r,n,o,s,i=e.posMax,a=e.pos;if(a+3>i)return!1;if(!e.env.footnotes||!e.env.footnotes.refs)return!1;if(91!==e.src.charCodeAt(a))return!1;if(94!==e.src.charCodeAt(a+1))return!1;if(e.level>=e.options.maxNesting)return!1;for(n=a+2;n<i;n++){if(32===e.src.charCodeAt(n))return!1;if(10===e.src.charCodeAt(n))return!1;if(93===e.src.charCodeAt(n))break}return!(n===a+2||n>=i||(n++,r=e.src.slice(a+2,n-1),void 0===e.env.footnotes.refs[\":\"+r]||(t||(e.env.footnotes.list||(e.env.footnotes.list=[]),e.env.footnotes.refs[\":\"+r]<0?(o=e.env.footnotes.list.length,e.env.footnotes.list[o]={label:r,count:0},e.env.footnotes.refs[\":\"+r]=o):o=e.env.footnotes.refs[\":\"+r],s=e.env.footnotes.list[o].count,e.env.footnotes.list[o].count++,e.push({type:\"footnote_ref\",id:o,subId:s,level:e.level})),e.pos=n,e.posMax=i,0)))}],[\"autolink\",function(e,t){var r,n,o,s,i,a=e.pos;return!(60!==e.src.charCodeAt(a)||(r=e.src.slice(a)).indexOf(\">\")<0||((n=r.match(ge))?he.indexOf(n[1].toLowerCase())<0||(i=B(s=n[0].slice(1,-1)),!e.parser.validateLink(s)||(t||(e.push({type:\"link_open\",href:i,level:e.level}),e.push({type:\"text\",content:s,level:e.level+1}),e.push({type:\"link_close\",level:e.level})),e.pos+=n[0].length,0)):!(o=r.match(fe))||(i=B(\"mailto:\"+(s=o[0].slice(1,-1))),!e.parser.validateLink(i)||(t||(e.push({type:\"link_open\",href:i,level:e.level}),e.push({type:\"text\",content:s,level:e.level+1}),e.push({type:\"link_close\",level:e.level})),e.pos+=o[0].length,0))))}],[\"htmltag\",function(e,t){var r,n,o,s=e.pos;return!(!e.options.html||(o=e.posMax,60!==e.src.charCodeAt(s)||s+2>=o||33!==(r=e.src.charCodeAt(s+1))&&63!==r&&47!==r&&!function(e){var t=32|e;return t>=97&&t<=122}(r)||!(n=e.src.slice(s).match(ke))||(t||e.push({type:\"htmltag\",content:e.src.slice(s,s+n[0].length),level:e.level}),e.pos+=n[0].length,0)))}],[\"entity\",function(e,t){var r,o,s=e.pos,i=e.posMax;if(38!==e.src.charCodeAt(s))return!1;if(s+1<i)if(35===e.src.charCodeAt(s+1)){if(o=e.src.slice(s).match(Ae))return t||(r=\"x\"===o[1][0].toLowerCase()?parseInt(o[1].slice(1),16):parseInt(o[1],10),e.pending+=l(r)?c(r):c(65533)),e.pos+=o[0].length,!0}else if(o=e.src.slice(s).match(ye)){var a=n(o[1]);if(o[1]!==a)return t||(e.pending+=a),e.pos+=o[0].length,!0}return t||(e.pending+=\"&\"),e.pos++,!0}]];function we(){this.ruler=new C;for(var e=0;e<xe.length;e++)this.ruler.push(xe[e][0],xe[e][1]);this.validateLink=Ce}function Ce(e){var t=e.trim().toLowerCase();return-1===(t=g(t)).indexOf(\":\")||-1===[\"vbscript\",\"javascript\",\"file\",\"data\"].indexOf(t.split(\":\")[0])}we.prototype.skipToken=function(e){var t,r,n=this.ruler.getRules(\"\"),o=n.length,s=e.pos;if((r=e.cacheGet(s))>0)e.pos=r;else{for(t=0;t<o;t++)if(n[t](e,!0))return void e.cacheSet(s,e.pos);e.pos++,e.cacheSet(s,e.pos)}},we.prototype.tokenize=function(e){for(var t,r,n=this.ruler.getRules(\"\"),o=n.length,s=e.posMax;e.pos<s;){for(r=0;r<o&&!(t=n[r](e,!1));r++);if(t){if(e.pos>=s)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},we.prototype.parse=function(e,t,r,n){var o=new E(e,this,t,r,n);this.tokenize(o)};var Ee={default:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:\"language-\",linkTarget:\"\",typographer:!1,quotes:\"“”‘’\",highlight:null,maxNesting:20},components:{core:{rules:[\"block\",\"inline\",\"references\",\"replacements\",\"smartquotes\",\"references\",\"abbr2\",\"footnote_tail\"]},block:{rules:[\"blockquote\",\"code\",\"fences\",\"footnote\",\"heading\",\"hr\",\"htmlblock\",\"lheading\",\"list\",\"paragraph\",\"table\"]},inline:{rules:[\"autolink\",\"backticks\",\"del\",\"emphasis\",\"entity\",\"escape\",\"footnote_ref\",\"htmltag\",\"links\",\"newline\",\"text\"]}}},full:{options:{html:!1,xhtmlOut:!1,breaks:!1,langPrefix:\"language-\",linkTarget:\"\",typographer:!1,quotes:\"“”‘’\",highlight:null,maxNesting:20},components:{core:{},block:{},inline:{}}},commonmark:{options:{html:!0,xhtmlOut:!0,breaks:!1,langPrefix:\"language-\",linkTarget:\"\",typographer:!1,quotes:\"“”‘’\",highlight:null,maxNesting:20},components:{core:{rules:[\"block\",\"inline\",\"references\",\"abbr2\"]},block:{rules:[\"blockquote\",\"code\",\"fences\",\"heading\",\"hr\",\"htmlblock\",\"lheading\",\"list\",\"paragraph\"]},inline:{rules:[\"autolink\",\"backticks\",\"emphasis\",\"entity\",\"escape\",\"htmltag\",\"links\",\"newline\",\"text\"]}}}};function De(e,t,r){this.src=t,this.env=r,this.options=e.options,this.tokens=[],this.inlineMode=!1,this.inline=e.inline,this.block=e.block,this.renderer=e.renderer,this.typographer=e.typographer}function _e(e,t){\"string\"!=typeof e&&(t=e,e=\"default\"),t&&null!=t.linkify&&console.warn(\"linkify option is removed. Use linkify plugin instead:\\n\\nimport Remarkable from 'remarkable';\\nimport linkify from 'remarkable/linkify';\\nnew Remarkable().use(linkify)\\n\"),this.inline=new we,this.block=new te,this.core=new G,this.renderer=new w,this.ruler=new C,this.options={},this.configure(Ee[e]),this.set(t||{})}function Be(e,t){if(Array.prototype.indexOf)return e.indexOf(t);for(var r=0,n=e.length;r<n;r++)if(e[r]===t)return r;return-1}function qe(e,t){for(var r=e.length-1;r>=0;r--)!0===t(e[r])&&e.splice(r,1)}function Fe(e){throw new Error(\"Unhandled case for value: '\"+e+\"'\")}_e.prototype.set=function(e){i(this.options,e)},_e.prototype.configure=function(e){var t=this;if(!e)throw new Error(\"Wrong `remarkable` preset, check name/content\");e.options&&t.set(e.options),e.components&&Object.keys(e.components).forEach(function(r){e.components[r].rules&&t[r].ruler.enable(e.components[r].rules,!0)})},_e.prototype.use=function(e,t){return e(this,t),this},_e.prototype.parse=function(e,t){var r=new De(this,e,t);return this.core.process(r),r.tokens},_e.prototype.render=function(e,t){return t=t||{},this.renderer.render(this.parse(e,t),this.options,t)},_e.prototype.parseInline=function(e,t){var r=new De(this,e,t);return r.inlineMode=!0,this.core.process(r),r.tokens},_e.prototype.renderInline=function(e,t){return t=t||{},this.renderer.render(this.parseInline(e,t),this.options,t)};var Me=function(){function e(e){void 0===e&&(e={}),this.tagName=\"\",this.attrs={},this.innerHTML=\"\",this.whitespaceRegex=/\\s+/,this.tagName=e.tagName||\"\",this.attrs=e.attrs||{},this.innerHTML=e.innerHtml||e.innerHTML||\"\"}return e.prototype.setTagName=function(e){return this.tagName=e,this},e.prototype.getTagName=function(){return this.tagName||\"\"},e.prototype.setAttr=function(e,t){return this.getAttrs()[e]=t,this},e.prototype.getAttr=function(e){return this.getAttrs()[e]},e.prototype.setAttrs=function(e){return Object.assign(this.getAttrs(),e),this},e.prototype.getAttrs=function(){return this.attrs||(this.attrs={})},e.prototype.setClass=function(e){return this.setAttr(\"class\",e)},e.prototype.addClass=function(e){for(var t,r=this.getClass(),n=this.whitespaceRegex,o=r?r.split(n):[],s=e.split(n);t=s.shift();)-1===Be(o,t)&&o.push(t);return this.getAttrs().class=o.join(\" \"),this},e.prototype.removeClass=function(e){for(var t,r=this.getClass(),n=this.whitespaceRegex,o=r?r.split(n):[],s=e.split(n);o.length&&(t=s.shift());){var i=Be(o,t);-1!==i&&o.splice(i,1)}return this.getAttrs().class=o.join(\" \"),this},e.prototype.getClass=function(){return this.getAttrs().class||\"\"},e.prototype.hasClass=function(e){return-1!==(\" \"+this.getClass()+\" \").indexOf(\" \"+e+\" \")},e.prototype.setInnerHTML=function(e){return this.innerHTML=e,this},e.prototype.setInnerHtml=function(e){return this.setInnerHTML(e)},e.prototype.getInnerHTML=function(){return this.innerHTML||\"\"},e.prototype.getInnerHtml=function(){return this.getInnerHTML()},e.prototype.toAnchorString=function(){var e=this.getTagName(),t=this.buildAttrsStr();return[\"<\",e,t=t?\" \"+t:\"\",\">\",this.getInnerHtml(),\"</\",e,\">\"].join(\"\")},e.prototype.buildAttrsStr=function(){if(!this.attrs)return\"\";var e=this.getAttrs(),t=[];for(var r in e)e.hasOwnProperty(r)&&t.push(r+'=\"'+e[r]+'\"');return t.join(\" \")},e}();var Se=function(){function e(e){void 0===e&&(e={}),this.newWindow=!1,this.truncate={},this.className=\"\",this.newWindow=e.newWindow||!1,this.truncate=e.truncate||{},this.className=e.className||\"\"}return e.prototype.build=function(e){return new Me({tagName:\"a\",attrs:this.createAttrs(e),innerHtml:this.processAnchorText(e.getAnchorText())})},e.prototype.createAttrs=function(e){var t={href:e.getAnchorHref()},r=this.createCssClass(e);return r&&(t.class=r),this.newWindow&&(t.target=\"_blank\",t.rel=\"noopener noreferrer\"),this.truncate&&this.truncate.length&&this.truncate.length<e.getAnchorText().length&&(t.title=e.getAnchorHref()),t},e.prototype.createCssClass=function(e){var t=this.className;if(t){for(var r=[t],n=e.getCssClassSuffixes(),o=0,s=n.length;o<s;o++)r.push(t+\"-\"+n[o]);return r.join(\" \")}return\"\"},e.prototype.processAnchorText=function(e){return e=this.doTruncate(e)},e.prototype.doTruncate=function(e){var t=this.truncate;if(!t||!t.length)return e;var r=t.length,n=t.location;return\"smart\"===n?function(e,t,r){var n,o;null==r?(r=\"&hellip;\",o=3,n=8):(o=r.length,n=r.length);var s=function(e){var t=\"\";return e.scheme&&e.host&&(t+=e.scheme+\"://\"),e.host&&(t+=e.host),e.path&&(t+=\"/\"+e.path),e.query&&(t+=\"?\"+e.query),e.fragment&&(t+=\"#\"+e.fragment),t},i=function(e,t){var n=t/2,o=Math.ceil(n),s=-1*Math.floor(n),i=\"\";return s<0&&(i=e.substr(s)),e.substr(0,o)+r+i};if(e.length<=t)return e;var a=t-o,u=function(e){var t={},r=e,n=r.match(/^([a-z]+):\\/\\//i);return n&&(t.scheme=n[1],r=r.substr(n[0].length)),(n=r.match(/^(.*?)(?=(\\?|#|\\/|$))/i))&&(t.host=n[1],r=r.substr(n[0].length)),(n=r.match(/^\\/(.*?)(?=(\\?|#|$))/i))&&(t.path=n[1],r=r.substr(n[0].length)),(n=r.match(/^\\?(.*?)(?=(#|$))/i))&&(t.query=n[1],r=r.substr(n[0].length)),(n=r.match(/^#(.*?)$/i))&&(t.fragment=n[1]),t}(e);if(u.query){var l=u.query.match(/^(.*?)(?=(\\?|\\#))(.*?)$/i);l&&(u.query=u.query.substr(0,l[1].length),e=s(u))}if(e.length<=t)return e;if(u.host&&(u.host=u.host.replace(/^www\\./,\"\"),e=s(u)),e.length<=t)return e;var c=\"\";if(u.host&&(c+=u.host),c.length>=a)return u.host.length==t?(u.host.substr(0,t-o)+r).substr(0,a+n):i(c,a).substr(0,a+n);var p=\"\";if(u.path&&(p+=\"/\"+u.path),u.query&&(p+=\"?\"+u.query),p){if((c+p).length>=a)return(c+p).length==t?(c+p).substr(0,t):(c+i(p,a-c.length)).substr(0,a+n);c+=p}if(u.fragment){var h=\"#\"+u.fragment;if((c+h).length>=a)return(c+h).length==t?(c+h).substr(0,t):(c+i(h,a-c.length)).substr(0,a+n);c+=h}if(u.scheme&&u.host){var f=u.scheme+\"://\";if((c+f).length<a)return(f+c).substr(0,t)}if(c.length<=t)return c;var g=\"\";return a>0&&(g=c.substr(-1*Math.floor(a/2))),(c.substr(0,Math.ceil(a/2))+r+g).substr(0,a+n)}(e,r):\"middle\"===n?function(e,t,r){if(e.length<=t)return e;var n,o;null==r?(r=\"&hellip;\",n=8,o=3):(n=r.length,o=r.length);var s=t-o,i=\"\";return s>0&&(i=e.substr(-1*Math.floor(s/2))),(e.substr(0,Math.ceil(s/2))+r+i).substr(0,s+n)}(e,r):function(e,t,r){return function(e,t,r){var n;return e.length>t&&(null==r?(r=\"&hellip;\",n=3):n=r.length,e=e.substring(0,t-n)+r),e}(e,t,r)}(e,r)},e}(),Te=function(){function e(e){this.__jsduckDummyDocProp=null,this.matchedText=\"\",this.offset=0,this.tagBuilder=e.tagBuilder,this.matchedText=e.matchedText,this.offset=e.offset}return e.prototype.getMatchedText=function(){return this.matchedText},e.prototype.setOffset=function(e){this.offset=e},e.prototype.getOffset=function(){return this.offset},e.prototype.getCssClassSuffixes=function(){return[this.getType()]},e.prototype.buildTag=function(){return this.tagBuilder.build(this)},e}(),Le=function(e,t){return(Le=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var r in t)t.hasOwnProperty(r)&&(e[r]=t[r])})(e,t)};function Re(e,t){function r(){this.constructor=e}Le(e,t),e.prototype=null===t?Object.create(t):(r.prototype=t.prototype,new r)}var Ne=function(){return(Ne=Object.assign||function(e){for(var t,r=1,n=arguments.length;r<n;r++)for(var o in t=arguments[r])Object.prototype.hasOwnProperty.call(t,o)&&(e[o]=t[o]);return e}).apply(this,arguments)},ze=function(e){function t(t){var r=e.call(this,t)||this;return r.email=\"\",r.email=t.email,r}return Re(t,e),t.prototype.getType=function(){return\"email\"},t.prototype.getEmail=function(){return this.email},t.prototype.getAnchorHref=function(){return\"mailto:\"+this.email},t.prototype.getAnchorText=function(){return this.email},t}(Te),Pe=function(e){function t(t){var r=e.call(this,t)||this;return r.serviceName=\"\",r.hashtag=\"\",r.serviceName=t.serviceName,r.hashtag=t.hashtag,r}return Re(t,e),t.prototype.getType=function(){return\"hashtag\"},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getHashtag=function(){return this.hashtag},t.prototype.getAnchorHref=function(){var e=this.serviceName,t=this.hashtag;switch(e){case\"twitter\":return\"https://twitter.com/hashtag/\"+t;case\"facebook\":return\"https://www.facebook.com/hashtag/\"+t;case\"instagram\":return\"https://instagram.com/explore/tags/\"+t;default:throw new Error(\"Unknown service name to point hashtag to: \"+e)}},t.prototype.getAnchorText=function(){return\"#\"+this.hashtag},t}(Te),je=function(e){function t(t){var r=e.call(this,t)||this;return r.serviceName=\"twitter\",r.mention=\"\",r.mention=t.mention,r.serviceName=t.serviceName,r}return Re(t,e),t.prototype.getType=function(){return\"mention\"},t.prototype.getMention=function(){return this.mention},t.prototype.getServiceName=function(){return this.serviceName},t.prototype.getAnchorHref=function(){switch(this.serviceName){case\"twitter\":return\"https://twitter.com/\"+this.mention;case\"instagram\":return\"https://instagram.com/\"+this.mention;case\"soundcloud\":return\"https://soundcloud.com/\"+this.mention;default:throw new Error(\"Unknown service name to point mention to: \"+this.serviceName)}},t.prototype.getAnchorText=function(){return\"@\"+this.mention},t.prototype.getCssClassSuffixes=function(){var t=e.prototype.getCssClassSuffixes.call(this),r=this.getServiceName();return r&&t.push(r),t},t}(Te),Ie=function(e){function t(t){var r=e.call(this,t)||this;return r.number=\"\",r.plusSign=!1,r.number=t.number,r.plusSign=t.plusSign,r}return Re(t,e),t.prototype.getType=function(){return\"phone\"},t.prototype.getPhoneNumber=function(){return this.number},t.prototype.getNumber=function(){return this.getPhoneNumber()},t.prototype.getAnchorHref=function(){return\"tel:\"+(this.plusSign?\"+\":\"\")+this.number},t.prototype.getAnchorText=function(){return this.matchedText},t}(Te),Oe=function(e){function t(t){var r=e.call(this,t)||this;return r.url=\"\",r.urlMatchType=\"scheme\",r.protocolUrlMatch=!1,r.protocolRelativeMatch=!1,r.stripPrefix={scheme:!0,www:!0},r.stripTrailingSlash=!0,r.decodePercentEncoding=!0,r.schemePrefixRegex=/^(https?:\\/\\/)?/i,r.wwwPrefixRegex=/^(https?:\\/\\/)?(www\\.)?/i,r.protocolRelativeRegex=/^\\/\\//,r.protocolPrepended=!1,r.urlMatchType=t.urlMatchType,r.url=t.url,r.protocolUrlMatch=t.protocolUrlMatch,r.protocolRelativeMatch=t.protocolRelativeMatch,r.stripPrefix=t.stripPrefix,r.stripTrailingSlash=t.stripTrailingSlash,r.decodePercentEncoding=t.decodePercentEncoding,r}return Re(t,e),t.prototype.getType=function(){return\"url\"},t.prototype.getUrlMatchType=function(){return this.urlMatchType},t.prototype.getUrl=function(){var e=this.url;return this.protocolRelativeMatch||this.protocolUrlMatch||this.protocolPrepended||(e=this.url=\"http://\"+e,this.protocolPrepended=!0),e},t.prototype.getAnchorHref=function(){return this.getUrl().replace(/&amp;/g,\"&\")},t.prototype.getAnchorText=function(){var e=this.getMatchedText();return this.protocolRelativeMatch&&(e=this.stripProtocolRelativePrefix(e)),this.stripPrefix.scheme&&(e=this.stripSchemePrefix(e)),this.stripPrefix.www&&(e=this.stripWwwPrefix(e)),this.stripTrailingSlash&&(e=this.removeTrailingSlash(e)),this.decodePercentEncoding&&(e=this.removePercentEncoding(e)),e},t.prototype.stripSchemePrefix=function(e){return e.replace(this.schemePrefixRegex,\"\")},t.prototype.stripWwwPrefix=function(e){return e.replace(this.wwwPrefixRegex,\"$1\")},t.prototype.stripProtocolRelativePrefix=function(e){return e.replace(this.protocolRelativeRegex,\"\")},t.prototype.removeTrailingSlash=function(e){return\"/\"===e.charAt(e.length-1)&&(e=e.slice(0,-1)),e},t.prototype.removePercentEncoding=function(e){var t=e.replace(/%22/gi,\"&quot;\").replace(/%26/gi,\"&amp;\").replace(/%27/gi,\"&#39;\").replace(/%3C/gi,\"&lt;\").replace(/%3E/gi,\"&gt;\");try{return decodeURIComponent(t)}catch(e){return t}},t}(Te),Ue=function(e){this.__jsduckDummyDocProp=null,this.tagBuilder=e.tagBuilder},He=/[A-Za-z]/,Ve=/[0-9]/,Ge=/\\s/,$e=/['\"]/,Ze=/[\\x00-\\x1F\\x7F]/,We=/A-Za-z\\xAA\\xB5\\xBA\\xC0-\\xD6\\xD8-\\xF6\\xF8-\\u02C1\\u02C6-\\u02D1\\u02E0-\\u02E4\\u02EC\\u02EE\\u0370-\\u0374\\u0376\\u0377\\u037A-\\u037D\\u037F\\u0386\\u0388-\\u038A\\u038C\\u038E-\\u03A1\\u03A3-\\u03F5\\u03F7-\\u0481\\u048A-\\u052F\\u0531-\\u0556\\u0559\\u0561-\\u0587\\u05D0-\\u05EA\\u05F0-\\u05F2\\u0620-\\u064A\\u066E\\u066F\\u0671-\\u06D3\\u06D5\\u06E5\\u06E6\\u06EE\\u06EF\\u06FA-\\u06FC\\u06FF\\u0710\\u0712-\\u072F\\u074D-\\u07A5\\u07B1\\u07CA-\\u07EA\\u07F4\\u07F5\\u07FA\\u0800-\\u0815\\u081A\\u0824\\u0828\\u0840-\\u0858\\u08A0-\\u08B4\\u08B6-\\u08BD\\u0904-\\u0939\\u093D\\u0950\\u0958-\\u0961\\u0971-\\u0980\\u0985-\\u098C\\u098F\\u0990\\u0993-\\u09A8\\u09AA-\\u09B0\\u09B2\\u09B6-\\u09B9\\u09BD\\u09CE\\u09DC\\u09DD\\u09DF-\\u09E1\\u09F0\\u09F1\\u0A05-\\u0A0A\\u0A0F\\u0A10\\u0A13-\\u0A28\\u0A2A-\\u0A30\\u0A32\\u0A33\\u0A35\\u0A36\\u0A38\\u0A39\\u0A59-\\u0A5C\\u0A5E\\u0A72-\\u0A74\\u0A85-\\u0A8D\\u0A8F-\\u0A91\\u0A93-\\u0AA8\\u0AAA-\\u0AB0\\u0AB2\\u0AB3\\u0AB5-\\u0AB9\\u0ABD\\u0AD0\\u0AE0\\u0AE1\\u0AF9\\u0B05-\\u0B0C\\u0B0F\\u0B10\\u0B13-\\u0B28\\u0B2A-\\u0B30\\u0B32\\u0B33\\u0B35-\\u0B39\\u0B3D\\u0B5C\\u0B5D\\u0B5F-\\u0B61\\u0B71\\u0B83\\u0B85-\\u0B8A\\u0B8E-\\u0B90\\u0B92-\\u0B95\\u0B99\\u0B9A\\u0B9C\\u0B9E\\u0B9F\\u0BA3\\u0BA4\\u0BA8-\\u0BAA\\u0BAE-\\u0BB9\\u0BD0\\u0C05-\\u0C0C\\u0C0E-\\u0C10\\u0C12-\\u0C28\\u0C2A-\\u0C39\\u0C3D\\u0C58-\\u0C5A\\u0C60\\u0C61\\u0C80\\u0C85-\\u0C8C\\u0C8E-\\u0C90\\u0C92-\\u0CA8\\u0CAA-\\u0CB3\\u0CB5-\\u0CB9\\u0CBD\\u0CDE\\u0CE0\\u0CE1\\u0CF1\\u0CF2\\u0D05-\\u0D0C\\u0D0E-\\u0D10\\u0D12-\\u0D3A\\u0D3D\\u0D4E\\u0D54-\\u0D56\\u0D5F-\\u0D61\\u0D7A-\\u0D7F\\u0D85-\\u0D96\\u0D9A-\\u0DB1\\u0DB3-\\u0DBB\\u0DBD\\u0DC0-\\u0DC6\\u0E01-\\u0E30\\u0E32\\u0E33\\u0E40-\\u0E46\\u0E81\\u0E82\\u0E84\\u0E87\\u0E88\\u0E8A\\u0E8D\\u0E94-\\u0E97\\u0E99-\\u0E9F\\u0EA1-\\u0EA3\\u0EA5\\u0EA7\\u0EAA\\u0EAB\\u0EAD-\\u0EB0\\u0EB2\\u0EB3\\u0EBD\\u0EC0-\\u0EC4\\u0EC6\\u0EDC-\\u0EDF\\u0F00\\u0F40-\\u0F47\\u0F49-\\u0F6C\\u0F88-\\u0F8C\\u1000-\\u102A\\u103F\\u1050-\\u1055\\u105A-\\u105D\\u1061\\u1065\\u1066\\u106E-\\u1070\\u1075-\\u1081\\u108E\\u10A0-\\u10C5\\u10C7\\u10CD\\u10D0-\\u10FA\\u10FC-\\u1248\\u124A-\\u124D\\u1250-\\u1256\\u1258\\u125A-\\u125D\\u1260-\\u1288\\u128A-\\u128D\\u1290-\\u12B0\\u12B2-\\u12B5\\u12B8-\\u12BE\\u12C0\\u12C2-\\u12C5\\u12C8-\\u12D6\\u12D8-\\u1310\\u1312-\\u1315\\u1318-\\u135A\\u1380-\\u138F\\u13A0-\\u13F5\\u13F8-\\u13FD\\u1401-\\u166C\\u166F-\\u167F\\u1681-\\u169A\\u16A0-\\u16EA\\u16F1-\\u16F8\\u1700-\\u170C\\u170E-\\u1711\\u1720-\\u1731\\u1740-\\u1751\\u1760-\\u176C\\u176E-\\u1770\\u1780-\\u17B3\\u17D7\\u17DC\\u1820-\\u1877\\u1880-\\u1884\\u1887-\\u18A8\\u18AA\\u18B0-\\u18F5\\u1900-\\u191E\\u1950-\\u196D\\u1970-\\u1974\\u1980-\\u19AB\\u19B0-\\u19C9\\u1A00-\\u1A16\\u1A20-\\u1A54\\u1AA7\\u1B05-\\u1B33\\u1B45-\\u1B4B\\u1B83-\\u1BA0\\u1BAE\\u1BAF\\u1BBA-\\u1BE5\\u1C00-\\u1C23\\u1C4D-\\u1C4F\\u1C5A-\\u1C7D\\u1C80-\\u1C88\\u1CE9-\\u1CEC\\u1CEE-\\u1CF1\\u1CF5\\u1CF6\\u1D00-\\u1DBF\\u1E00-\\u1F15\\u1F18-\\u1F1D\\u1F20-\\u1F45\\u1F48-\\u1F4D\\u1F50-\\u1F57\\u1F59\\u1F5B\\u1F5D\\u1F5F-\\u1F7D\\u1F80-\\u1FB4\\u1FB6-\\u1FBC\\u1FBE\\u1FC2-\\u1FC4\\u1FC6-\\u1FCC\\u1FD0-\\u1FD3\\u1FD6-\\u1FDB\\u1FE0-\\u1FEC\\u1FF2-\\u1FF4\\u1FF6-\\u1FFC\\u2071\\u207F\\u2090-\\u209C\\u2102\\u2107\\u210A-\\u2113\\u2115\\u2119-\\u211D\\u2124\\u2126\\u2128\\u212A-\\u212D\\u212F-\\u2139\\u213C-\\u213F\\u2145-\\u2149\\u214E\\u2183\\u2184\\u2C00-\\u2C2E\\u2C30-\\u2C5E\\u2C60-\\u2CE4\\u2CEB-\\u2CEE\\u2CF2\\u2CF3\\u2D00-\\u2D25\\u2D27\\u2D2D\\u2D30-\\u2D67\\u2D6F\\u2D80-\\u2D96\\u2DA0-\\u2DA6\\u2DA8-\\u2DAE\\u2DB0-\\u2DB6\\u2DB8-\\u2DBE\\u2DC0-\\u2DC6\\u2DC8-\\u2DCE\\u2DD0-\\u2DD6\\u2DD8-\\u2DDE\\u2E2F\\u3005\\u3006\\u3031-\\u3035\\u303B\\u303C\\u3041-\\u3096\\u309D-\\u309F\\u30A1-\\u30FA\\u30FC-\\u30FF\\u3105-\\u312D\\u3131-\\u318E\\u31A0-\\u31BA\\u31F0-\\u31FF\\u3400-\\u4DB5\\u4E00-\\u9FD5\\uA000-\\uA48C\\uA4D0-\\uA4FD\\uA500-\\uA60C\\uA610-\\uA61F\\uA62A\\uA62B\\uA640-\\uA66E\\uA67F-\\uA69D\\uA6A0-\\uA6E5\\uA717-\\uA71F\\uA722-\\uA788\\uA78B-\\uA7AE\\uA7B0-\\uA7B7\\uA7F7-\\uA801\\uA803-\\uA805\\uA807-\\uA80A\\uA80C-\\uA822\\uA840-\\uA873\\uA882-\\uA8B3\\uA8F2-\\uA8F7\\uA8FB\\uA8FD\\uA90A-\\uA925\\uA930-\\uA946\\uA960-\\uA97C\\uA984-\\uA9B2\\uA9CF\\uA9E0-\\uA9E4\\uA9E6-\\uA9EF\\uA9FA-\\uA9FE\\uAA00-\\uAA28\\uAA40-\\uAA42\\uAA44-\\uAA4B\\uAA60-\\uAA76\\uAA7A\\uAA7E-\\uAAAF\\uAAB1\\uAAB5\\uAAB6\\uAAB9-\\uAABD\\uAAC0\\uAAC2\\uAADB-\\uAADD\\uAAE0-\\uAAEA\\uAAF2-\\uAAF4\\uAB01-\\uAB06\\uAB09-\\uAB0E\\uAB11-\\uAB16\\uAB20-\\uAB26\\uAB28-\\uAB2E\\uAB30-\\uAB5A\\uAB5C-\\uAB65\\uAB70-\\uABE2\\uAC00-\\uD7A3\\uD7B0-\\uD7C6\\uD7CB-\\uD7FB\\uF900-\\uFA6D\\uFA70-\\uFAD9\\uFB00-\\uFB06\\uFB13-\\uFB17\\uFB1D\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE74\\uFE76-\\uFEFC\\uFF21-\\uFF3A\\uFF41-\\uFF5A\\uFF66-\\uFFBE\\uFFC2-\\uFFC7\\uFFCA-\\uFFCF\\uFFD2-\\uFFD7\\uFFDA-\\uFFDC/.source,Je=We+/\\u00a9\\u00ae\\u2000-\\u3300\\ud83c\\ud000-\\udfff\\ud83d\\ud000-\\udfff\\ud83e\\ud000-\\udfff/.source+/\\u0300-\\u036F\\u0483-\\u0489\\u0591-\\u05BD\\u05BF\\u05C1\\u05C2\\u05C4\\u05C5\\u05C7\\u0610-\\u061A\\u064B-\\u065F\\u0670\\u06D6-\\u06DC\\u06DF-\\u06E4\\u06E7\\u06E8\\u06EA-\\u06ED\\u0711\\u0730-\\u074A\\u07A6-\\u07B0\\u07EB-\\u07F3\\u0816-\\u0819\\u081B-\\u0823\\u0825-\\u0827\\u0829-\\u082D\\u0859-\\u085B\\u08D4-\\u08E1\\u08E3-\\u0903\\u093A-\\u093C\\u093E-\\u094F\\u0951-\\u0957\\u0962\\u0963\\u0981-\\u0983\\u09BC\\u09BE-\\u09C4\\u09C7\\u09C8\\u09CB-\\u09CD\\u09D7\\u09E2\\u09E3\\u0A01-\\u0A03\\u0A3C\\u0A3E-\\u0A42\\u0A47\\u0A48\\u0A4B-\\u0A4D\\u0A51\\u0A70\\u0A71\\u0A75\\u0A81-\\u0A83\\u0ABC\\u0ABE-\\u0AC5\\u0AC7-\\u0AC9\\u0ACB-\\u0ACD\\u0AE2\\u0AE3\\u0B01-\\u0B03\\u0B3C\\u0B3E-\\u0B44\\u0B47\\u0B48\\u0B4B-\\u0B4D\\u0B56\\u0B57\\u0B62\\u0B63\\u0B82\\u0BBE-\\u0BC2\\u0BC6-\\u0BC8\\u0BCA-\\u0BCD\\u0BD7\\u0C00-\\u0C03\\u0C3E-\\u0C44\\u0C46-\\u0C48\\u0C4A-\\u0C4D\\u0C55\\u0C56\\u0C62\\u0C63\\u0C81-\\u0C83\\u0CBC\\u0CBE-\\u0CC4\\u0CC6-\\u0CC8\\u0CCA-\\u0CCD\\u0CD5\\u0CD6\\u0CE2\\u0CE3\\u0D01-\\u0D03\\u0D3E-\\u0D44\\u0D46-\\u0D48\\u0D4A-\\u0D4D\\u0D57\\u0D62\\u0D63\\u0D82\\u0D83\\u0DCA\\u0DCF-\\u0DD4\\u0DD6\\u0DD8-\\u0DDF\\u0DF2\\u0DF3\\u0E31\\u0E34-\\u0E3A\\u0E47-\\u0E4E\\u0EB1\\u0EB4-\\u0EB9\\u0EBB\\u0EBC\\u0EC8-\\u0ECD\\u0F18\\u0F19\\u0F35\\u0F37\\u0F39\\u0F3E\\u0F3F\\u0F71-\\u0F84\\u0F86\\u0F87\\u0F8D-\\u0F97\\u0F99-\\u0FBC\\u0FC6\\u102B-\\u103E\\u1056-\\u1059\\u105E-\\u1060\\u1062-\\u1064\\u1067-\\u106D\\u1071-\\u1074\\u1082-\\u108D\\u108F\\u109A-\\u109D\\u135D-\\u135F\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17B4-\\u17D3\\u17DD\\u180B-\\u180D\\u1885\\u1886\\u18A9\\u1920-\\u192B\\u1930-\\u193B\\u1A17-\\u1A1B\\u1A55-\\u1A5E\\u1A60-\\u1A7C\\u1A7F\\u1AB0-\\u1ABE\\u1B00-\\u1B04\\u1B34-\\u1B44\\u1B6B-\\u1B73\\u1B80-\\u1B82\\u1BA1-\\u1BAD\\u1BE6-\\u1BF3\\u1C24-\\u1C37\\u1CD0-\\u1CD2\\u1CD4-\\u1CE8\\u1CED\\u1CF2-\\u1CF4\\u1CF8\\u1CF9\\u1DC0-\\u1DF5\\u1DFB-\\u1DFF\\u20D0-\\u20F0\\u2CEF-\\u2CF1\\u2D7F\\u2DE0-\\u2DFF\\u302A-\\u302F\\u3099\\u309A\\uA66F-\\uA672\\uA674-\\uA67D\\uA69E\\uA69F\\uA6F0\\uA6F1\\uA802\\uA806\\uA80B\\uA823-\\uA827\\uA880\\uA881\\uA8B4-\\uA8C5\\uA8E0-\\uA8F1\\uA926-\\uA92D\\uA947-\\uA953\\uA980-\\uA983\\uA9B3-\\uA9C0\\uA9E5\\uAA29-\\uAA36\\uAA43\\uAA4C\\uAA4D\\uAA7B-\\uAA7D\\uAAB0\\uAAB2-\\uAAB4\\uAAB7\\uAAB8\\uAABE\\uAABF\\uAAC1\\uAAEB-\\uAAEF\\uAAF5\\uAAF6\\uABE3-\\uABEA\\uABEC\\uABED\\uFB1E\\uFE00-\\uFE0F\\uFE20-\\uFE2F/.source,Ye=/0-9\\u0660-\\u0669\\u06F0-\\u06F9\\u07C0-\\u07C9\\u0966-\\u096F\\u09E6-\\u09EF\\u0A66-\\u0A6F\\u0AE6-\\u0AEF\\u0B66-\\u0B6F\\u0BE6-\\u0BEF\\u0C66-\\u0C6F\\u0CE6-\\u0CEF\\u0D66-\\u0D6F\\u0DE6-\\u0DEF\\u0E50-\\u0E59\\u0ED0-\\u0ED9\\u0F20-\\u0F29\\u1040-\\u1049\\u1090-\\u1099\\u17E0-\\u17E9\\u1810-\\u1819\\u1946-\\u194F\\u19D0-\\u19D9\\u1A80-\\u1A89\\u1A90-\\u1A99\\u1B50-\\u1B59\\u1BB0-\\u1BB9\\u1C40-\\u1C49\\u1C50-\\u1C59\\uA620-\\uA629\\uA8D0-\\uA8D9\\uA900-\\uA909\\uA9D0-\\uA9D9\\uA9F0-\\uA9F9\\uAA50-\\uAA59\\uABF0-\\uABF9\\uFF10-\\uFF19/.source,Ke=Je+Ye,Qe=Je+Ye,Xe=\"(?:[\"+Ye+\"]{1,3}\\\\.){3}[\"+Ye+\"]{1,3}\",et=\"[\"+Qe+\"](?:[\"+Qe+\"\\\\-]{0,61}[\"+Qe+\"])?\",tt=function(e){return\"(?=(\"+et+\"))\\\\\"+e},rt=function(e){return\"(?:\"+tt(e)+\"(?:\\\\.\"+tt(e+1)+\"){0,126}|\"+Xe+\")\"},nt=new RegExp(\"[\"+Qe+\"]\"),ot=/(?:xn--vermgensberatung-pwb|xn--vermgensberater-ctb|xn--clchc0ea0b2g2a9gcd|xn--w4r85el8fhu5dnra|northwesternmutual|travelersinsurance|vermögensberatung|xn--3oq18vl8pn36a|xn--5su34j936bgsg|xn--bck1b9a5dre4c|xn--mgbai9azgqp6j|xn--mgberp4a5d4ar|xn--xkc2dl3a5ee0h|vermögensberater|xn--fzys8d69uvgm|xn--mgba7c0bbn0a|xn--xkc2al3hye2a|americanexpress|kerryproperties|sandvikcoromant|xn--i1b6b1a6a2e|xn--kcrx77d1x4a|xn--lgbbat1ad8j|xn--mgba3a4f16a|xn--mgbaakc7dvf|xn--mgbc0a9azcg|xn--nqv7fs00ema|afamilycompany|americanfamily|bananarepublic|cancerresearch|cookingchannel|kerrylogistics|weatherchannel|xn--54b7fta0cc|xn--6qq986b3xl|xn--80aqecdr1a|xn--b4w605ferd|xn--fiq228c5hs|xn--h2breg3eve|xn--jlq61u9w7b|xn--mgba3a3ejt|xn--mgbaam7a8h|xn--mgbayh7gpa|xn--mgbb9fbpob|xn--mgbbh1a71e|xn--mgbca7dzdo|xn--mgbi4ecexp|xn--mgbx4cd0ab|xn--rvc1e0am3e|international|lifeinsurance|spreadbetting|travelchannel|wolterskluwer|xn--eckvdtc9d|xn--fpcrj9c3d|xn--fzc2c9e2c|xn--h2brj9c8c|xn--tiq49xqyj|xn--yfro4i67o|xn--ygbi2ammx|construction|lplfinancial|scholarships|versicherung|xn--3e0b707e|xn--45br5cyl|xn--80adxhks|xn--80asehdb|xn--8y0a063a|xn--gckr3f0f|xn--mgb9awbf|xn--mgbab2bd|xn--mgbgu82a|xn--mgbpl2fh|xn--mgbt3dhd|xn--mk1bu44c|xn--ngbc5azd|xn--ngbe9e0a|xn--ogbpf8fl|xn--qcka1pmc|accountants|barclaycard|blackfriday|blockbuster|bridgestone|calvinklein|contractors|creditunion|engineering|enterprises|foodnetwork|investments|kerryhotels|lamborghini|motorcycles|olayangroup|photography|playstation|productions|progressive|redumbrella|rightathome|williamhill|xn--11b4c3d|xn--1ck2e1b|xn--1qqw23a|xn--2scrj9c|xn--3bst00m|xn--3ds443g|xn--3hcrj9c|xn--42c2d9a|xn--45brj9c|xn--55qw42g|xn--6frz82g|xn--80ao21a|xn--9krt00a|xn--cck2b3b|xn--czr694b|xn--d1acj3b|xn--efvy88h|xn--estv75g|xn--fct429k|xn--fjq720a|xn--flw351e|xn--g2xx48c|xn--gecrj9c|xn--gk3at1e|xn--h2brj9c|xn--hxt814e|xn--imr513n|xn--j6w193g|xn--jvr189m|xn--kprw13d|xn--kpry57d|xn--kpu716f|xn--mgbbh1a|xn--mgbtx2b|xn--mix891f|xn--nyqy26a|xn--otu796d|xn--pbt977c|xn--pgbs0dh|xn--q9jyb4c|xn--rhqv96g|xn--rovu88b|xn--s9brj9c|xn--ses554g|xn--t60b56a|xn--vuq861b|xn--w4rs40l|xn--xhq521b|xn--zfr164b|சிங்கப்பூர்|accountant|apartments|associates|basketball|bnpparibas|boehringer|capitalone|consulting|creditcard|cuisinella|eurovision|extraspace|foundation|healthcare|immobilien|industries|management|mitsubishi|nationwide|newholland|nextdirect|onyourside|properties|protection|prudential|realestate|republican|restaurant|schaeffler|swiftcover|tatamotors|technology|telefonica|university|vistaprint|vlaanderen|volkswagen|xn--30rr7y|xn--3pxu8k|xn--45q11c|xn--4gbrim|xn--55qx5d|xn--5tzm5g|xn--80aswg|xn--90a3ac|xn--9dbq2a|xn--9et52u|xn--c2br7g|xn--cg4bki|xn--czrs0t|xn--czru2d|xn--fiq64b|xn--fiqs8s|xn--fiqz9s|xn--io0a7i|xn--kput3i|xn--mxtq1m|xn--o3cw4h|xn--pssy2u|xn--unup4y|xn--wgbh1c|xn--wgbl6a|xn--y9a3aq|accenture|alfaromeo|allfinanz|amsterdam|analytics|aquarelle|barcelona|bloomberg|christmas|community|directory|education|equipment|fairwinds|financial|firestone|fresenius|frontdoor|fujixerox|furniture|goldpoint|hisamitsu|homedepot|homegoods|homesense|honeywell|institute|insurance|kuokgroup|ladbrokes|lancaster|landrover|lifestyle|marketing|marshalls|melbourne|microsoft|panasonic|passagens|pramerica|richardli|scjohnson|shangrila|solutions|statebank|statefarm|stockholm|travelers|vacations|xn--90ais|xn--c1avg|xn--d1alf|xn--e1a4c|xn--fhbei|xn--j1aef|xn--j1amh|xn--l1acc|xn--ngbrx|xn--nqv7f|xn--p1acf|xn--tckwe|xn--vhquv|yodobashi|abudhabi|airforce|allstate|attorney|barclays|barefoot|bargains|baseball|boutique|bradesco|broadway|brussels|budapest|builders|business|capetown|catering|catholic|chrysler|cipriani|cityeats|cleaning|clinique|clothing|commbank|computer|delivery|deloitte|democrat|diamonds|discount|discover|download|engineer|ericsson|esurance|etisalat|everbank|exchange|feedback|fidelity|firmdale|football|frontier|goodyear|grainger|graphics|guardian|hdfcbank|helsinki|holdings|hospital|infiniti|ipiranga|istanbul|jpmorgan|lighting|lundbeck|marriott|maserati|mckinsey|memorial|merckmsd|mortgage|movistar|observer|partners|pharmacy|pictures|plumbing|property|redstone|reliance|saarland|samsclub|security|services|shopping|showtime|softbank|software|stcgroup|supplies|symantec|training|uconnect|vanguard|ventures|verisign|woodside|xn--90ae|xn--node|xn--p1ai|xn--qxam|yokohama|السعودية|abogado|academy|agakhan|alibaba|android|athleta|auction|audible|auspost|avianca|banamex|bauhaus|bentley|bestbuy|booking|brother|bugatti|capital|caravan|careers|cartier|channel|charity|chintai|citadel|clubmed|college|cologne|comcast|company|compare|contact|cooking|corsica|country|coupons|courses|cricket|cruises|dentist|digital|domains|exposed|express|farmers|fashion|ferrari|ferrero|finance|fishing|fitness|flights|florist|flowers|forsale|frogans|fujitsu|gallery|genting|godaddy|grocery|guitars|hamburg|hangout|hitachi|holiday|hosting|hoteles|hotmail|hyundai|iselect|ismaili|jewelry|juniper|kitchen|komatsu|lacaixa|lancome|lanxess|lasalle|latrobe|leclerc|liaison|limited|lincoln|markets|metlife|monster|netbank|netflix|network|neustar|okinawa|oldnavy|organic|origins|philips|pioneer|politie|realtor|recipes|rentals|reviews|rexroth|samsung|sandvik|schmidt|schwarz|science|shiksha|shriram|singles|staples|starhub|storage|support|surgery|systems|temasek|theater|theatre|tickets|tiffany|toshiba|trading|walmart|wanggou|watches|weather|website|wedding|whoswho|windows|winners|xfinity|yamaxun|youtube|zuerich|католик|اتصالات|الجزائر|العليان|پاکستان|كاثوليك|موبايلي|இந்தியா|abarth|abbott|abbvie|active|africa|agency|airbus|airtel|alipay|alsace|alstom|anquan|aramco|author|bayern|beauty|berlin|bharti|blanco|bostik|boston|broker|camera|career|caseih|casino|center|chanel|chrome|church|circle|claims|clinic|coffee|comsec|condos|coupon|credit|cruise|dating|datsun|dealer|degree|dental|design|direct|doctor|dunlop|dupont|durban|emerck|energy|estate|events|expert|family|flickr|futbol|gallup|garden|george|giving|global|google|gratis|health|hermes|hiphop|hockey|hotels|hughes|imamat|insure|intuit|jaguar|joburg|juegos|kaufen|kinder|kindle|kosher|lancia|latino|lawyer|lefrak|living|locker|london|luxury|madrid|maison|makeup|market|mattel|mobile|mobily|monash|mormon|moscow|museum|mutual|nagoya|natura|nissan|nissay|norton|nowruz|office|olayan|online|oracle|orange|otsuka|pfizer|photos|physio|piaget|pictet|quebec|racing|realty|reisen|repair|report|review|rocher|rogers|ryukyu|safety|sakura|sanofi|school|schule|search|secure|select|shouji|soccer|social|stream|studio|supply|suzuki|swatch|sydney|taipei|taobao|target|tattoo|tennis|tienda|tjmaxx|tkmaxx|toyota|travel|unicom|viajes|viking|villas|virgin|vision|voting|voyage|vuelos|walter|warman|webcam|xihuan|yachts|yandex|zappos|москва|онлайн|ابوظبي|ارامكو|الاردن|المغرب|امارات|فلسطين|مليسيا|भारतम्|இலங்கை|ファッション|actor|adult|aetna|amfam|amica|apple|archi|audio|autos|azure|baidu|beats|bible|bingo|black|boats|bosch|build|canon|cards|chase|cheap|cisco|citic|click|cloud|coach|codes|crown|cymru|dabur|dance|deals|delta|dodge|drive|dubai|earth|edeka|email|epost|epson|faith|fedex|final|forex|forum|gallo|games|gifts|gives|glade|glass|globo|gmail|green|gripe|group|gucci|guide|homes|honda|horse|house|hyatt|ikano|intel|irish|iveco|jetzt|koeln|kyoto|lamer|lease|legal|lexus|lilly|linde|lipsy|lixil|loans|locus|lotte|lotto|lupin|macys|mango|media|miami|money|mopar|movie|nadex|nexus|nikon|ninja|nokia|nowtv|omega|osaka|paris|parts|party|phone|photo|pizza|place|poker|praxi|press|prime|promo|quest|radio|rehab|reise|ricoh|rocks|rodeo|rugby|salon|sener|seven|sharp|shell|shoes|skype|sling|smart|smile|solar|space|sport|stada|store|study|style|sucks|swiss|tatar|tires|tirol|tmall|today|tokyo|tools|toray|total|tours|trade|trust|tunes|tushu|ubank|vegas|video|vodka|volvo|wales|watch|weber|weibo|works|world|xerox|yahoo|zippo|ایران|بازار|بھارت|سودان|سورية|همراه|भारोत|संगठन|বাংলা|భారత్|ഭാരതം|嘉里大酒店|aarp|able|adac|aero|aigo|akdn|ally|amex|arab|army|arpa|arte|asda|asia|audi|auto|baby|band|bank|bbva|beer|best|bike|bing|blog|blue|bofa|bond|book|buzz|cafe|call|camp|care|cars|casa|case|cash|cbre|cern|chat|citi|city|club|cool|coop|cyou|data|date|dclk|deal|dell|desi|diet|dish|docs|doha|duck|duns|dvag|erni|fage|fail|fans|farm|fast|fiat|fido|film|fire|fish|flir|food|ford|free|fund|game|gbiz|gent|ggee|gift|gmbh|gold|golf|goog|guge|guru|hair|haus|hdfc|help|here|hgtv|host|hsbc|icbc|ieee|imdb|immo|info|itau|java|jeep|jobs|jprs|kddi|kiwi|kpmg|kred|land|lego|lgbt|lidl|life|like|limo|link|live|loan|loft|love|ltda|luxe|maif|meet|meme|menu|mini|mint|mobi|moda|moto|name|navy|news|next|nico|nike|ollo|open|page|pars|pccw|pics|ping|pink|play|plus|pohl|porn|post|prod|prof|qpon|raid|read|reit|rent|rest|rich|rmit|room|rsvp|ruhr|safe|sale|sarl|save|saxo|scor|scot|seat|seek|sexy|shaw|shia|shop|show|silk|sina|site|skin|sncf|sohu|song|sony|spot|star|surf|talk|taxi|team|tech|teva|tiaa|tips|town|toys|tube|vana|visa|viva|vivo|vote|voto|wang|weir|wien|wiki|wine|work|xbox|yoga|zara|zero|zone|дети|сайт|بارت|بيتك|ڀارت|تونس|شبكة|عراق|عمان|موقع|भारत|ভারত|ভাৰত|ਭਾਰਤ|ભારત|ଭାରତ|ಭಾರತ|ලංකා|グーグル|クラウド|ポイント|大众汽车|组织机构|電訊盈科|香格里拉|aaa|abb|abc|aco|ads|aeg|afl|aig|anz|aol|app|art|aws|axa|bar|bbc|bbt|bcg|bcn|bet|bid|bio|biz|bms|bmw|bnl|bom|boo|bot|box|buy|bzh|cab|cal|cam|car|cat|cba|cbn|cbs|ceb|ceo|cfa|cfd|com|crs|csc|dad|day|dds|dev|dhl|diy|dnp|dog|dot|dtv|dvr|eat|eco|edu|esq|eus|fan|fit|fly|foo|fox|frl|ftr|fun|fyi|gal|gap|gdn|gea|gle|gmo|gmx|goo|gop|got|gov|hbo|hiv|hkt|hot|how|ibm|ice|icu|ifm|inc|ing|ink|int|ist|itv|jcb|jcp|jio|jll|jmp|jnj|jot|joy|kfh|kia|kim|kpn|krd|lat|law|lds|llc|lol|lpl|ltd|man|map|mba|med|men|mil|mit|mlb|mls|mma|moe|moi|mom|mov|msd|mtn|mtr|nab|nba|nec|net|new|nfl|ngo|nhk|now|nra|nrw|ntt|nyc|obi|off|one|ong|onl|ooo|org|ott|ovh|pay|pet|phd|pid|pin|pnc|pro|pru|pub|pwc|qvc|red|ren|ril|rio|rip|run|rwe|sap|sas|sbi|sbs|sca|scb|ses|sew|sex|sfr|ski|sky|soy|srl|srt|stc|tab|tax|tci|tdk|tel|thd|tjx|top|trv|tui|tvs|ubs|uno|uol|ups|vet|vig|vin|vip|wed|win|wme|wow|wtc|wtf|xin|xxx|xyz|you|yun|zip|бел|ком|қаз|мкд|мон|орг|рус|срб|укр|հայ|קום|عرب|قطر|كوم|مصر|कॉम|नेट|คอม|ไทย|ストア|セール|みんな|中文网|天主教|我爱你|新加坡|淡马锡|诺基亚|飞利浦|ac|ad|ae|af|ag|ai|al|am|ao|aq|ar|as|at|au|aw|ax|az|ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|bw|by|bz|ca|cc|cd|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cu|cv|cw|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|er|es|et|eu|fi|fj|fk|fm|fo|fr|ga|gb|gd|ge|gf|gg|gh|gi|gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|hu|id|ie|il|im|in|io|iq|ir|is|it|je|jm|jo|jp|ke|kg|kh|ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|lu|lv|ly|ma|mc|md|me|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|np|nr|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|ps|pt|pw|py|qa|re|ro|rs|ru|rw|sa|sb|sc|sd|se|sg|sh|si|sj|sk|sl|sm|sn|so|sr|st|su|sv|sx|sy|sz|tc|td|tf|tg|th|tj|tk|tl|tm|tn|to|tr|tt|tv|tw|tz|ua|ug|uk|us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|za|zm|zw|ελ|бг|ею|рф|გე|닷넷|닷컴|삼성|한국|コム|世界|中信|中国|中國|企业|佛山|信息|健康|八卦|公司|公益|台湾|台灣|商城|商店|商标|嘉里|在线|大拿|娱乐|家電|工行|广东|微博|慈善|手机|手表|招聘|政务|政府|新闻|时尚|書籍|机构|游戏|澳門|点看|珠宝|移动|网址|网店|网站|网络|联通|谷歌|购物|通販|集团|食品|餐厅|香港)/,st=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.localPartCharRegex=new RegExp(\"[\"+Qe+\"!#$%&'*+/=?^_`{|}~-]\"),t.strictTldRegex=new RegExp(\"^\"+ot.source+\"$\"),t}return Re(t,e),t.prototype.parseMatches=function(e){for(var t=this.tagBuilder,r=this.localPartCharRegex,n=this.strictTldRegex,o=[],s=e.length,i=new it,a={m:\"a\",a:\"i\",i:\"l\",l:\"t\",t:\"o\",o:\":\"},u=0,l=0,c=i;u<s;){var p=e.charAt(u);switch(l){case 0:h(p);break;case 1:f(e.charAt(u-1),p);break;case 2:g(p);break;case 3:d(p);break;case 4:m(p);break;case 5:b(p);break;case 6:v(p);break;case 7:k(p);break;default:Fe(l)}u++}return x(),o;function h(e){\"m\"===e?A(1):r.test(e)&&A()}function f(e,t){\":\"===e?r.test(t)?(l=2,c=new it(Ne({},c,{hasMailtoPrefix:!0}))):y():a[e]===t||(r.test(t)?l=2:\".\"===t?l=3:\"@\"===t?l=4:y())}function g(e){\".\"===e?l=3:\"@\"===e?l=4:r.test(e)||y()}function d(e){\".\"===e?y():\"@\"===e?y():r.test(e)?l=2:y()}function m(e){nt.test(e)?l=5:y()}function b(e){\".\"===e?l=7:\"-\"===e?l=6:nt.test(e)||x()}function v(e){\"-\"===e||\".\"===e?x():nt.test(e)?l=5:x()}function k(e){\".\"===e||\"-\"===e?x():nt.test(e)?(l=5,c=new it(Ne({},c,{hasDomainDot:!0}))):x()}function A(e){void 0===e&&(e=2),l=e,c=new it({idx:u})}function y(){l=0,c=i}function x(){if(c.hasDomainDot){var r=e.slice(c.idx,u);/[-.]$/.test(r)&&(r=r.slice(0,-1));var s=c.hasMailtoPrefix?r.slice(\"mailto:\".length):r;(function(e){var t=(e.split(\".\").pop()||\"\").toLowerCase();return n.test(t)})(s)&&o.push(new ze({tagBuilder:t,matchedText:r,offset:c.idx,email:s}))}y()}},t}(Ue),it=function(e){void 0===e&&(e={}),this.idx=void 0!==e.idx?e.idx:-1,this.hasMailtoPrefix=!!e.hasMailtoPrefix,this.hasDomainDot=!!e.hasDomainDot},at=function(){function e(){}return e.isValid=function(e,t){return!(t&&!this.isValidUriScheme(t)||this.urlMatchDoesNotHaveProtocolOrDot(e,t)||this.urlMatchDoesNotHaveAtLeastOneWordChar(e,t)&&!this.isValidIpAddress(e)||this.containsMultipleDots(e))},e.isValidIpAddress=function(e){var t=new RegExp(this.hasFullProtocolRegex.source+this.ipRegex.source);return null!==e.match(t)},e.containsMultipleDots=function(e){var t=e;return this.hasFullProtocolRegex.test(e)&&(t=e.split(\"://\")[1]),t.split(\"/\")[0].indexOf(\"..\")>-1},e.isValidUriScheme=function(e){var t=e.match(this.uriSchemeRegex),r=t&&t[0].toLowerCase();return\"javascript:\"!==r&&\"vbscript:\"!==r},e.urlMatchDoesNotHaveProtocolOrDot=function(e,t){return!(!e||t&&this.hasFullProtocolRegex.test(t)||-1!==e.indexOf(\".\"))},e.urlMatchDoesNotHaveAtLeastOneWordChar=function(e,t){return!(!e||!t)&&!this.hasWordCharAfterProtocolRegex.test(e)},e.hasFullProtocolRegex=/^[A-Za-z][-.+A-Za-z0-9]*:\\/\\//,e.uriSchemeRegex=/^[A-Za-z][-.+A-Za-z0-9]*:/,e.hasWordCharAfterProtocolRegex=new RegExp(\":[^\\\\s]*?[\"+We+\"]\"),e.ipRegex=/[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?\\.[0-9][0-9]?[0-9]?(:[0-9]*)?\\/?$/,e}(),ut=function(e){function t(t){var r,n=e.call(this,t)||this;return n.stripPrefix={scheme:!0,www:!0},n.stripTrailingSlash=!0,n.decodePercentEncoding=!0,n.matcherRegex=(r=new RegExp(\"[/?#](?:[\"+Qe+\"\\\\-+&@#/%=~_()|'$*\\\\[\\\\]?!:,.;✓]*[\"+Qe+\"\\\\-+&@#/%=~_()|'$*\\\\[\\\\]✓])?\"),new RegExp([\"(?:\",\"(\",/(?:[A-Za-z][-.+A-Za-z0-9]{0,63}:(?![A-Za-z][-.+A-Za-z0-9]{0,63}:\\/\\/)(?!\\d+\\/?)(?:\\/\\/)?)/.source,rt(2),\")\",\"|\",\"(\",\"(//)?\",/(?:www\\.)/.source,rt(6),\")\",\"|\",\"(\",\"(//)?\",rt(10)+\"\\\\.\",ot.source,\"(?![-\"+Ke+\"])\",\")\",\")\",\"(?::[0-9]+)?\",\"(?:\"+r.source+\")?\"].join(\"\"),\"gi\")),n.wordCharRegExp=new RegExp(\"[\"+Qe+\"]\"),n.stripPrefix=t.stripPrefix,n.stripTrailingSlash=t.stripTrailingSlash,n.decodePercentEncoding=t.decodePercentEncoding,n}return Re(t,e),t.prototype.parseMatches=function(e){for(var t,r=this.matcherRegex,n=this.stripPrefix,o=this.stripTrailingSlash,s=this.decodePercentEncoding,i=this.tagBuilder,a=[],u=function(){var r=t[0],u=t[1],c=t[4],p=t[5],h=t[9],f=t.index,g=p||h,d=e.charAt(f-1);if(!at.isValid(r,u))return\"continue\";if(f>0&&\"@\"===d)return\"continue\";if(f>0&&g&&l.wordCharRegExp.test(d))return\"continue\";if(/\\?$/.test(r)&&(r=r.substr(0,r.length-1)),l.matchHasUnbalancedClosingParen(r))r=r.substr(0,r.length-1);else{var m=l.matchHasInvalidCharAfterTld(r,u);m>-1&&(r=r.substr(0,m))}var b=[\"http://\",\"https://\"].find(function(e){return!!u&&-1!==u.indexOf(e)});if(b){var v=r.indexOf(b);r=r.substr(v),u=u.substr(v),f+=v}var k=u?\"scheme\":c?\"www\":\"tld\",A=!!u;a.push(new Oe({tagBuilder:i,matchedText:r,offset:f,urlMatchType:k,url:r,protocolUrlMatch:A,protocolRelativeMatch:!!g,stripPrefix:n,stripTrailingSlash:o,decodePercentEncoding:s}))},l=this;null!==(t=r.exec(e));)u();return a},t.prototype.matchHasUnbalancedClosingParen=function(e){var t,r=e.charAt(e.length-1);if(\")\"===r)t=\"(\";else{if(\"]\"!==r)return!1;t=\"[\"}for(var n=0,o=0,s=e.length-1;o<s;o++){var i=e.charAt(o);i===t?n++:i===r&&(n=Math.max(n-1,0))}return 0===n},t.prototype.matchHasInvalidCharAfterTld=function(e,t){if(!e)return-1;var r=0;t&&(r=e.indexOf(\":\"),e=e.slice(r));var n=new RegExp(\"^((.?//)?[-.\"+Qe+\"]*[-\"+Qe+\"]\\\\.[-\"+Qe+\"]+)\").exec(e);return null===n?-1:(r+=n[1].length,e=e.slice(n[1].length),/^[^-.A-Za-z0-9:\\/?#]/.test(e)?r:-1)},t}(Ue),lt=function(e){function t(t){var r=e.call(this,t)||this;return r.serviceName=\"twitter\",r.matcherRegex=new RegExp(\"#[_\"+Qe+\"]{1,139}(?![_\"+Qe+\"])\",\"g\"),r.nonWordCharRegex=new RegExp(\"[^\"+Qe+\"]\"),r.serviceName=t.serviceName,r}return Re(t,e),t.prototype.parseMatches=function(e){for(var t,r=this.matcherRegex,n=this.nonWordCharRegex,o=this.serviceName,s=this.tagBuilder,i=[];null!==(t=r.exec(e));){var a=t.index,u=e.charAt(a-1);if(0===a||n.test(u)){var l=t[0],c=t[0].slice(1);i.push(new Pe({tagBuilder:s,matchedText:l,offset:a,serviceName:o,hashtag:c}))}}return i},t}(Ue),ct=function(e){function t(){var t=null!==e&&e.apply(this,arguments)||this;return t.matcherRegex=/(?:(?:(?:(\\+)?\\d{1,3}[-\\040.]?)?\\(?\\d{3}\\)?[-\\040.]?\\d{3}[-\\040.]?\\d{4})|(?:(\\+)(?:9[976]\\d|8[987530]\\d|6[987]\\d|5[90]\\d|42\\d|3[875]\\d|2[98654321]\\d|9[8543210]|8[6421]|6[6543210]|5[87654321]|4[987654310]|3[9643210]|2[70]|7|1)[-\\040.]?(?:\\d[-\\040.]?){6,12}\\d+))([,;]+[0-9]+#?)*/g,t}return Re(t,e),t.prototype.parseMatches=function(e){for(var t,r=this.matcherRegex,n=this.tagBuilder,o=[];null!==(t=r.exec(e));){var s=t[0],i=s.replace(/[^0-9,;#]/g,\"\"),a=!(!t[1]&&!t[2]),u=0==t.index?\"\":e.substr(t.index-1,1),l=e.substr(t.index+s.length,1),c=!u.match(/\\d/)&&!l.match(/\\d/);this.testMatch(t[3])&&this.testMatch(s)&&c&&o.push(new Ie({tagBuilder:n,matchedText:s,offset:t.index,number:i,plusSign:a}))}return o},t.prototype.testMatch=function(e){return/\\D/.test(e)},t}(Ue),pt=function(e){function t(t){var r=e.call(this,t)||this;return r.serviceName=\"twitter\",r.matcherRegexes={twitter:new RegExp(\"@[_\"+Qe+\"]{1,50}(?![_\"+Qe+\"])\",\"g\"),instagram:new RegExp(\"@[_.\"+Qe+\"]{1,30}(?![_\"+Qe+\"])\",\"g\"),soundcloud:new RegExp(\"@[-_.\"+Qe+\"]{1,50}(?![-_\"+Qe+\"])\",\"g\")},r.nonWordCharRegex=new RegExp(\"[^\"+Qe+\"]\"),r.serviceName=t.serviceName,r}return Re(t,e),t.prototype.parseMatches=function(e){var t,r=this.serviceName,n=this.matcherRegexes[this.serviceName],o=this.nonWordCharRegex,s=this.tagBuilder,i=[];if(!n)return i;for(;null!==(t=n.exec(e));){var a=t.index,u=e.charAt(a-1);if(0===a||o.test(u)){var l=t[0].replace(/\\.+$/g,\"\"),c=l.slice(1);i.push(new je({tagBuilder:s,matchedText:l,offset:a,serviceName:r,mention:c}))}}return i},t}(Ue);function ht(e,t){for(var r=t.onOpenTag,n=t.onCloseTag,o=t.onText,s=t.onComment,i=t.onDoctype,a=new ft,u=0,l=e.length,c=0,p=0,h=a;u<l;){var f=e.charAt(u);switch(c){case 0:g(f);break;case 1:d(f);break;case 2:b(f);break;case 3:m(f);break;case 4:v(f);break;case 5:k(f);break;case 6:A(f);break;case 7:y(f);break;case 8:x(f);break;case 9:w(f);break;case 10:C(f);break;case 11:E(f);break;case 12:D(f);break;case 13:_();break;case 14:B(f);break;case 15:q(f);break;case 16:F(f);break;case 17:M(f);break;case 18:S(f);break;case 19:T(f);break;case 20:L(f);break;default:Fe(c)}u++}function g(e){\"<\"===e&&N()}function d(e){\"!\"===e?c=13:\"/\"===e?(c=2,h=new ft(Ne({},h,{isClosing:!0}))):\"<\"===e?N():He.test(e)?(c=3,h=new ft(Ne({},h,{isOpening:!0}))):(c=0,h=a)}function m(e){Ge.test(e)?(h=new ft(Ne({},h,{name:P()})),c=4):\"<\"===e?N():\"/\"===e?(h=new ft(Ne({},h,{name:P()})),c=12):\">\"===e?(h=new ft(Ne({},h,{name:P()})),z()):He.test(e)||Ve.test(e)||\":\"===e||R()}function b(e){\">\"===e?R():He.test(e)?c=3:R()}function v(e){Ge.test(e)||(\"/\"===e?c=12:\">\"===e?z():\"<\"===e?N():\"=\"===e||$e.test(e)||Ze.test(e)?R():c=5)}function k(e){Ge.test(e)?c=6:\"/\"===e?c=12:\"=\"===e?c=7:\">\"===e?z():\"<\"===e?N():$e.test(e)&&R()}function A(e){Ge.test(e)||(\"/\"===e?c=12:\"=\"===e?c=7:\">\"===e?z():\"<\"===e?N():$e.test(e)?R():c=5)}function y(e){Ge.test(e)||('\"'===e?c=8:\"'\"===e?c=9:/[>=`]/.test(e)?R():\"<\"===e?N():c=10)}function x(e){'\"'===e&&(c=11)}function w(e){\"'\"===e&&(c=11)}function C(e){Ge.test(e)?c=4:\">\"===e?z():\"<\"===e&&N()}function E(e){Ge.test(e)?c=4:\"/\"===e?c=12:\">\"===e?z():\"<\"===e?N():(c=4,u--)}function D(e){\">\"===e?(h=new ft(Ne({},h,{isClosing:!0})),z()):c=4}function _(t){\"--\"===e.substr(u,2)?(u+=2,h=new ft(Ne({},h,{type:\"comment\"})),c=14):\"DOCTYPE\"===e.substr(u,7).toUpperCase()?(u+=7,h=new ft(Ne({},h,{type:\"doctype\"})),c=20):R()}function B(e){\"-\"===e?c=15:\">\"===e?R():c=16}function q(e){\"-\"===e?c=18:\">\"===e?R():c=16}function F(e){\"-\"===e&&(c=17)}function M(e){c=\"-\"===e?18:16}function S(e){\">\"===e?z():\"!\"===e?c=19:\"-\"===e||(c=16)}function T(e){\"-\"===e?c=17:\">\"===e?z():c=16}function L(e){\">\"===e?z():\"<\"===e&&N()}function R(){c=0,h=a}function N(){c=1,h=new ft({idx:u})}function z(){var t=e.slice(p,h.idx);t&&o(t,p),\"comment\"===h.type?s(h.idx):\"doctype\"===h.type?i(h.idx):(h.isOpening&&r(h.name,h.idx),h.isClosing&&n(h.name,h.idx)),R(),p=u+1}function P(){var t=h.idx+(h.isClosing?2:1);return e.slice(t,u).toLowerCase()}p<u&&function(){var t=e.slice(p,u);o(t,p),p=u+1}()}var ft=function(e){void 0===e&&(e={}),this.idx=void 0!==e.idx?e.idx:-1,this.type=e.type||\"tag\",this.name=e.name||\"\",this.isOpening=!!e.isOpening,this.isClosing=!!e.isClosing},gt=function(){function e(t){void 0===t&&(t={}),this.version=e.version,this.urls={},this.email=!0,this.phone=!0,this.hashtag=!1,this.mention=!1,this.newWindow=!0,this.stripPrefix={scheme:!0,www:!0},this.stripTrailingSlash=!0,this.decodePercentEncoding=!0,this.truncate={length:0,location:\"end\"},this.className=\"\",this.replaceFn=null,this.context=void 0,this.matchers=null,this.tagBuilder=null,this.urls=this.normalizeUrlsCfg(t.urls),this.email=\"boolean\"==typeof t.email?t.email:this.email,this.phone=\"boolean\"==typeof t.phone?t.phone:this.phone,this.hashtag=t.hashtag||this.hashtag,this.mention=t.mention||this.mention,this.newWindow=\"boolean\"==typeof t.newWindow?t.newWindow:this.newWindow,this.stripPrefix=this.normalizeStripPrefixCfg(t.stripPrefix),this.stripTrailingSlash=\"boolean\"==typeof t.stripTrailingSlash?t.stripTrailingSlash:this.stripTrailingSlash,this.decodePercentEncoding=\"boolean\"==typeof t.decodePercentEncoding?t.decodePercentEncoding:this.decodePercentEncoding;var r=this.mention;if(!1!==r&&\"twitter\"!==r&&\"instagram\"!==r&&\"soundcloud\"!==r)throw new Error(\"invalid `mention` cfg - see docs\");var n=this.hashtag;if(!1!==n&&\"twitter\"!==n&&\"facebook\"!==n&&\"instagram\"!==n)throw new Error(\"invalid `hashtag` cfg - see docs\");this.truncate=this.normalizeTruncateCfg(t.truncate),this.className=t.className||this.className,this.replaceFn=t.replaceFn||this.replaceFn,this.context=t.context||this}return e.link=function(t,r){return new e(r).link(t)},e.parse=function(t,r){return new e(r).parse(t)},e.prototype.normalizeUrlsCfg=function(e){return null==e&&(e=!0),\"boolean\"==typeof e?{schemeMatches:e,wwwMatches:e,tldMatches:e}:{schemeMatches:\"boolean\"!=typeof e.schemeMatches||e.schemeMatches,wwwMatches:\"boolean\"!=typeof e.wwwMatches||e.wwwMatches,tldMatches:\"boolean\"!=typeof e.tldMatches||e.tldMatches}},e.prototype.normalizeStripPrefixCfg=function(e){return null==e&&(e=!0),\"boolean\"==typeof e?{scheme:e,www:e}:{scheme:\"boolean\"!=typeof e.scheme||e.scheme,www:\"boolean\"!=typeof e.www||e.www}},e.prototype.normalizeTruncateCfg=function(e){return\"number\"==typeof e?{length:e,location:\"end\"}:function(e,t){for(var r in t)t.hasOwnProperty(r)&&void 0===e[r]&&(e[r]=t[r]);return e}(e||{},{length:Number.POSITIVE_INFINITY,location:\"end\"})},e.prototype.parse=function(e){var t=this,r=[\"a\",\"style\",\"script\"],n=0,o=[];return ht(e,{onOpenTag:function(e){r.indexOf(e)>=0&&n++},onText:function(e,r){if(0===n){var s=function(e,t){if(!t.global)throw new Error(\"`splitRegex` must have the 'g' flag set\");for(var r,n=[],o=0;r=t.exec(e);)n.push(e.substring(o,r.index)),n.push(r[0]),o=r.index+r[0].length;return n.push(e.substring(o)),n}(e,/(&nbsp;|&#160;|&lt;|&#60;|&gt;|&#62;|&quot;|&#34;|&#39;)/gi),i=r;s.forEach(function(e,r){if(r%2==0){var n=t.parseText(e,i);o.push.apply(o,n)}i+=e.length})}},onCloseTag:function(e){r.indexOf(e)>=0&&(n=Math.max(n-1,0))},onComment:function(e){},onDoctype:function(e){}}),o=this.compactMatches(o),o=this.removeUnwantedMatches(o)},e.prototype.compactMatches=function(e){e.sort(function(e,t){return e.getOffset()-t.getOffset()});for(var t=0;t<e.length-1;t++){var r=e[t],n=r.getOffset(),o=r.getMatchedText().length,s=n+o;if(t+1<e.length){if(e[t+1].getOffset()===n){var i=e[t+1].getMatchedText().length>o?t:t+1;e.splice(i,1);continue}e[t+1].getOffset()<s&&e.splice(t+1,1)}}return e},e.prototype.removeUnwantedMatches=function(e){return this.hashtag||qe(e,function(e){return\"hashtag\"===e.getType()}),this.email||qe(e,function(e){return\"email\"===e.getType()}),this.phone||qe(e,function(e){return\"phone\"===e.getType()}),this.mention||qe(e,function(e){return\"mention\"===e.getType()}),this.urls.schemeMatches||qe(e,function(e){return\"url\"===e.getType()&&\"scheme\"===e.getUrlMatchType()}),this.urls.wwwMatches||qe(e,function(e){return\"url\"===e.getType()&&\"www\"===e.getUrlMatchType()}),this.urls.tldMatches||qe(e,function(e){return\"url\"===e.getType()&&\"tld\"===e.getUrlMatchType()}),e},e.prototype.parseText=function(e,t){void 0===t&&(t=0),t=t||0;for(var r=this.getMatchers(),n=[],o=0,s=r.length;o<s;o++){for(var i=r[o].parseMatches(e),a=0,u=i.length;a<u;a++)i[a].setOffset(t+i[a].getOffset());n.push.apply(n,i)}return n},e.prototype.link=function(e){if(!e)return\"\";for(var t=this.parse(e),r=[],n=0,o=0,s=t.length;o<s;o++){var i=t[o];r.push(e.substring(n,i.getOffset())),r.push(this.createMatchReturnVal(i)),n=i.getOffset()+i.getMatchedText().length}return r.push(e.substring(n)),r.join(\"\")},e.prototype.createMatchReturnVal=function(e){var t;return this.replaceFn&&(t=this.replaceFn.call(this.context,e)),\"string\"==typeof t?t:!1===t?e.getMatchedText():t instanceof Me?t.toAnchorString():e.buildTag().toAnchorString()},e.prototype.getMatchers=function(){if(this.matchers)return this.matchers;var e=this.getTagBuilder(),t=[new lt({tagBuilder:e,serviceName:this.hashtag}),new st({tagBuilder:e}),new ct({tagBuilder:e}),new pt({tagBuilder:e,serviceName:this.mention}),new ut({tagBuilder:e,stripPrefix:this.stripPrefix,stripTrailingSlash:this.stripTrailingSlash,decodePercentEncoding:this.decodePercentEncoding})];return this.matchers=t},e.prototype.getTagBuilder=function(){var e=this.tagBuilder;return e||(e=this.tagBuilder=new Se({newWindow:this.newWindow,truncate:this.truncate,className:this.className})),e},e.version=\"3.11.0\",e.AnchorTagBuilder=Se,e.HtmlTag=Me,e.matcher={Email:st,Hashtag:lt,Matcher:Ue,Mention:pt,Phone:ct,Url:ut},e.match={Email:ze,Hashtag:Pe,Match:Te,Mention:je,Phone:Ie,Url:Oe},e}(),dt=/www|@|\\:\\/\\//;function mt(e){return/^<\\/a\\s*>/i.test(e)}function bt(){var e=[],t=new gt({stripPrefix:!1,url:!0,email:!0,replaceFn:function(t){switch(t.getType()){case\"url\":e.push({text:t.matchedText,url:t.getUrl()});break;case\"email\":e.push({text:t.matchedText,url:\"mailto:\"+t.getEmail().replace(/^mailto:/i,\"\")})}return!1}});return{links:e,autolinker:t}}function vt(e){var t,r,n,o,s,i,a,u,l,c,p,h,f,g,d=e.tokens,m=null;for(r=0,n=d.length;r<n;r++)if(\"inline\"===d[r].type)for(p=0,t=(o=d[r].children).length-1;t>=0;t--)if(\"link_close\"!==(s=o[t]).type){if(\"htmltag\"===s.type&&(g=s.content,/^<a[>\\s]/i.test(g)&&p>0&&p--,mt(s.content)&&p++),!(p>0)&&\"text\"===s.type&&dt.test(s.content)){if(m||(h=(m=bt()).links,f=m.autolinker),i=s.content,h.length=0,f.link(i),!h.length)continue;for(a=[],c=s.level,u=0;u<h.length;u++)e.inline.validateLink(h[u].url)&&((l=i.indexOf(h[u].text))&&a.push({type:\"text\",content:i.slice(0,l),level:c}),a.push({type:\"link_open\",href:h[u].url,title:\"\",level:c++}),a.push({type:\"text\",content:h[u].text,level:c}),a.push({type:\"link_close\",level:--c}),i=i.slice(l+h[u].text.length));i.length&&a.push({type:\"text\",content:i,level:c}),d[r].children=o=[].concat(o.slice(0,t),a,o.slice(t+1))}}else for(t--;o[t].level!==s.level&&\"link_open\"!==o[t].type;)t--}e.Remarkable=_e,e.linkify=function(e){e.core.ruler.push(\"linkify\",vt)},e.utils=A,Object.defineProperty(e,\"__esModule\",{value:!0})});\n",
            "type": "application/javascript",
            "title": "$:/plugins/tiddlywiki/markdown/remarkable.js",
            "module-type": "library"
        },
        "$:/plugins/tiddlywiki/markdown/images/new-markdown-button": {
            "title": "$:/plugins/tiddlywiki/markdown/images/new-markdown-button",
            "tags": "$:/tags/Image",
            "text": "<svg class=\"tc-image-new-markdown-button tc-image-button\" viewBox=\"0 0 128 128\" width=\"22pt\" height=\"22pt\">\n    <g fill-rule=\"evenodd\">\n        <rect x=\"80\" y=\"96\" width=\"48\" height=\"16\" rx=\"8\"></rect>\n        <rect x=\"96\" y=\"80\" width=\"16\" height=\"48\" rx=\"8\"></rect>\n        <path d=\"M3.23876972,39.5396716 C3.23876972,35.9653274 6.13586353,33.0691646 9.7141757,33.0691646 L98.1283744,33.0691646 C101.706101,33.0691646 104.60378,35.9646626 104.60378,39.5396716 L104.60378,84.8296213 C104.60378,88.4039654 101.706687,91.3001282 98.1283744,91.3001282 L9.7141757,91.3001282 C6.13644944,91.3001282 3.23876972,88.4046302 3.23876972,84.8296213 L3.23876972,39.5396716 L3.23876972,39.5396716 Z M-2.15298617,39.5396716 L-2.15298617,84.8296213 C-2.15298617,91.3833243 3.15957363,96.6918841 9.7141757,96.6918841 L98.1283744,96.6918841 C104.684083,96.6918841 109.995536,91.382138 109.995536,84.8296213 L109.995536,39.5396716 C109.995536,32.9859686 104.682977,27.6774087 98.1283744,27.6774087 L9.7141757,27.6774087 C3.15846686,27.6774087 -2.15298617,32.9871549 -2.15298617,39.5396716 Z M14.0222815,80.5166164 L14.0222815,43.8526764 L24.8057933,43.8526764 L35.589305,57.3320661 L46.3728168,43.8526764 L57.1563286,43.8526764 L57.1563286,80.5166164 L46.3728168,80.5166164 L46.3728168,59.4887685 L35.589305,72.9681582 L24.8057933,59.4887685 L24.8057933,80.5166164 L14.0222815,80.5166164 Z M81.4192301,80.5166164 L65.2439624,62.723822 L76.0274742,62.723822 L76.0274742,43.8526764 L86.810986,43.8526764 L86.810986,62.723822 L97.5944978,62.723822 L81.4192301,80.5166164 Z\"transform=\"translate(53.921275, 62.184646) rotate(-60.000000) translate(-53.921275, -62.184646) \"></path>\n    </g>\n</svg>"
        },
        "$:/plugins/tiddlywiki/markdown/new-markdown-button": {
            "title": "$:/plugins/tiddlywiki/markdown/new-markdown-button",
            "tags": "$:/tags/PageControls",
            "caption": "{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}} {{$:/language/Buttons/NewMarkdown/Caption}}",
            "description": "{{$:/language/Buttons/NewMarkdown/Hint}}",
            "list-after": "$:/core/ui/Buttons/new-tiddler",
            "text": "\\whitespace trim\n<$button tooltip={{$:/language/Buttons/NewMarkdown/Hint}} aria-label={{$:/language/Buttons/NewMarkdown/Caption}} class=<<tv-config-toolbar-class>>>\n<$action-sendmessage $message=\"tm-new-tiddler\" type=\"text/x-markdown\"/>\n<$list filter=\"[<tv-config-toolbar-icons>match[yes]]\">\n{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}}\n</$list>\n<$list filter=\"[<tv-config-toolbar-text>match[yes]]\">\n<span class=\"tc-btn-text\"><$text text={{$:/language/Buttons/NewMarkdown/Caption}}/></span>\n</$list>\n</$button>\n"
        },
        "$:/plugins/tiddlywiki/markdown/readme": {
            "title": "$:/plugins/tiddlywiki/markdown/readme",
            "text": "This is a TiddlyWiki plugin for parsing Markdown text, using the [[Remarkable|https://github.com/jonschlinkert/remarkable]] library.\n\nIt is completely self-contained, and doesn't need an Internet connection in order to work. It works both in the browser and under Node.js.\n\n[[Source code|https://github.com/Jermolene/TiddlyWiki5/blob/master/plugins/tiddlywiki/markdown]]\n"
        },
        "$:/plugins/tiddlywiki/markdown/usage": {
            "title": "$:/plugins/tiddlywiki/markdown/usage",
            "text": "! Plugin Configuration\n\n|!Config |!Default |!Description |\n| <code>[[breaks|$:/config/markdown/breaks]]</code>| ``false``|Remarkable library config: Convert '\\n' in paragraphs into ``<br>`` |\n| <code>[[linkify|$:/config/markdown/linkify]]</code>| ``false``|Remarkable library config: Autoconvert URL-like text to links |\n| <code>[[linkNewWindow|$:/config/markdown/linkNewWindow]]</code>| ``true``|For external links, should clicking on them open a new window/tab automatically? |\n| <code>[[quotes|$:/config/markdown/quotes]]</code>| ``“”‘’``|Remarkable library config: Double + single quotes replacement pairs, when ``typographer`` enabled |\n| <code>[[renderWikiText|$:/config/markdown/renderWikiText]]</code>| ``true``|After Markdown is parsed, should any text elements be handed off to the ~WikiText parser for further processing? |\n| <code>[[renderWikiTextPragma|$:/config/markdown/renderWikiTextPragma]]</code>| ``\\rules only html image macrocallinline syslink transcludeinline wikilink filteredtranscludeblock macrocallblock transcludeblock``|When handing off to the ~WikiText parser, what pragma rules should it follow? |\n| <code>[[typographer|$:/config/markdown/typographer]]</code>| ``false``|Remarkable library config: Enable some language-neutral replacement + quotes beautification |\n\n! Creating ~WikiLinks\n\nCreate wiki links with the usual Markdown link syntax targeting `#` and the target tiddler title:\n\n```\n[link text](#TiddlerTitle)\n```\n\nIf the target tiddler has a space in its name, that name must be URL-escaped to be detected as a URL:\n\n```\n[link text](#Test%20Tiddler)\n```\n\n! Images\n\nMarkdown image syntax can be used to reference images by tiddler title or an external URI. For example:\n\n```\n![alt text](/path/to/img.jpg \"Title\")\n\n![alt text](Motovun Jack.jpg \"Title\")\n```\n"
        },
        "$:/plugins/tiddlywiki/markdown/wrapper.js": {
            "title": "$:/plugins/tiddlywiki/markdown/wrapper.js",
            "text": "/*\\\ntitle: $:/plugins/tiddlywiki/markdown/wrapper.js\ntype: application/javascript\nmodule-type: parser\n\nWraps up the remarkable parser for use as a Parser in TiddlyWiki\n\n\\*/\n(function(){\n\n/*jslint node: true, browser: true */\n/*global $tw: false */\n\"use strict\";\n\nvar r = require(\"$:/plugins/tiddlywiki/markdown/remarkable.js\");\n\nvar Remarkable = r.Remarkable,\n\tlinkify = r.linkify,\n\tutils = r.utils;\n\n///// Set up configuration options /////\nfunction parseAsBoolean(tiddlerName) {\n\treturn $tw.wiki.getTiddlerText(tiddlerName).toLowerCase() === \"true\";\n}\nvar pluginOpts = {\n\tlinkNewWindow: parseAsBoolean(\"$:/config/markdown/linkNewWindow\"),\n\trenderWikiText: parseAsBoolean(\"$:/config/markdown/renderWikiText\"),\n\trenderWikiTextPragma: $tw.wiki.getTiddlerText(\"$:/config/markdown/renderWikiTextPragma\").trim()\n};\nvar remarkableOpts = {\n\tbreaks: parseAsBoolean(\"$:/config/markdown/breaks\"),\n\tquotes: $tw.wiki.getTiddlerText(\"$:/config/markdown/quotes\"),\n\ttypographer: parseAsBoolean(\"$:/config/markdown/typographer\")\n};\n\nvar md = new Remarkable(remarkableOpts);\n\nif (parseAsBoolean(\"$:/config/markdown/linkify\")) {\n\tmd = md.use(linkify);\n}\n\nfunction findTagWithType(nodes, startPoint, type, level) {\n\tfor (var i = startPoint; i < nodes.length; i++) {\n\t\tif (nodes[i].type === type && nodes[i].level === level) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn false;\n}\n\n/**\n * Remarkable creates nodes that look like:\n * [\n *   { type: 'paragraph_open'},\n *   { type: 'inline', content: 'Hello World', children:[{type: 'text', content: 'Hello World'}]},\n *   { type: 'paragraph_close'}\n * ]\n *\n * But TiddlyWiki wants the Parser (https://tiddlywiki.com/dev/static/Parser.html) to emit nodes like:\n *\n * [\n *   { type: 'element', tag: 'p', children: [{type: 'text', text: 'Hello World'}]}\n * ]\n */\nfunction convertNodes(remarkableTree, isStartOfInline) {\n\tlet out = [];\n\n\tfunction wrappedElement(elementTag, currentIndex, currentLevel, closingType, nodes) {\n\t\tvar j = findTagWithType(nodes, currentIndex + 1, closingType, currentLevel);\n\t\tif (j === false) {\n\t\t\tconsole.error(\"Failed to find a \" + closingType + \" node after position \" + currentIndex);\n\t\t\tconsole.log(nodes);\n\t\t\treturn currentIndex + 1;\n\t\t}\n\t\tlet children = convertNodes(nodes.slice(currentIndex + 1, j));\n\n\t\tout.push({\n\t\t\ttype: \"element\",\n\t\t\ttag: elementTag,\n\t\t\tchildren: children\n\t\t});\n\t\treturn j;\n\t}\n\n\tfor (var i = 0; i < remarkableTree.length; i++) {\n\t\tvar currentNode = remarkableTree[i];\n\t\tif (currentNode.type === \"paragraph_open\") {\n\t\t\ti = wrappedElement(\"p\", i, currentNode.level, \"paragraph_close\", remarkableTree);\n\t\t} else if (currentNode.type === \"heading_open\") {\n\t\t\ti = wrappedElement(\"h\" + currentNode.hLevel, i, currentNode.level, \"heading_close\", remarkableTree);\n\t\t} else if (currentNode.type === \"bullet_list_open\") {\n\t\t\ti = wrappedElement(\"ul\", i, currentNode.level, \"bullet_list_close\", remarkableTree);\n\t\t} else if (currentNode.type == 'ordered_list_open') {\n\t\t\ti = wrappedElement('ol', i, currentNode.level,'ordered_list_close', remarkableTree);\n\t\t} else if (currentNode.type === \"list_item_open\") {\n\t\t\ti = wrappedElement(\"li\", i, currentNode.level, \"list_item_close\", remarkableTree);\n\t\t} else if (currentNode.type === \"link_open\") {\n\t\t\tvar j = findTagWithType(remarkableTree, i + 1, \"link_close\", currentNode.level);\n\n\t\t\tif (currentNode.href[0] !== \"#\") {\n\t\t\t\t// External link\n\t\t\t\tvar attributes = {\n\t\t\t\t\thref: { type: \"string\", value: currentNode.href }\n\t\t\t\t};\n\t\t\t\tif (pluginOpts.linkNewWindow) {\n\t\t\t\t\tattributes.target = { type: \"string\", value: \"_blank\" };\n\t\t\t\t}\n\t\t\t\tout.push({\n\t\t\t\t\ttype: \"element\",\n\t\t\t\t\ttag: \"a\",\n\t\t\t\t\tattributes: attributes,\n\t\t\t\t\tchildren: convertNodes(remarkableTree.slice(i + 1, j))\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// Internal link\n\t\t\t\tout.push({\n\t\t\t\t\ttype: \"link\",\n\t\t\t\t\tattributes: {\n\t\t\t\t\t\tto: { type: \"string\", value: decodeURI(currentNode.href.substr(1)) }\n\t\t\t\t\t},\n\t\t\t\t\tchildren: convertNodes(remarkableTree.slice(i + 1, j))\n\t\t\t\t});\n\t\t\t}\n\t\t\ti = j;\n\t\t} else if (currentNode.type.substr(currentNode.type.length - 5) === \"_open\") {\n\t\t\tvar tagName = currentNode.type.substr(0, currentNode.type.length - 5);\n\t\t\ti = wrappedElement(tagName, i, currentNode.level, tagName + \"_close\", remarkableTree);\n\t\t} else if (currentNode.type === \"code\") {\n\t\t\tout.push({\n\t\t\t\ttype: \"element\",\n\t\t\t\ttag: currentNode.block ? \"pre\" : \"code\",\n\t\t\t\tchildren: [{ type: \"text\", text: currentNode.content }]\n\t\t\t});\n\t\t} else if (currentNode.type === \"fence\") {\n\t\t\tout.push({\n\t\t\t\ttype: \"codeblock\",\n\t\t\t\tattributes: {\n\t\t\t\t\tlanguage: { type: \"string\", value: currentNode.params },\n\t\t\t\t\tcode: { type: \"string\", value: currentNode.content }\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (currentNode.type === \"image\") {\n\t\t\tout.push({\n\t\t\t\ttype: \"image\",\n\t\t\t\tattributes: {\n\t\t\t\t\ttooltip: { type: \"string\", value: currentNode.alt },\n\t\t\t\t\tsource: { type: \"string\", value: currentNode.src }\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (currentNode.type === \"softbreak\") {\n\t\t\tout.push({\n\t\t\t\ttype: \"element\",\n\t\t\t\ttag: \"br\",\n\t\t\t});\n\t\t} else if (currentNode.type == 'hr') {\n\t\t\tout.push({\n\t\t\t\ttype: 'element',\n\t\t\t\ttag: 'hr',\n\t\t\t});\n\t\t} else if (currentNode.type === \"inline\") {\n\t\t\tout = out.concat(convertNodes(currentNode.children, true));\n\t\t} else if (currentNode.type === \"text\") {\n\t\t\tif (!pluginOpts.renderWikiText) {\n\t\t\t\tout.push({\n\t\t\t\t\ttype: \"text\",\n\t\t\t\t\ttext: currentNode.content\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\t// The Markdown compiler thinks this is just text.\n\t\t\t\t// Hand off to the WikiText parser to see if there's more to render\n\n\t\t\t\t// If we're inside a block element (div, p, td, h1), and this is the first child in the tree,\n\t\t\t\t// handle as a block-level parse. Otherwise not.\n\t\t\t\tvar parseAsInline = !(isStartOfInline && i === 0);\n\t\t\t\tvar textToParse = currentNode.content;\n\t\t\t\tif (pluginOpts.renderWikiTextPragma !== \"\") {\n\t\t\t\t\ttextToParse = pluginOpts.renderWikiTextPragma + \"\\n\" + textToParse;\n\t\t\t\t}\n\t\t\t\tvar wikiParser = $tw.wiki.parseText(\"text/vnd.tiddlywiki\", textToParse, {\n\t\t\t\t\tparseAsInline: parseAsInline\n\t\t\t\t});\n\t\t\t\tvar rs = wikiParser.tree;\n\n\t\t\t\t// If we parsed as a block, but the root element the WikiText parser gave is a paragraph,\n\t\t\t\t// we should discard the paragraph, since the way Remarkable nests its nodes, this \"inline\"\n\t\t\t\t// node is always inside something else that's a block-level element\n\t\t\t\tif (!parseAsInline\n\t\t\t\t\t&& rs.length === 1\n\t\t\t\t\t&& rs[0].type === \"element\"\n\t\t\t\t\t&& rs[0].tag === \"p\"\n\t\t\t\t) {\n\t\t\t\t\trs = rs[0].children;\n\t\t\t\t}\n\n\t\t\t\t// If the original text element started with a space, add it back in\n\t\t\t\tif (rs.length > 0\n\t\t\t\t\t&& rs[0].type === \"text\"\n\t\t\t\t\t&& currentNode.content[0] === \" \"\n\t\t\t\t) {\n\t\t\t\t\trs[0].text = \" \" + rs[0].text;\n\t\t\t\t}\n\t\t\t\tout = out.concat(rs);\n\t\t\t}\n\t\t} else {\n\t\t\tconsole.error(\"Unknown node type: \" + currentNode.type, currentNode);\n\t\t\tout.push({\n\t\t\t\ttype: \"text\",\n\t\t\t\ttext: currentNode.content\n\t\t\t});\n\t\t}\n\t}\n\treturn out;\n}\n\nvar MarkdownParser = function(type, text, options) {\n\tvar tree = md.parse(text, {});\n\t//console.debug(tree);\n\ttree = convertNodes(tree);\n\t//console.debug(tree);\n\n\tthis.tree = tree;\n};\n\nexports[\"text/x-markdown\"] = MarkdownParser;\n\n})();\n",
            "type": "application/javascript",
            "module-type": "parser"
        }
    }
}
<$button tooltip={{$:/language/Buttons/NewMarkdown/Hint}} aria-label={{$:/language/Buttons/NewMarkdown/Caption}} class=<<tv-config-toolbar-class>>>
<$action-sendmessage $message="tm-new-tiddler" type="text/x-markdown"/>
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
{{$:/plugins/tiddlywiki/markdown/images/new-markdown-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/NewMarkdown/Caption}}/></span>
</$list>
</$button>
{
    "tiddlers": {
        "$:/plugins/tobibeer/appear/widget.js": {
            "title": "$:/plugins/tobibeer/appear/widget.js",
            "text": "/*\\\r\ntitle: $:/plugins/tobibeer/appear/widget.js\r\ntype: application/javascript\r\nmodule-type: widget\r\n\r\nUse the appear widget for popups, sliders, accordion menus\r\n\r\n@preserve\r\n\\*/\n(function(){\"use strict\";var t=require(\"$:/core/modules/widgets/widget.js\").widget,e=function(t,e){this.initialise(t,e)},i={};e.prototype=new t;e.prototype.render=function(t,e){this.parentDomNode=t;this.nextSibling=e;this.computeAttributes();this.execute();var i,s,r,a,h,n,l=[];if(this.handle){this.getHandlerCache(this.handle,1);this.refreshHandler()}else{s={type:\"button\"};s.attributes=this.setAttributes(s,\"button\");i=s.attributes[\"class\"].value.trim();s.attributes[\"class\"].value=i+\" appear-show\"+(this.handler?\" tc-popup-absolute\":\"\");s.children=this.wiki.parseText(\"text/vnd.tiddlywiki\",this.show,{parseAsInline:true}).tree;h={type:\"reveal\",children:this.parseTreeNode.children};h.attributes=this.setAttributes(h,\"reveal\");h.isBlock=!(this.mode&&this.mode===\"inline\");if(h.attributes.type&&h.attributes.type.value===\"popup\"){s.attributes.popup=h.attributes.state;l.push(s);if(!this.handler){l.push(h)}else{s.attributes.handler=this.handler}}else{h.attributes.type={type:\"string\",value:\"match\"};h.attributes.text={type:\"string\",value:this.currentTiddler};s.attributes.set=h.attributes.state;s.attributes.setTo={type:\"string\",value:this.currentTiddler};a={type:\"reveal\",isBlock:this.block,children:[s],attributes:{type:{type:\"string\",value:\"nomatch\"},state:h.attributes.state,text:{type:\"string\",value:this.currentTiddler}}};if(!this.once){r=$tw.utils.deepCopy(s);r.attributes[\"class\"].value=i+\" appear-hide \"+(this.attr.button.selectedClass?this.attr.button.selectedClass:\"\");r.attributes.setTo={type:\"string\",value:\"\"};r.children=this.wiki.parseText(\"text/vnd.tiddlywiki\",this.hide,{parseAsInline:true}).tree}n=$tw.utils.deepCopy(a);n.children=[];if(!this.once){n.children.push(r)}if(!this.handler){n.children.push(h)}n.attributes.type.value=\"match\";l.push(a,n)}this.makeChildWidgets(l);this.renderChildren(this.parentDomNode,e);if(this.handler){this.addToHandlerCache(h)}}};e.prototype.execute=function(){var t=this;this.attr={map:{reveal:{\"class\":1,position:1,retain:1,state:1,style:1,tag:1,type:1},button:{\"button-class\":1,\"button-style\":1,\"button-tag\":1,tooltip:1,selectedClass:1}},rename:{\"button-class\":\"class\",\"button-style\":\"style\",\"button-tag\":\"tag\"},button:{},reveal:{}};$tw.utils.each(this.attributes,function(e,i){var s;$tw.utils.each(t.attr.map,function(r,a){$tw.utils.each(Object.keys(r),function(r){if(r==i){t.attr[a][i]=e;s=false;return false}});return s})});this.currentTiddler=this.getVariable(\"currentTiddler\");this.show=this.getValue(this.attributes.show,\"show\");this.hide=this.getValue(this.attributes.hide,\"hide\");if(!this.hide){this.hide=this.show}this.once=this.attributes.once&&this.attributes.once!==\"false\";this.$state=this.attributes.$state;this.mode=this.getValue(this.attributes.mode,\"mode\");this.handle=this.attributes.handle;this.handler=this.attributes.handler;this.handlerVariables=(this.attributes.variables||\"\")+\" currentTiddler\";this.keep=[\"yes\",\"true\"].indexOf((this.getValue(this.attributes.keep,\"keep\")||\"\").toLocaleLowerCase())>-1;if(!this.attr.reveal.state){this.attr.reveal.state=this.getValue(undefined,\"default-state\")+this.currentTiddler+this.getStateQualifier()+\"/\"+(this.attr.reveal.type?this.attr.reveal.type+\"/\":\"\")+(this.mode?this.mode+\"/\":\"\")+(this.once?\"once/\":\"\")+(this.$state?\"/\"+this.$state:\"\")}};e.prototype.refresh=function(t){var e=this.computeAttributes();if(Object.keys(e).length){this.refreshSelf();return true}if(this.handle){this.refreshHandler()}return this.refreshChildren(t)};e.prototype.getValue=function(t,e){var i,s,r={show:\"»\",\"default-state\":\"$:/temp/appear/\"};if(t===undefined){i=this.wiki.getTiddler(\"$:/plugins/tobibeer/appear/defaults/\"+e);if(i){s=i.getFieldString(\"undefined\");if(!s||s===\"false\"){t=i.getFieldString(\"text\")}}}if(t===undefined){t=r[e]}return t};e.prototype.setAttributes=function(t,e){var i=this,s={};$tw.utils.each(Object.keys(this.attr.map[e]),function(r){var a,h=i.attr.rename[r];if(!h){h=r}a=i.getValue(i.attr[e][r],r);if(h===\"class\"){a=[\"appear\",\"appear-\"+e,e===\"reveal\"&&i.keep?\"tc-popup-keep\":\"\",i.mode?\"appear-\"+i.mode:\"\",i.once?\"appear-once\":\"\",a||\"\"].join(\" \")}if(a!==undefined){if(h===\"tag\"){t.tag=a}else{s[h]={type:\"string\",value:a}}}});return s};e.prototype.getHandlerCache=function(t,e){var s=i[t];if(!s||e){i[t]={handled:{},handle:{}};s=i[t]}return s};e.prototype.refreshHandler=function(){var t=this,e=this.getHandlerCache(this.handle),s=e.handle;if(Object.keys(s).length){$tw.utils.each(s,function(e,i){t.removeChildNode(i);t.children.push(t.makeChildWidget(e));t.children[t.children.length-1].render(t.parentDomNode,t.nextSibling)});i[this.handle].handle={}}};e.prototype.removeChildNode=function(t){var e=this;$tw.utils.each(this.children,function(i,s){if(i.children[0].state===t){i.removeChildDomNodes();e.children.splice(s);return false}})};e.prototype.addToHandlerCache=function(t){var e=this,i=t.attributes.state.value,s=this.getHandlerCache(this.handler),r=s.handled[i],a={type:\"vars\",children:[t],attributes:{}};$tw.utils.each((this.handlerVariables||\"\").split(\" \"),function(t){t=t.trim();if(t){a.attributes[t]={type:\"string\",value:(e.getVariable(t)||\"\").toString()}}});if(a!==r){s.handle[i]=a;this.wiki.setText(\"$:/temp/appear-handler/\"+this.handler,\"text\",undefined,i)}};exports.appear=e})();",
            "type": "application/javascript",
            "module-type": "widget"
        },
        "$:/plugins/tobibeer/appear/defaults/show": {
            "title": "$:/plugins/tobibeer/appear/defaults/show",
            "text": "»"
        },
        "$:/plugins/tobibeer/appear/defaults/mode": {
            "title": "$:/plugins/tobibeer/appear/defaults/mode",
            "text": "block"
        },
        "$:/plugins/tobibeer/appear/defaults/keep": {
            "title": "$:/plugins/tobibeer/appear/defaults/keep",
            "text": "yes"
        },
        "$:/plugins/tobibeer/appear/defaults/button-class": {
            "title": "$:/plugins/tobibeer/appear/defaults/button-class",
            "text": "tc-btn-invisible tc-tiddlylink"
        },
        "$:/plugins/tobibeer/appear/defaults/default-state": {
            "title": "$:/plugins/tobibeer/appear/defaults/default-state",
            "text": "$:/temp/appear/"
        },
        "$:/plugins/tobibeer/appear/popup.js": {
            "title": "$:/plugins/tobibeer/appear/popup.js",
            "text": "/*\\\r\ntitle: $:/plugins/tobibeer/appear/popup.js\r\ntype: application/javascript\r\nmodule-type: utils\r\n\r\nAn enhanced version of the core Popup to support:\r\n* absolute popups\r\n* preview popups\r\n* popup z-index\r\n\r\n@preserve\r\n\\*/\n(function(){\"use strict\";var t=require(\"$:/core/modules/utils/dom/popup.js\").Popup,e=require(\"$:/core/modules/widgets/reveal.js\").reveal,s=e.prototype.refresh;t.prototype.show=function(t){var e,s=t.domNode,p=$tw.utils.hasClass(s,\"tc-popup-absolute\"),o=this.popupInfo(s),i=function(t){var e=t,s=0,p=0;do{s+=e.offsetLeft||0;p+=e.offsetTop||0;e=e.offsetParent}while(e);return{left:s,top:p}},l={left:s.offsetLeft,top:s.offsetTop};e=o.popupLevel;if(o.isHandle){e++}this.cancel(e);if(this.findPopup(t.title)===-1){this.popups.push({title:t.title,wiki:t.wiki,domNode:s})}l=p?i(s):l;t.wiki.setTextReference(t.title,\"(\"+l.left+\",\"+l.top+\",\"+s.offsetWidth+\",\"+s.offsetHeight+\")\");if(this.popups.length>0){this.rootElement.addEventListener(\"click\",this,true)}};t.prototype.popupInfo=function(t){var e,s=false,p=t;while(p&&e===undefined){if($tw.utils.hasClass(p,\"tc-popup-handle\")||$tw.utils.hasClass(p,\"tc-popup-keep\")){s=true}if($tw.utils.hasClass(p,\"tc-reveal\")&&($tw.utils.hasClass(p,\"tc-popup\")||$tw.utils.hasClass(p,\"tc-popup-handle\"))){e=parseInt(p.style.zIndex)-1e3}p=p.parentNode}var o={popupLevel:e||0,isHandle:s};return o};t.prototype.handleEvent=function(t){if(t.type===\"click\"){var e=this.popupInfo(t.target),s=e.popupLevel-1;if(e.isHandle){if(s<0){s=1}else{s++}}this.cancel(s)}};e.prototype.refresh=function(){var t,e,p=this.isOpen;e=s.apply(this,arguments);t=this.domNodes[0];if(this.isOpen&&(p!==this.isOpen||!t.style.zIndex)&&t&&(this.type===\"popup\"||$tw.utils.hasClass(t,\"tc-block-dropdown\")&&$tw.utils.hasClass(t,\"tc-reveal\"))){t.style.zIndex=1e3+$tw.popup.popups.length}return e}})();",
            "type": "application/javascript",
            "module-type": "utils"
        },
        "$:/plugins/tobibeer/appear/readme": {
            "title": "$:/plugins/tobibeer/appear/readme",
            "text": "This plugin provides the ''$appear'' widget that can render popups and sliders (inline or block) as well as accordion menus.\n\n!! Attributes\r\n; type\r\n: set to `popup` to have the content appear as a popup\r\n; show\r\n: the button label\r\n; hide\r\n: the hide button label\r\n; mode\r\n: either `block` or `inline`, with respect to the inner content\r\n: any other mode is interpreted as block mode, without the default styles applying, e.g. drop-shadows\r\n; once\r\n: allows to click the button once, then hides it (unless the state is deleted)\r\n; $state\r\n: the widget calculates a state for you, use this to append a simple id\r\n; state\r\n: alternatively, specify a fully qualified state\r\n; keep\r\n: make popups sticky when `yes` or `true`\r\n; handle / handler / variables\r\n: allows to take the popup contents out of the flow and render them elsewhere on the page\r\n: required to properly create popups in table cells and other constained elements\r\n: specify variables to take along\n\n<br>\n\n; documentation / examples / demos...\r\n: http://tobibeer.github.io/tw5-plugins#appear\r\n"
        },
        "$:/plugins/tobibeer/appear/styles": {
            "title": "$:/plugins/tobibeer/appear/styles",
            "tags": "$:/tags/Stylesheet",
            "text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline html\n\n<pre>.tc-reveal.appear-block,\r\n.tc-popup.appear {\r\n\tborder-radius: 5px;\r\n\tpadding: 1px 1em;\r\n\t<<box-shadow \"2px 2px 4px rgba(0,0,0,0.3)\">>;\r\n}\r\n.tc-popup.appear {\r\n\tpadding: 0 1em;\r\n\tbackground: <<colour background>>;\r\n}\r\n.appear-reveal.appear-inline{\r\nmargin-left:5px;\r\n}\r\n.appear-reveal.appear-inline.appear-once{\r\nmargin-left:0;\r\n}</pre>"
        }
    }
}
{
    "tiddlers": {
        "$:/core/images/timestamp": {
            "created": "20161204161241276",
            "text": "<svg class=\"tgc-timestamp tc-image-button\"height=\"20pt\" width=\"20pt\" viewBox=\"0 0 20 20\"><path d=\"M10,0 C4.5,0 0,4.5 0,10 C0,15.5 4.5,20 10,20 C15.5,20 20,15.5 20,10 C20,4.5 15.5,0 10,0 L10,0 Z M10,18 C5.6,18 2,14.4 2,10 C2,5.6 5.6,2 10,2 C14.4,2 18,5.6 18,10 C18,14.4 14.4,18 10,18 Z M10.5,5 L9,5 L9,11 L14.2,14.2 L15,12.9 L10.5,10.2 L10.5,5 Z\"></svg>",
            "title": "$:/core/images/timestamp",
            "tags": "$:/tags/Image",
            "modifier": "TonGerner",
            "modified": "20170726075430605",
            "creator": "TonGerner"
        },
        "$:/core/ui/EditorToolbar/timestamp": {
            "created": "20161118171456554",
            "text": "<$action-sendmessage\n\t$message=\"tm-edit-text-operation\"\n\t$param=\"replace-selection\"\n\ttext=<<now>>\n/>",
            "title": "$:/core/ui/EditorToolbar/timestamp",
            "tags": "$:/tags/EditorToolbar",
            "shortcuts": "((timestamp))",
            "modifier": "TonGerner",
            "modified": "20170726074415991",
            "icon": "$:/core/images/timestamp",
            "description": "{{$:/language/Buttons/TimeStamp/Hint}}",
            "creator": "TonGerner",
            "condition": "[<targetTiddler>!has[type]] [<targetTiddler>type[text/vnd.tiddlywiki]]",
            "caption": "{{$:/language/Buttons/TimeStamp/Caption}}"
        },
        "$:/language/Buttons/TimeStamp/Caption": {
            "text": "insert timestamp",
            "title": "$:/language/Buttons/TimeStamp/Caption",
            "modifier": "TonGerner",
            "modified": "20170409182351950",
            "creator": "TonGerner",
            "created": "20170409182341874"
        },
        "$:/language/Buttons/TimeStamp/Hint": {
            "text": "Insert timestamp",
            "title": "$:/language/Buttons/TimeStamp/Hint",
            "modifier": "TonGerner",
            "modified": "20170409182417864",
            "creator": "TonGerner",
            "created": "20170409182409954"
        },
        "$:/config/ShortcutInfo/timestamp": {
            "created": "20161204162358226",
            "text": "{{$:/language/Buttons/TimeStamp/Hint}}",
            "title": "$:/config/ShortcutInfo/timestamp",
            "modifier": "TonGerner",
            "modified": "20171030143250967",
            "creator": "TonGerner"
        },
        "$:/config/shortcuts/timestamp": {
            "text": "ctrl+D",
            "title": "$:/config/shortcuts/timestamp",
            "modified": "20161204165605507",
            "created": "20161204162542451"
        },
        "$:/plugins/tongerner/timestamp-button/readme": {
            "created": "20170511200701782",
            "text": "A button ({{$:/core/images/timestamp}}) for the Editor toolbar that inserts a timestamp.<br>Adapt the date/time format - `<<now [format]>>` in $:/core/ui/EditorToolbar/timestamp - to your liking.<br>\nAssigned shortcut: {{$:/config/shortcuts/timestamp}}\n\n\n\n",
            "title": "$:/plugins/tongerner/timestamp-button/readme",
            "tags": "",
            "modifier": "TonGerner",
            "modified": "20170801191143597",
            "creator": "TonGerner"
        }
    }
}
Read the Word,Read the World.
[img width=8% [A.png]]
show
hide
hide
show
hide
hide
hide
hide
hide
hide
yes
no
no
no
no
no
yes
no
no
no
no
书读完了

{}
{
    "hasnegate": "true",
    "negate": "!",
    "sortIndex": "created"
}
{
    "hasnegate": "true",
    "negate": "!",
    "sortIndex": "created"
}
notnew
notnew
notnew

settings
settings
no
yes
no
yes
no
no
yes
no
no
no
no
no
no
no
no
no
no
no
no
yes
no
yes
no
yes
no
no
no
no
no
no
no
no
no
no
no
no
yes
yes
Wechtpay
Most Recent Journal
$:/core/ui/AdvancedSearch/System
$:/core/ui/ControlPanel/Plugins/Add/Plugins
Alipay
2021年1月日志
$:/core/ui/ControlPanel/Plugins
$:/core/ui/ControlPanel/Saving/GitHub
$:/core/ui/MoreSideBar/Tags
TableOfContents
open
open
open
open
hide
no
Jerry




16
{
    "tiddlers": {
        "$:/info/browser": {
            "title": "$:/info/browser",
            "text": "yes"
        },
        "$:/info/node": {
            "title": "$:/info/node",
            "text": "no"
        },
        "$:/info/url/full": {
            "title": "$:/info/url/full",
            "text": "file:///E:/OneDrive%20-%20Himalaya/Open/%CE%9B/index.html"
        },
        "$:/info/url/host": {
            "title": "$:/info/url/host",
            "text": ""
        },
        "$:/info/url/hostname": {
            "title": "$:/info/url/hostname",
            "text": ""
        },
        "$:/info/url/protocol": {
            "title": "$:/info/url/protocol",
            "text": "file:"
        },
        "$:/info/url/port": {
            "title": "$:/info/url/port",
            "text": ""
        },
        "$:/info/url/pathname": {
            "title": "$:/info/url/pathname",
            "text": "/E:/OneDrive%20-%20Himalaya/Open/%CE%9B/index.html"
        },
        "$:/info/url/search": {
            "title": "$:/info/url/search",
            "text": ""
        },
        "$:/info/url/origin": {
            "title": "$:/info/url/origin",
            "text": "file://"
        },
        "$:/info/browser/screen/width": {
            "title": "$:/info/browser/screen/width",
            "text": "1366"
        },
        "$:/info/browser/screen/height": {
            "title": "$:/info/browser/screen/height",
            "text": "768"
        },
        "$:/info/browser/language": {
            "title": "$:/info/browser/language",
            "text": "zh-CN"
        }
    }
}





































































































loaded
$:/themes/tiddlywiki/snowwhite
{
    "tiddlers": {
        "$:/themes/tiddlywiki/snowwhite/base": {
            "title": "$:/themes/tiddlywiki/snowwhite/base",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": "\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline\n\n.tc-sidebar-header {\n\ttext-shadow: 0 1px 0 <<colour sidebar-foreground-shadow>>;\n}\n\n.tc-tiddler-info {\n\t<<box-shadow \"inset 1px 2px 3px rgba(0,0,0,0.1)\">>\n}\n\n@media screen {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow \"1px 1px 5px rgba(0, 0, 0, 0.3)\">>\n\t}\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\t<<box-shadow none>>\n\t}\n}\n\n.tc-page-controls button svg, .tc-tiddler-controls button svg, .tc-topbar button svg {\n\t<<transition \"fill 150ms ease-in-out\">>\n}\n\n.tc-tiddler-controls button.tc-selected,\n.tc-page-controls button.tc-selected {\n\t<<filter \"drop-shadow(0px -1px 2px rgba(0,0,0,0.25))\">>\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-edit-tags {\n\t<<box-shadow \"inset 0 1px 8px rgba(0, 0, 0, 0.15)\">>\n}\n\n.tc-tiddler-frame .tc-edit-tags input.tc-edit-texteditor {\n\t<<box-shadow \"none\">>\n\tborder: none;\n\toutline: none;\n}\n\ntextarea.tc-edit-texteditor {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\ncanvas.tc-edit-bitmapeditor  {\n\t<<box-shadow \"2px 2px 5px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-drop-down {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-block-dropdown {\n\tborder-radius: 4px;\n\t<<box-shadow \"2px 2px 10px rgba(0, 0, 0, 0.5)\">>\n}\n\n.tc-modal {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n}\n\n.tc-modal-footer {\n\tborder-radius: 0 0 6px 6px;\n\t<<box-shadow \"inset 0 1px 0 #fff\">>;\n}\n\n\n.tc-alert {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.6)\">>\n}\n\n.tc-notification {\n\tborder-radius: 6px;\n\t<<box-shadow \"0 3px 7px rgba(0,0,0,0.3)\">>\n\ttext-shadow: 0 1px 0 rgba(255,255,255, 0.8);\n}\n\n.tc-sidebar-lists .tc-tab-set .tc-tab-divider {\n\tborder-top: none;\n\theight: 1px;\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.15) 0%, rgba(0,0,0,0.0) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.01) 0%, rgba(0,0,0,0.1) 100%\">>\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\t<<background-linear-gradient \"left, rgba(0,0,0,0.05) 0%, rgba(255,255,255,0.05) 100%\">>\n}\n\n.tc-message-box img {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n\n.tc-plugin-info {\n\t<<box-shadow \"1px 1px 3px rgba(0,0,0,0.5)\">>\n}\n"
        }
    }
}
{
    "tiddlers": {
        "$:/themes/tiddlywiki/vanilla/themetweaks": {
            "title": "$:/themes/tiddlywiki/vanilla/themetweaks",
            "tags": "$:/tags/ControlPanel/Appearance",
            "caption": "{{$:/language/ThemeTweaks/ThemeTweaks}}",
            "text": "\\define lingo-base() $:/language/ThemeTweaks/\n\n\\define replacement-text()\n[img[$(imageTitle)$]]\n\\end\n\n\\define backgroundimage-dropdown()\n<div class=\"tc-drop-down-wrapper\">\n<$button popup=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> class=\"tc-btn-invisible tc-btn-dropdown\">{{$:/core/images/down-arrow}}</$button>\n<$reveal state=<<qualify \"$:/state/popup/themetweaks/backgroundimage\">> type=\"popup\" position=\"belowleft\" text=\"\" default=\"\">\n<div class=\"tc-drop-down\">\n<$macrocall $name=\"image-picker\" actions=\"\"\"\n\n<$action-setfield\n\t$tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"\n\t$value=<<imageTitle>>\n/>\n\n\"\"\"/>\n</div>\n</$reveal>\n</div>\n\\end\n\n\\define backgroundimageattachment-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\" default=\"scroll\">\n<option value=\"scroll\"><<lingo Settings/BackgroundImageAttachment/Scroll>></option>\n<option value=\"fixed\"><<lingo Settings/BackgroundImageAttachment/Fixed>></option>\n</$select>\n\\end\n\n\\define backgroundimagesize-dropdown()\n<$select tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\" default=\"scroll\">\n<option value=\"auto\"><<lingo Settings/BackgroundImageSize/Auto>></option>\n<option value=\"cover\"><<lingo Settings/BackgroundImageSize/Cover>></option>\n<option value=\"contain\"><<lingo Settings/BackgroundImageSize/Contain>></option>\n</$select>\n\\end\n\n<<lingo ThemeTweaks/Hint>>\n\n! <<lingo Options>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><<lingo Options/SidebarLayout>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\"><option value=\"fixed-fluid\"><<lingo Options/SidebarLayout/Fixed-Fluid>></option><option value=\"fluid-fixed\"><<lingo Options/SidebarLayout/Fluid-Fixed>></option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><<lingo Options/StickyTitles>></$link><br>//<<lingo Options/StickyTitles/Hint>>// |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\"><option value=\"no\">{{$:/language/No}}</option><option value=\"yes\">{{$:/language/Yes}}</option></$select> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><<lingo Options/CodeWrapping>></$link> |<$select tiddler=\"$:/themes/tiddlywiki/vanilla/options/codewrapping\"><option value=\"pre\">{{$:/language/No}}</option><option value=\"pre-wrap\">{{$:/language/Yes}}</option></$select> |\n\n! <<lingo Settings>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\"><<lingo Settings/FontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/fontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\"><<lingo Settings/CodeFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/codefontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\"><<lingo Settings/EditorFontFamily>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/editorfontfamily\" default=\"\" tag=\"input\"/> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\"><<lingo Settings/BackgroundImage>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimage\" default=\"\" tag=\"input\"/> |<<backgroundimage-dropdown>> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment\"><<lingo Settings/BackgroundImageAttachment>></$link> |<<backgroundimageattachment-dropdown>> | |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize\"><<lingo Settings/BackgroundImageSize>></$link> |<<backgroundimagesize-dropdown>> | |\n\n! <<lingo Metrics>>\n\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\"><<lingo Metrics/FontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/fontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\"><<lingo Metrics/LineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/lineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\"><<lingo Metrics/BodyFontSize>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\"><<lingo Metrics/BodyLineHeight>></$link> |<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/bodylineheight\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\"><<lingo Metrics/StoryLeft>></$link><br>//<<lingo Metrics/StoryLeft/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyleft\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\"><<lingo Metrics/StoryTop>></$link><br>//<<lingo Metrics/StoryTop/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storytop\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\"><<lingo Metrics/StoryRight>></$link><br>//<<lingo Metrics/StoryRight/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storyright\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\"><<lingo Metrics/StoryWidth>></$link><br>//<<lingo Metrics/StoryWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/storywidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\"><<lingo Metrics/TiddlerWidth>></$link><br>//<<lingo Metrics/TiddlerWidth/Hint>>//<br> |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\"><<lingo Metrics/SidebarBreakpoint>></$link><br>//<<lingo Metrics/SidebarBreakpoint/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint\" default=\"\" tag=\"input\"/> |\n|<$link to=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\"><<lingo Metrics/SidebarWidth>></$link><br>//<<lingo Metrics/SidebarWidth/Hint>>// |^<$edit-text tiddler=\"$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth\" default=\"\" tag=\"input\"/> |\n"
        },
        "$:/themes/tiddlywiki/vanilla/base": {
            "title": "$:/themes/tiddlywiki/vanilla/base",
            "tags": "[[$:/tags/Stylesheet]]",
            "text": "\\define custom-background-datauri()\n<$set name=\"background\" value={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}>\n<$list filter=\"[<background>is[image]]\">\n`background: url(`\n<$list filter=\"[<background>!has[_canonical_uri]]\">\n`\"`<$macrocall $name=\"datauri\" title={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}}/>`\"`\n</$list>\n<$list filter=\"[<background>has[_canonical_uri]]\">\n`\"`<$view tiddler={{$:/themes/tiddlywiki/vanilla/settings/backgroundimage}} field=\"_canonical_uri\"/>`\"`\n</$list>\n`) center center;`\n`background-attachment: `{{$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment}}`;\n-webkit-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-moz-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\n-o-background-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;\nbackground-size:` {{$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize}}`;`\n</$list>\n</$set>\n\\end\n\n\\define if-fluid-fixed(text,hiddenSidebarText)\n<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/sidebarlayout\" type=\"match\" text=\"fluid-fixed\">\n$text$\n<$reveal state=\"$:/state/sidebar\" type=\"nomatch\" text=\"yes\" default=\"yes\">\n$hiddenSidebarText$\n</$reveal>\n</$reveal>\n\\end\n\n\\define if-editor-height-fixed(then,else)\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"fixed\">\n$then$\n</$reveal>\n<$reveal state=\"$:/config/TextEditor/EditorHeight/Mode\" type=\"match\" text=\"auto\">\n$else$\n</$reveal>\n\\end\n\n\\rules only filteredtranscludeinline transcludeinline macrodef macrocallinline macrocallblock\n\n/*\n** Start with the normalize CSS reset, and then belay some of its effects\n*/\n\n{{$:/themes/tiddlywiki/vanilla/reset}}\n\n*, input[type=\"search\"] {\n\tbox-sizing: border-box;\n\t-moz-box-sizing: border-box;\n\t-webkit-box-sizing: border-box;\n}\n\nhtml button {\n\tline-height: 1.2;\n\tcolor: <<colour button-foreground>>;\n\tbackground: <<colour button-background>>;\n\tborder-color: <<colour button-border>>;\n}\n\n/*\n** Basic element styles\n*/\n\nhtml {\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/fontfamily}};\n\ttext-rendering: optimizeLegibility; /* Enables kerning and ligatures etc. */\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\nhtml:-webkit-full-screen {\n\tbackground-color: <<colour page-background>>;\n}\n\nbody.tc-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/fontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/lineheight}};\n\tword-wrap: break-word;\n\t<<custom-background-datauri>>\n\tcolor: <<colour foreground>>;\n\tbackground-color: <<colour page-background>>;\n\tfill: <<colour foreground>>;\n}\n\n<<if-background-attachment \"\"\"\n\nbody.tc-body {\n        background-color: transparent;\n}\n\n\"\"\">>\n\nh1, h2, h3, h4, h5, h6 {\n\tline-height: 1.2;\n\tfont-weight: 300;\n}\n\npre {\n\tdisplay: block;\n\tpadding: 14px;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\tword-break: normal;\n\tword-wrap: break-word;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tbackground-color: <<colour pre-background>>;\n\tborder: 1px solid <<colour pre-border>>;\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\ncode {\n\tcolor: <<colour code-foreground>>;\n\tbackground-color: <<colour code-background>>;\n\tborder: 1px solid <<colour code-border>>;\n\twhite-space: {{$:/themes/tiddlywiki/vanilla/options/codewrapping}};\n\tpadding: 0 3px 2px;\n\tborder-radius: 3px;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/codefontfamily}};\n}\n\nblockquote {\n\tborder-left: 5px solid <<colour blockquote-bar>>;\n\tmargin-left: 25px;\n\tpadding-left: 10px;\n\tquotes: \"\\201C\"\"\\201D\"\"\\2018\"\"\\2019\";\n}\n\nblockquote > div {\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n}\n\nblockquote.tc-big-quote {\n\tfont-family: Georgia, serif;\n\tposition: relative;\n\tbackground: <<colour pre-background>>;\n\tborder-left: none;\n\tmargin-left: 50px;\n\tmargin-right: 50px;\n\tpadding: 10px;\n    border-radius: 8px;\n}\n\nblockquote.tc-big-quote cite:before {\n\tcontent: \"\\2014 \\2009\";\n}\n\nblockquote.tc-big-quote:before {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: open-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n    left: -50px;\n    top: 42px;\n}\n\nblockquote.tc-big-quote:after {\n\tfont-family: Georgia, serif;\n\tcolor: <<colour blockquote-bar>>;\n\tcontent: close-quote;\n\tfont-size: 8em;\n\tline-height: 0.1em;\n\tmargin-right: 0.25em;\n\tvertical-align: -0.4em;\n\tposition: absolute;\n    right: -80px;\n    bottom: -20px;\n}\n\ndl dt {\n\tfont-weight: bold;\n\tmargin-top: 6px;\n}\n\nbutton, textarea, input, select {\n\toutline-color: <<colour primary>>;\n}\n\ntextarea,\ninput[type=text],\ninput[type=search],\ninput[type=\"\"],\ninput:not([type]) {\n\tcolor: <<colour foreground>>;\n\tbackground: <<colour background>>;\n}\n\ninput[type=\"checkbox\"] {\n  vertical-align: middle;\n}\n\n.tc-muted {\n\tcolor: <<colour muted-foreground>>;\n}\n\nsvg.tc-image-button {\n\tpadding: 0px 1px 1px 0px;\n}\n\n.tc-icon-wrapper > svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\nkbd {\n\tdisplay: inline-block;\n\tpadding: 3px 5px;\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tcolor: <<colour foreground>>;\n\tvertical-align: middle;\n\tbackground-color: <<colour background>>;\n\tborder: solid 1px <<colour muted-foreground>>;\n\tborder-bottom-color: <<colour muted-foreground>>;\n\tborder-radius: 3px;\n\tbox-shadow: inset 0 -1px 0 <<colour muted-foreground>>;\n}\n\n/*\nMarkdown likes putting code elements inside pre elements\n*/\npre > code {\n\tpadding: 0;\n\tborder: none;\n\tbackground-color: inherit;\n\tcolor: inherit;\n}\n\ntable {\n\tborder: 1px solid <<colour table-border>>;\n\twidth: auto;\n\tmax-width: 100%;\n\tcaption-side: bottom;\n\tmargin-top: 1em;\n\tmargin-bottom: 1em;\n\t/* next 2 elements needed, since normalize 8.0.1 */\n\tborder-collapse: collapse;\n\tborder-spacing: 0;\n}\n\ntable th, table td {\n\tpadding: 0 7px 0 7px;\n\tborder-top: 1px solid <<colour table-border>>;\n\tborder-left: 1px solid <<colour table-border>>;\n}\n\ntable thead tr td, table th {\n\tbackground-color: <<colour table-header-background>>;\n\tfont-weight: bold;\n}\n\ntable tfoot tr td {\n\tbackground-color: <<colour table-footer-background>>;\n}\n\n.tc-csv-table {\n\twhite-space: nowrap;\n}\n\n.tc-tiddler-frame img,\n.tc-tiddler-frame svg,\n.tc-tiddler-frame canvas,\n.tc-tiddler-frame embed,\n.tc-tiddler-frame iframe {\n\tmax-width: 100%;\n}\n\n.tc-tiddler-body > embed,\n.tc-tiddler-body > iframe {\n\twidth: 100%;\n\theight: 600px;\n}\n\n/*\n** Links\n*/\n\nbutton.tc-tiddlylink,\na.tc-tiddlylink {\n\ttext-decoration: none;\n\tfont-weight: 500;\n\tcolor: <<colour tiddler-link-foreground>>;\n\t-webkit-user-select: inherit; /* Otherwise the draggable attribute makes links impossible to select */\n}\n\n.tc-sidebar-lists a.tc-tiddlylink {\n\tcolor: <<colour sidebar-tiddler-link-foreground>>;\n}\n\n.tc-sidebar-lists a.tc-tiddlylink:hover {\n\tcolor: <<colour sidebar-tiddler-link-foreground-hover>>;\n}\n\nbutton.tc-tiddlylink:hover,\na.tc-tiddlylink:hover {\n\ttext-decoration: underline;\n}\n\na.tc-tiddlylink-resolves {\n}\n\na.tc-tiddlylink-shadow {\n\tfont-weight: bold;\n}\n\na.tc-tiddlylink-shadow.tc-tiddlylink-resolves {\n\tfont-weight: normal;\n}\n\na.tc-tiddlylink-missing {\n\tfont-style: italic;\n}\n\na.tc-tiddlylink-external {\n\ttext-decoration: underline;\n\tcolor: <<colour external-link-foreground>>;\n\tbackground-color: <<colour external-link-background>>;\n}\n\na.tc-tiddlylink-external:visited {\n\tcolor: <<colour external-link-foreground-visited>>;\n\tbackground-color: <<colour external-link-background-visited>>;\n}\n\na.tc-tiddlylink-external:hover {\n\tcolor: <<colour external-link-foreground-hover>>;\n\tbackground-color: <<colour external-link-background-hover>>;\n}\n\n/*\n** Drag and drop styles\n*/\n\n.tc-tiddler-dragger {\n\tposition: relative;\n\tz-index: -10000;\n}\n\n.tc-tiddler-dragger-inner {\n\tposition: absolute;\n\ttop: -1000px;\n\tleft: -1000px;\n\tdisplay: inline-block;\n\tpadding: 8px 20px;\n\tfont-size: 16.9px;\n\tfont-weight: bold;\n\tline-height: 20px;\n\tcolor: <<colour dragger-foreground>>;\n\ttext-shadow: 0 1px 0 rgba(0, 0, 0, 1);\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour dragger-background>>;\n\tborder-radius: 20px;\n}\n\n.tc-tiddler-dragger-cover {\n\tposition: absolute;\n\tbackground-color: <<colour page-background>>;\n}\n\n.tc-dropzone {\n\tposition: relative;\n}\n\n.tc-dropzone.tc-dragover:before {\n\tz-index: 10000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour dropzone-background>>;\n\ttext-align: center;\n\tcontent: \"<<lingo DropMessage>>\";\n}\n\n.tc-droppable > .tc-droppable-placeholder {\n\tdisplay: none;\n}\n\n.tc-droppable.tc-dragover > .tc-droppable-placeholder {\n\tdisplay: block;\n\tborder: 2px dashed <<colour dropzone-background>>;\n}\n\n.tc-draggable {\n\tcursor: move;\n}\n\n.tc-sidebar-tab-open .tc-droppable-placeholder, .tc-tagged-draggable-list .tc-droppable-placeholder,\n.tc-links-draggable-list .tc-droppable-placeholder {\n\tline-height: 2em;\n\theight: 2em;\n}\n\n.tc-sidebar-tab-open-item {\n\tposition: relative;\n}\n\n.tc-sidebar-tab-open .tc-btn-invisible.tc-btn-mini svg {\n\tfont-size: 0.7em;\n\tfill: <<colour muted-foreground>>;\n}\n\n/*\n** Plugin reload warning\n*/\n\n.tc-plugin-reload-warning {\n\tz-index: 1000;\n\tdisplay: block;\n\tposition: fixed;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbackground: <<colour alert-background>>;\n\ttext-align: center;\n}\n\n/*\n** Buttons\n*/\n\nbutton svg, button img, label svg, label img {\n\tvertical-align: middle;\n}\n\n.tc-btn-invisible {\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n    \tcursor: pointer;\n\tcolor: <<colour foreground>>;\n}\n\n.tc-btn-boxed {\n\tfont-size: 0.6em;\n\tpadding: 0.2em;\n\tmargin: 1px;\n\tbackground: none;\n\tborder: 1px solid <<colour tiddler-controls-foreground>>;\n\tborder-radius: 0.25em;\n}\n\nhtml body.tc-body .tc-btn-boxed svg {\n\tfont-size: 1.6666em;\n}\n\n.tc-btn-boxed:hover {\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n}\n\nhtml body.tc-body .tc-btn-boxed:hover svg {\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded {\n\tfont-size: 0.5em;\n\tline-height: 2;\n\tpadding: 0em 0.3em 0.2em 0.4em;\n\tmargin: 1px;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour muted-foreground>>;\n\tcolor: <<colour background>>;\n\tborder-radius: 2em;\n}\n\nhtml body.tc-body .tc-btn-rounded svg {\n\tfont-size: 1.6666em;\n\tfill: <<colour background>>;\n}\n\n.tc-btn-rounded:hover {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tcolor: <<colour muted-foreground>>;\n}\n\nhtml body.tc-body .tc-btn-rounded:hover svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-icon svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-btn-text {\n\tpadding: 0;\n\tmargin: 0;\n}\n\n/* used for documentation \"fake\" buttons */\n.tc-btn-standard {\n\tline-height: 1.8;\n\tcolor: #667;\n\tbackground-color: #e0e0e0;\n\tborder: 1px solid #888;\n\tpadding: 2px 1px 2px 1px;\n\tmargin: 1px 4px 1px 4px;\n}\n\n.tc-btn-big-green {\n\tdisplay: inline-block;\n\tpadding: 8px;\n\tmargin: 4px 8px 4px 8px;\n\tbackground: <<colour download-background>>;\n\tcolor: <<colour download-foreground>>;\n\tfill: <<colour download-foreground>>;\n\tborder: none;\n\tborder-radius: 2px;\n\tfont-size: 1.2em;\n\tline-height: 1.4em;\n\ttext-decoration: none;\n}\n\n.tc-btn-big-green svg,\n.tc-btn-big-green img {\n\theight: 2em;\n\twidth: 2em;\n\tvertical-align: middle;\n\tfill: <<colour download-foreground>>;\n}\n\n.tc-primary-btn {\n \tbackground: <<colour primary>>;\n}\n\n.tc-sidebar-lists input {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-sidebar-lists button {\n\tcolor: <<colour sidebar-button-foreground>>;\n\tfill: <<colour sidebar-button-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini {\n\tcolor: <<colour sidebar-muted-foreground>>;\n}\n\n.tc-sidebar-lists button.tc-btn-mini:hover {\n\tcolor: <<colour sidebar-muted-foreground-hover>>;\n}\n\nbutton svg.tc-image-button, button .tc-image-button img {\n\theight: 1em;\n\twidth: 1em;\n}\n\n.tc-unfold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 100%;\n\twidth: calc(100% + 2px);\n\tmargin-left: -43px;\n\ttext-align: center;\n\tborder-top: 2px solid <<colour tiddler-info-background>>;\n\tmargin-top: 4px;\n}\n\n.tc-unfold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n\tborder-top: 2px solid <<colour tiddler-info-border>>;\n}\n\n.tc-unfold-banner svg, .tc-fold-banner svg {\n\theight: 0.75em;\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-unfold-banner:hover svg, .tc-fold-banner:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n.tc-fold-banner {\n\tposition: absolute;\n\tpadding: 0;\n\tmargin: 0;\n\tbackground: none;\n\tborder: none;\n\twidth: 23px;\n\ttext-align: center;\n\tmargin-left: -35px;\n\ttop: 6px;\n\tbottom: 6px;\n}\n\n.tc-fold-banner:hover {\n\tbackground: <<colour tiddler-info-background>>;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-unfold-banner {\n\t\tposition: static;\n\t\twidth: calc(100% + 59px);\n\t}\n\n\t.tc-fold-banner {\n\t\twidth: 16px;\n\t\tmargin-left: -16px;\n\t\tfont-size: 0.75em;\n\t}\n\n}\n\n/*\n** Tags and missing tiddlers\n*/\n\n.tc-tag-list-item {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin-right: 7px;\n}\n\n.tc-tags-wrapper {\n\tmargin: 4px 0 14px 0;\n}\n\n.tc-missing-tiddler-label {\n\tfont-style: italic;\n\tfont-weight: normal;\n\tdisplay: inline-block;\n\tfont-size: 11.844px;\n\tline-height: 14px;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n}\n\nbutton.tc-tag-label, span.tc-tag-label {\n\tdisplay: inline-block;\n\tpadding: 0.16em 0.7em;\n\tfont-size: 0.9em;\n\tfont-weight: 400;\n\tline-height: 1.2em;\n\tcolor: <<colour tag-foreground>>;\n\twhite-space: nowrap;\n\tvertical-align: baseline;\n\tbackground-color: <<colour tag-background>>;\n\tborder-radius: 1em;\n}\n\n.tc-sidebar-scrollable .tc-tag-label {\n\ttext-shadow: none;\n}\n\n.tc-untagged-separator {\n\twidth: 10em;\n\tleft: 0;\n\tmargin-left: 0;\n\tborder: 0;\n\theight: 1px;\n\tbackground: <<colour tab-divider>>;\n}\n\nbutton.tc-untagged-label {\n\tbackground-color: <<colour untagged-background>>;\n}\n\n.tc-tag-label svg, .tc-tag-label img {\n\theight: 1em;\n\twidth: 1em;\n\tmargin-right: 3px; \n\tmargin-bottom: 1px;\n\tvertical-align: text-bottom;\n}\n\n.tc-edit-tags button.tc-remove-tag-button svg {\n\tfont-size: 0.7em;\n\tvertical-align: middle;\n}\n\n.tc-tag-manager-table .tc-tag-label {\n\twhite-space: normal;\n}\n\n.tc-tag-manager-tag {\n\twidth: 100%;\n}\n\nbutton.tc-btn-invisible.tc-remove-tag-button {\n\toutline: none;\n}\n\n/*\n** Page layout\n*/\n\n.tc-topbar {\n\tposition: fixed;\n\tz-index: 1200;\n}\n\n.tc-topbar-left {\n\tleft: 29px;\n\ttop: 5px;\n}\n\n.tc-topbar-right {\n\ttop: 5px;\n\tright: 29px;\n}\n\n.tc-topbar button {\n\tpadding: 8px;\n}\n\n.tc-topbar svg {\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-topbar button:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-sidebar-header {\n\tcolor: <<colour sidebar-foreground>>;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-sidebar-header .tc-title a.tc-tiddlylink-resolves {\n\tfont-weight: 300;\n}\n\n.tc-sidebar-header .tc-sidebar-lists p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-sidebar-header .tc-missing-tiddler-label {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-advanced-search input {\n\twidth: 60%;\n}\n\n.tc-search a svg {\n\twidth: 1.2em;\n\theight: 1.2em;\n\tvertical-align: middle;\n}\n\n.tc-page-controls {\n\tmargin-top: 14px;\n\tfont-size: 1.5em;\n}\n\n.tc-page-controls .tc-drop-down {\n  font-size: 1rem;\n}\n\n.tc-page-controls button {\n\tmargin-right: 0.5em;\n}\n\n.tc-page-controls a.tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-page-controls img {\n\twidth: 1em;\n}\n\n.tc-page-controls svg {\n\tfill: <<colour sidebar-controls-foreground>>;\n}\n\n.tc-page-controls button:hover svg, .tc-page-controls a:hover svg {\n\tfill: <<colour sidebar-controls-foreground-hover>>;\n}\n\n.tc-menu-list-item {\n\twhite-space: nowrap;\n}\n\n.tc-menu-list-count {\n\tfont-weight: bold;\n}\n\n.tc-menu-list-subitem {\n\tpadding-left: 7px;\n}\n\n.tc-story-river {\n\tposition: relative;\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-sidebar-header {\n\t\tpadding: 14px;\n\t\tmin-height: 32px;\n\t\tmargin-top: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tpadding: 0;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-message-box {\n\t\tmargin: 21px -21px 21px -21px;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tposition: fixed;\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t\tbottom: 0;\n\t\tright: 0;\n\t\toverflow-y: auto;\n\t\toverflow-x: auto;\n\t\t-webkit-overflow-scrolling: touch;\n\t\tmargin: 0 0 0 -42px;\n\t\tpadding: 71px 0 28px 42px;\n\t}\n\n\thtml[dir=\"rtl\"] .tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tright: {{$:/themes/tiddlywiki/vanilla/metrics/storyright}};\n\t}\n\n\t.tc-story-river {\n\t\tposition: relative;\n\t\tleft: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\ttop: {{$:/themes/tiddlywiki/vanilla/metrics/storytop}};\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/storywidth}};\n\t\tpadding: 42px 42px 42px 42px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-story-river {\n\t\twidth: calc(100% - {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}});\n\t}\n\n\">>\n\n}\n\n@media print {\n\n\tbody.tc-body {\n\t\tbackground-color: transparent;\n\t}\n\n\t.tc-sidebar-header, .tc-topbar {\n\t\tdisplay: none;\n\t}\n\n\t.tc-story-river {\n\t\tmargin: 0;\n\t\tpadding: 0;\n\t}\n\n\t.tc-story-river .tc-tiddler-frame {\n\t\tmargin: 0;\n\t\tborder: none;\n\t\tpadding: 0;\n\t}\n}\n\n/*\n** Tiddler styles\n*/\n\n.tc-tiddler-frame {\n\tposition: relative;\n\tmargin-bottom: 28px;\n\tbackground-color: <<colour tiddler-background>>;\n\tborder: 1px solid <<colour tiddler-border>>;\n}\n\n{{$:/themes/tiddlywiki/vanilla/sticky}}\n\n.tc-tiddler-info {\n\tpadding: 14px 42px 14px 42px;\n\tbackground-color: <<colour tiddler-info-background>>;\n\tborder-top: 1px solid <<colour tiddler-info-border>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-border>>;\n}\n\n.tc-tiddler-info p {\n\tmargin-top: 3px;\n\tmargin-bottom: 3px;\n}\n\n.tc-tiddler-info .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour tiddler-info-tab-background>>;\n\tborder-bottom: 1px solid <<colour tiddler-info-tab-background>>;\n}\n\n.tc-view-field-table {\n\twidth: 100%;\n}\n\n.tc-view-field-name {\n\twidth: 1%; /* Makes this column be as narrow as possible */\n\ttext-align: right;\n\tfont-style: italic;\n\tfont-weight: 200;\n}\n\n.tc-view-field-value {\n}\n\n@media (max-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 14px 14px 14px 14px;\n\t}\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -14px 0 -14px;\n\t}\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\t.tc-tiddler-frame {\n\t\tpadding: 28px 42px 42px 42px;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth}};\n\t\tborder-radius: 2px;\n\t}\n\n<<if-no-sidebar \"\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\">>\n\n\t.tc-tiddler-info {\n\t\tmargin: 0 -42px 0 -42px;\n\t}\n}\n\n.tc-site-title,\n.tc-titlebar {\n\tfont-weight: 300;\n\tfont-size: 2.35em;\n\tline-height: 1.2em;\n\tcolor: <<colour tiddler-title-foreground>>;\n\tmargin: 0;\n}\n\n.tc-site-title {\n\tcolor: <<colour site-title-foreground>>;\n}\n\n.tc-tiddler-title-icon {\n\tvertical-align: middle;\n\tmargin-right: .1em;\n}\n\n.tc-system-title-prefix {\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-titlebar h2 {\n\tfont-size: 1em;\n\tdisplay: inline;\n}\n\n.tc-titlebar img {\n\theight: 1em;\n}\n\n.tc-subtitle {\n\tfont-size: 0.9em;\n\tcolor: <<colour tiddler-subtitle-foreground>>;\n\tfont-weight: 300;\n}\n\n.tc-subtitle .tc-tiddlylink {\n\tmargin-right: .3em;\n}\n\n.tc-tiddler-missing .tc-title {\n  font-style: italic;\n  font-weight: normal;\n}\n\n.tc-tiddler-frame .tc-tiddler-controls {\n\tfloat: right;\n}\n\n.tc-tiddler-controls .tc-drop-down {\n\tfont-size: 0.6em;\n}\n\n.tc-tiddler-controls .tc-drop-down .tc-drop-down {\n\tfont-size: 1em;\n}\n\n.tc-tiddler-controls > span > button,\n.tc-tiddler-controls > span > span > button,\n.tc-tiddler-controls > span > span > span > button {\n\tvertical-align: baseline;\n\tmargin-left:5px;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img,\n.tc-search button svg, .tc-search a svg {\n\tfill: <<colour tiddler-controls-foreground>>;\n}\n\n.tc-tiddler-controls button svg, .tc-tiddler-controls button img {\n\theight: 0.75em;\n}\n\n.tc-search button svg, .tc-search a svg {\n    height: 1.2em;\n    width: 1.2em;\n    margin: 0 0.25em;\n}\n\n.tc-tiddler-controls button.tc-selected svg,\n.tc-page-controls button.tc-selected svg  {\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n}\n\n.tc-tiddler-controls button.tc-btn-invisible:hover svg,\n.tc-search button:hover svg, .tc-search a:hover svg {\n\tfill: <<colour tiddler-controls-foreground-hover>>;\n}\n\n@media print {\n\t.tc-tiddler-controls {\n\t\tdisplay: none;\n\t}\n}\n\n.tc-tiddler-help { /* Help prompts within tiddler template */\n\tcolor: <<colour muted-foreground>>;\n\tmargin-top: 14px;\n}\n\n.tc-tiddler-help a.tc-tiddlylink {\n\tcolor: <<colour very-muted-foreground>>;\n}\n\n.tc-tiddler-frame .tc-edit-texteditor {\n\twidth: 100%;\n\tmargin: 4px 0 4px 0;\n}\n\n.tc-tiddler-frame input.tc-edit-texteditor,\n.tc-tiddler-frame textarea.tc-edit-texteditor,\n.tc-tiddler-frame iframe.tc-edit-texteditor {\n\tpadding: 3px 3px 3px 3px;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tbackground-color: <<colour tiddler-editor-background>>;\n\tline-height: 1.3em;\n\t-webkit-appearance: none;\n\tfont-family: {{$:/themes/tiddlywiki/vanilla/settings/editorfontfamily}};\n}\n\n.tc-tiddler-frame .tc-binary-warning {\n\twidth: 100%;\n\theight: 5em;\n\ttext-align: center;\n\tpadding: 3em 3em 6em 3em;\n\tbackground: <<colour alert-background>>;\n\tborder: 1px solid <<colour alert-border>>;\n}\n\ncanvas.tc-edit-bitmapeditor  {\n\tborder: 6px solid <<colour tiddler-editor-border-image>>;\n\tcursor: crosshair;\n\t-moz-user-select: none;\n\t-webkit-user-select: none;\n\t-ms-user-select: none;\n\tmargin-top: 6px;\n\tmargin-bottom: 6px;\n}\n\n.tc-edit-bitmapeditor-width {\n\tdisplay: block;\n}\n\n.tc-edit-bitmapeditor-height {\n\tdisplay: block;\n}\n\n.tc-tiddler-body {\n\tclear: both;\n}\n\n.tc-tiddler-frame .tc-tiddler-body {\n\tfont-size: {{$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize}};\n\tline-height: {{$:/themes/tiddlywiki/vanilla/metrics/bodylineheight}};\n}\n\n.tc-titlebar, .tc-tiddler-edit-title {\n\toverflow: hidden; /* https://github.com/Jermolene/TiddlyWiki5/issues/282 */\n}\n\nhtml body.tc-body.tc-single-tiddler-window {\n\tmargin: 1em;\n\tbackground: <<colour tiddler-background>>;\n}\n\n.tc-single-tiddler-window img,\n.tc-single-tiddler-window svg,\n.tc-single-tiddler-window canvas,\n.tc-single-tiddler-window embed,\n.tc-single-tiddler-window iframe {\n\tmax-width: 100%;\n}\n\n/*\n** Editor\n*/\n\n.tc-editor-toolbar {\n\tmargin-top: 8px;\n}\n\n.tc-editor-toolbar button {\n\tvertical-align: middle;\n\tbackground-color: <<colour tiddler-controls-foreground>>;\n\tcolor: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour tiddler-controls-foreground-selected>>;\n\tborder-radius: 4px;\n\tpadding: 3px;\n\tmargin: 2px 0 2px 4px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-adjunct {\n\tmargin-left: 1px;\n\twidth: 1em;\n\tborder-radius: 8px;\n}\n\n.tc-editor-toolbar button.tc-text-editor-toolbar-item-start-group {\n\tmargin-left: 11px;\n}\n\n.tc-editor-toolbar button.tc-selected {\n\tbackground-color: <<colour primary>>;\n}\n\n.tc-editor-toolbar button svg {\n\twidth: 1.6em;\n\theight: 1.2em;\n}\n\n.tc-editor-toolbar button:hover {\n\tbackground-color: <<colour tiddler-controls-foreground-selected>>;\n\tfill: <<colour background>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more {\n\twhite-space: normal;\n}\n\n.tc-editor-toolbar .tc-text-editor-toolbar-more button {\n\tdisplay: inline-block;\n\tpadding: 3px;\n\twidth: auto;\n}\n\n.tc-editor-toolbar .tc-search-results {\n\tpadding: 0;\n}\n\n/*\n** Adjustments for fluid-fixed mode\n*/\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n<<if-fluid-fixed text:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 0;\n\t\tposition: relative;\n\t\twidth: auto;\n\t\tleft: 0;\n\t\tmargin-left: {{$:/themes/tiddlywiki/vanilla/metrics/storyleft}};\n\t\tmargin-right: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\t.tc-tiddler-frame {\n\t\twidth: 100%;\n\t}\n\n\t.tc-sidebar-scrollable {\n\t\tleft: auto;\n\t\tbottom: 0;\n\t\tright: 0;\n\t\twidth: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth}};\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 42px);\n\t}\n\n\"\"\" hiddenSidebarText:\"\"\"\n\n\t.tc-story-river {\n\t\tpadding-right: 3em;\n\t\tmargin-right: 0;\n\t}\n\n\tbody.tc-body .tc-storyview-zoomin-tiddler {\n\t\twidth: 100%;\n\t\twidth: calc(100% - 84px);\n\t}\n\n\"\"\">>\n\n}\n\n/*\n** Toolbar buttons\n*/\n\n.tc-page-controls svg.tc-image-new-button {\n  fill: <<colour toolbar-new-button>>;\n}\n\n.tc-page-controls svg.tc-image-options-button {\n  fill: <<colour toolbar-options-button>>;\n}\n\n.tc-page-controls svg.tc-image-save-button {\n  fill: <<colour toolbar-save-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-info-button {\n  fill: <<colour toolbar-info-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-edit-button {\n  fill: <<colour toolbar-edit-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-close-button {\n  fill: <<colour toolbar-close-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-delete-button {\n  fill: <<colour toolbar-delete-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-cancel-button {\n  fill: <<colour toolbar-cancel-button>>;\n}\n\n.tc-tiddler-controls button svg.tc-image-done-button {\n  fill: <<colour toolbar-done-button>>;\n}\n\n/*\n** Tiddler edit mode\n*/\n\n.tc-tiddler-edit-frame em.tc-edit {\n\tcolor: <<colour muted-foreground>>;\n\tfont-style: normal;\n}\n\n.tc-edit-type-dropdown a.tc-tiddlylink-missing {\n\tfont-style: normal;\n}\n\n.tc-type-selector .tc-edit-typeeditor {\n\twidth: 20%;\n}\n\n.tc-edit-tags {\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tpadding: 4px 8px 4px 8px;\n}\n\n.tc-edit-add-tag {\n\tdisplay: inline-block;\n}\n\n.tc-edit-add-tag .tc-add-tag-name input {\n\twidth: 50%;\n}\n\n.tc-edit-add-tag .tc-keyboard {\n\tdisplay:inline;\n}\n\n.tc-edit-tags .tc-tag-label {\n\tdisplay: inline-block;\n}\n\n.tc-edit-tags-list {\n\tmargin: 14px 0 14px 0;\n}\n\n.tc-remove-tag-button {\n\tpadding-left: 4px;\n}\n\n.tc-tiddler-preview {\n\toverflow: auto;\n}\n\n.tc-tiddler-preview-preview {\n\tfloat: right;\n\twidth: 49%;\n\tborder: 1px solid <<colour tiddler-editor-border>>;\n\tmargin: 4px 0 3px 3px;\n\tpadding: 3px 3px 3px 3px;\n}\n\n<<if-editor-height-fixed then:\"\"\"\n\n.tc-tiddler-preview-preview {\n\toverflow-y: scroll;\n\theight: {{$:/config/TextEditor/EditorHeight/Height}};\n}\n\n\"\"\">>\n\n.tc-tiddler-frame .tc-tiddler-preview .tc-edit-texteditor {\n\twidth: 49%;\n}\n\n.tc-tiddler-frame .tc-tiddler-preview canvas.tc-edit-bitmapeditor {\n\tmax-width: 49%;\n}\n\n.tc-edit-fields {\n\twidth: 100%;\n}\n\n\n.tc-edit-fields table, .tc-edit-fields tr, .tc-edit-fields td {\n\tborder: none;\n\tpadding: 4px;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(odd) {\n\tbackground-color: <<colour tiddler-editor-fields-odd>>;\n}\n\n.tc-edit-fields > tbody > .tc-edit-field:nth-child(even) {\n\tbackground-color: <<colour tiddler-editor-fields-even>>;\n}\n\n.tc-edit-field-name {\n\ttext-align: right;\n}\n\n.tc-edit-field-value input {\n\twidth: 100%;\n}\n\n.tc-edit-field-remove {\n}\n\n.tc-edit-field-remove svg {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n\tvertical-align: middle;\n}\n\n.tc-edit-field-add-name {\n\tdisplay: inline-block;\n\twidth: 15%;\n}\n\n.tc-edit-field-add-value {\n\tdisplay: inline-block;\n\twidth: 40%;\n}\n\n.tc-edit-field-add-button {\n\tdisplay: inline-block;\n\twidth: 10%;\n}\n\n/*\n** Storyview Classes\n*/\n\n.tc-viewswitcher .tc-image-button {\n\tmargin-right: .3em;\n}\n\n.tc-storyview-zoomin-tiddler {\n\tposition: absolute;\n\tdisplay: block;\n\twidth: 100%;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-storyview-zoomin-tiddler {\n\t\twidth: calc(100% - 84px);\n\t}\n\n}\n\n/*\n** Dropdowns\n*/\n\n.tc-btn-dropdown {\n\ttext-align: left;\n}\n\n.tc-btn-dropdown svg, .tc-btn-dropdown img {\n\theight: 1em;\n\twidth: 1em;\n\tfill: <<colour muted-foreground>>;\n}\n\n.tc-drop-down-wrapper {\n\tposition: relative;\n}\n\n.tc-drop-down {\n\tmin-width: 380px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\ttext-shadow: none;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-drop-down {\n\tmargin-left: 14px;\n}\n\n.tc-drop-down button svg, .tc-drop-down a svg  {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down button.tc-btn-invisible:hover svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-drop-down .tc-drop-down-info {\n\tpadding-left: 14px;\n}\n\n.tc-drop-down p {\n\tpadding: 0 14px 0 14px;\n}\n\n.tc-drop-down svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-drop-down img {\n\twidth: 1em;\n}\n\n.tc-drop-down a, .tc-drop-down button {\n\tdisplay: block;\n\tpadding: 0 14px 0 14px;\n\twidth: 100%;\n\ttext-align: left;\n\tcolor: <<colour foreground>>;\n\tline-height: 1.4;\n}\n\n.tc-drop-down .tc-tab-set .tc-tab-buttons button {\n\tdisplay: inline-block;\n    width: auto;\n    margin-bottom: 0px;\n    border-bottom-left-radius: 0;\n    border-bottom-right-radius: 0;\n}\n\n.tc-drop-down .tc-prompt {\n\tpadding: 0 14px;\n}\n\n.tc-drop-down .tc-chooser {\n\tborder: none;\n}\n\n.tc-drop-down .tc-chooser .tc-swatches-horiz {\n\tfont-size: 0.4em;\n\tpadding-left: 1.2em;\n}\n\n.tc-drop-down .tc-file-input-wrapper {\n\twidth: 100%;\n}\n\n.tc-drop-down .tc-file-input-wrapper button {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-drop-down a:hover, .tc-drop-down button:hover, .tc-drop-down .tc-file-input-wrapper:hover button {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-tab-buttons button {\n\tbackground-color: <<colour dropdown-tab-background>>;\n}\n\n.tc-drop-down .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour dropdown-tab-background-selected>>;\n\tborder-bottom: 1px solid <<colour dropdown-tab-background-selected>>;\n}\n\n.tc-drop-down-bullet {\n\tdisplay: inline-block;\n\twidth: 0.5em;\n}\n\n.tc-drop-down .tc-tab-contents a {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-block-dropdown-wrapper {\n\tposition: relative;\n}\n\n.tc-block-dropdown {\n\tposition: absolute;\n\tmin-width: 220px;\n\tborder: 1px solid <<colour dropdown-border>>;\n\tbackground-color: <<colour dropdown-background>>;\n\tpadding: 7px 0;\n\tmargin: 4px 0 0 0;\n\twhite-space: nowrap;\n\tz-index: 1000;\n\ttext-shadow: none;\n}\n\n.tc-block-dropdown.tc-search-drop-down {\n\tmargin-left: -12px;\n}\n\n.tc-block-dropdown a {\n\tdisplay: block;\n\tpadding: 4px 14px 4px 14px;\n}\n\n.tc-block-dropdown.tc-search-drop-down a {\n\tdisplay: block;\n\tpadding: 0px 10px 0px 10px;\n}\n\n.tc-drop-down .tc-dropdown-item-plain,\n.tc-block-dropdown .tc-dropdown-item-plain {\n\tpadding: 4px 14px 4px 7px;\n}\n\n.tc-drop-down .tc-dropdown-item,\n.tc-block-dropdown .tc-dropdown-item {\n\tpadding: 4px 14px 4px 7px;\n\tcolor: <<colour muted-foreground>>;\n}\n\n.tc-block-dropdown a:hover {\n\tcolor: <<colour tiddler-link-background>>;\n\tbackground-color: <<colour tiddler-link-foreground>>;\n\ttext-decoration: none;\n}\n\n.tc-search-results {\n\tpadding: 0 7px 0 7px;\n}\n\n.tc-image-chooser, .tc-colour-chooser {\n\twhite-space: normal;\n}\n\n.tc-image-chooser a,\n.tc-colour-chooser a {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\ttext-align: center;\n\tposition: relative;\n}\n\n.tc-image-chooser a {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 2px;\n\tmargin: 2px;\n\twidth: 4em;\n\theight: 4em;\n}\n\n.tc-colour-chooser a {\n\tpadding: 3px;\n\twidth: 2em;\n\theight: 2em;\n\tvertical-align: middle;\n}\n\n.tc-image-chooser a:hover,\n.tc-colour-chooser a:hover {\n\tbackground: <<colour primary>>;\n\tpadding: 0px;\n\tborder: 3px solid <<colour primary>>;\n}\n\n.tc-image-chooser a svg,\n.tc-image-chooser a img {\n\tdisplay: inline-block;\n\twidth: auto;\n\theight: auto;\n\tmax-width: 3.5em;\n\tmax-height: 3.5em;\n\tposition: absolute;\n\ttop: 0;\n\tbottom: 0;\n\tleft: 0;\n\tright: 0;\n\tmargin: auto;\n}\n\n/*\n** Modals\n*/\n\n.tc-modal-wrapper {\n\tposition: fixed;\n\toverflow: auto;\n\toverflow-y: scroll;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 900;\n}\n\n.tc-modal-backdrop {\n\tposition: fixed;\n\ttop: 0;\n\tright: 0;\n\tbottom: 0;\n\tleft: 0;\n\tz-index: 1000;\n\tbackground-color: <<colour modal-backdrop>>;\n}\n\n.tc-modal {\n\tz-index: 1100;\n\tbackground-color: <<colour modal-background>>;\n\tborder: 1px solid <<colour modal-border>>;\n}\n\n@media (max-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 1em;\n\t\tleft: 1em;\n\t\tright: 1em;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n@media (min-width: 55em) {\n\t.tc-modal {\n\t\tposition: fixed;\n\t\ttop: 2em;\n\t\tleft: 25%;\n\t\twidth: 50%;\n\t}\n\n\t.tc-modal-body {\n\t\toverflow-y: auto;\n\t\tmax-height: 400px;\n\t\tmax-height: 60vh;\n\t}\n}\n\n.tc-modal-header {\n\tpadding: 9px 15px;\n\tborder-bottom: 1px solid <<colour modal-header-border>>;\n}\n\n.tc-modal-header h3 {\n\tmargin: 0;\n\tline-height: 30px;\n}\n\n.tc-modal-header img, .tc-modal-header svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-modal-body {\n\tpadding: 15px;\n}\n\n.tc-modal-footer {\n\tpadding: 14px 15px 15px;\n\tmargin-bottom: 0;\n\ttext-align: right;\n\tbackground-color: <<colour modal-footer-background>>;\n\tborder-top: 1px solid <<colour modal-footer-border>>;\n}\n\n/*\n** Notifications\n*/\n\n.tc-notification {\n\tposition: fixed;\n\ttop: 14px;\n\tright: 42px;\n\tz-index: 1300;\n\tmax-width: 280px;\n\tpadding: 0 14px 0 14px;\n\tbackground-color: <<colour notification-background>>;\n\tborder: 1px solid <<colour notification-border>>;\n}\n\n/*\n** Tabs\n*/\n\n.tc-tab-set.tc-vertical {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tab-buttons {\n\tfont-size: 0.85em;\n\tpadding-top: 1em;\n\tmargin-bottom: -2px;\n}\n\n.tc-tab-buttons.tc-vertical  {\n\tz-index: 100;\n\tdisplay: block;\n\tpadding-top: 14px;\n\tvertical-align: top;\n\ttext-align: right;\n\tmargin-bottom: inherit;\n\tmargin-right: -1px;\n\tmax-width: 33%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n}\n\n.tc-tab-buttons button.tc-tab-selected {\n\tcolor: <<colour tab-foreground-selected>>;\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-left: 1px solid <<colour tab-border-selected>>;\n\tborder-top: 1px solid <<colour tab-border-selected>>;\n\tborder-right: 1px solid <<colour tab-border-selected>>;\n}\n\n.tc-tab-buttons button {\n\tcolor: <<colour tab-foreground>>;\n\tpadding: 3px 5px 3px 5px;\n\tmargin-right: 0.3em;\n\tfont-weight: 300;\n\tborder: none;\n\tbackground: inherit;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-right: 1px solid <<colour tab-border>>;\n\tborder-top-left-radius: 2px;\n\tborder-top-right-radius: 2px;\n\tborder-bottom-left-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button {\n\tdisplay: block;\n\twidth: 100%;\n\tmargin-top: 3px;\n\tmargin-right: 0;\n\ttext-align: right;\n\tbackground-color: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tborder-right: none;\n\tborder-top-left-radius: 2px;\n\tborder-bottom-left-radius: 2px;\n\tborder-top-right-radius: 0;\n\tborder-bottom-right-radius: 0;\n}\n\n.tc-tab-buttons.tc-vertical button.tc-tab-selected {\n\tbackground-color: <<colour tab-background-selected>>;\n\tborder-right: 1px solid <<colour tab-background-selected>>;\n}\n\n.tc-tab-divider {\n\tborder-top: 1px solid <<colour tab-divider>>;\n}\n\n.tc-tab-divider.tc-vertical  {\n\tdisplay: none;\n}\n\n.tc-tab-content {\n\tmargin-top: 14px;\n}\n\n.tc-tab-content.tc-vertical  {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-top: 0;\n\tpadding-left: 14px;\n\tborder-left: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 70%;\n\tflex: 1 0 70%;\n\toverflow: auto;\n}\n\n.tc-sidebar-lists .tc-tab-buttons {\n\tmargin-bottom: -1px;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tcolor: <<colour sidebar-tab-foreground-selected>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border-selected>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border-selected>>;\n}\n\n.tc-sidebar-lists .tc-tab-buttons button {\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tcolor: <<colour sidebar-tab-foreground>>;\n\tborder-left: 1px solid <<colour sidebar-tab-border>>;\n\tborder-top: 1px solid <<colour sidebar-tab-border>>;\n\tborder-right: 1px solid <<colour sidebar-tab-border>>;\n}\n\n.tc-sidebar-lists .tc-tab-divider {\n\tborder-top: 1px solid <<colour sidebar-tab-divider>>;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button {\n\tdisplay: block;\n\twidth: 100%;\n\tbackground-color: <<colour sidebar-tab-background>>;\n\tborder-top: none;\n\tborder-left: none;\n\tborder-bottom: none;\n\tborder-right: 1px solid #ccc;\n\tmargin-bottom: inherit;\n}\n\n.tc-more-sidebar > .tc-tab-set > .tc-tab-buttons > button.tc-tab-selected {\n\tbackground-color: <<colour sidebar-tab-background-selected>>;\n\tborder: none;\n}\n\n/*\n** Manager\n*/\n\n.tc-manager-wrapper {\n\t\n}\n\n.tc-manager-controls {\n\t\n}\n\n.tc-manager-control {\n\tmargin: 0.5em 0;\n}\n\n.tc-manager-list {\n\twidth: 100%;\n\tborder-top: 1px solid <<colour muted-foreground>>;\n\tborder-left: 1px solid <<colour muted-foreground>>;\n\tborder-right: 1px solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item {\n\n}\n\n.tc-manager-list-item-heading {\n    display: block;\n    width: 100%;\n    text-align: left;\t\n\tborder-bottom: 1px solid <<colour muted-foreground>>;\n\tpadding: 3px;\n}\n\n.tc-manager-list-item-heading-selected {\n\tfont-weight: bold;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n\tbackground-color: <<colour foreground>>;\n}\n\n.tc-manager-list-item-heading:hover {\n\tbackground: <<colour primary>>;\n\tcolor: <<colour background>>;\n}\n\n.tc-manager-list-item-content {\n\tdisplay: flex;\n}\n\n.tc-manager-list-item-content-sidebar {\n    flex: 1 0;\n    background: <<colour tiddler-editor-background>>;\n    border-right: 0.5em solid <<colour muted-foreground>>;\n    border-bottom: 0.5em solid <<colour muted-foreground>>;\n    white-space: nowrap;\n}\n\n.tc-manager-list-item-content-item-heading {\n\tdisplay: block;\n\twidth: 100%;\n\ttext-align: left;\n    background: <<colour muted-foreground>>;\n\ttext-transform: uppercase;\n\tfont-size: 0.6em;\n\tfont-weight: bold;\n    padding: 0.5em 0 0.5em 0;\n}\n\n.tc-manager-list-item-content-item-body {\n\tpadding: 0 0.5em 0 0.5em;\n}\n\n.tc-manager-list-item-content-item-body > pre {\n\tmargin: 0.5em 0 0.5em 0;\n\tborder: none;\n\tbackground: inherit;\n}\n\n.tc-manager-list-item-content-tiddler {\n    flex: 3 1;\n    border-left: 0.5em solid <<colour muted-foreground>>;\n    border-right: 0.5em solid <<colour muted-foreground>>;\n    border-bottom: 0.5em solid <<colour muted-foreground>>;\n}\n\n.tc-manager-list-item-content-item-body > table {\n\tborder: none;\n\tpadding: 0;\n\tmargin: 0;\n}\n\n.tc-manager-list-item-content-item-body > table td {\n\tborder: none;\n}\n\n.tc-manager-icon-editor > button {\n\twidth: 100%;\n}\n\n.tc-manager-icon-editor > button > svg,\n.tc-manager-icon-editor > button > button {\n\twidth: 100%;\n\theight: auto;\n}\n\n/*\n** Alerts\n*/\n\n.tc-alerts {\n\tposition: fixed;\n\ttop: 28px;\n\tleft: 0;\n\tright: 0;\n\tmax-width: 50%;\n\tz-index: 20000;\n}\n\n.tc-alert {\n\tposition: relative;\n\tmargin: 14px;\n\tpadding: 7px;\n\tborder: 1px solid <<colour alert-border>>;\n\tbackground-color: <<colour alert-background>>;\n}\n\n.tc-alert-toolbar {\n\tposition: absolute;\n\ttop: 7px;\n\tright: 7px;\n    line-height: 0;\n}\n\n.tc-alert-toolbar svg {\n\tfill: <<colour alert-muted-foreground>>;\n}\n\n.tc-alert-subtitle {\n\tcolor: <<colour alert-muted-foreground>>;\n\tfont-weight: bold;\n    font-size: 0.8em;\n    margin-bottom: 0.5em;\n}\n\n.tc-alert-body > p {\n\tmargin: 0;\n}\n\n.tc-alert-highlight {\n\tcolor: <<colour alert-highlight>>;\n}\n\n@media (min-width: {{$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint}}) {\n\n\t.tc-static-alert {\n\t\tposition: relative;\n\t}\n\n\t.tc-static-alert-inner {\n\t\tposition: absolute;\n\t\tz-index: 100;\n\t}\n\n}\n\n.tc-static-alert-inner {\n\tpadding: 0 2px 2px 42px;\n\tcolor: <<colour static-alert-foreground>>;\n}\n\n/*\n** Floating drafts list\n*/\n\n.tc-drafts-list {\n\tz-index: 2000;\n\tposition: fixed;\n\tfont-size: 0.8em;\n\tleft: 0;\n\tbottom: 0;\n}\n\n.tc-drafts-list a {\n\tmargin: 0 0.5em;\n\tpadding: 4px 4px;\n\tborder-top-left-radius: 4px;\n\tborder-top-right-radius: 4px;\n\tborder: 1px solid <<colour background>>;\n\tborder-bottom-none;\n\tbackground: <<colour dirty-indicator>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a:hover {\n\ttext-decoration: none;\n\tbackground: <<colour foreground>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour background>>;\n}\n\n.tc-drafts-list a svg {\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: text-bottom;\n}\n\n/*\n** Control panel\n*/\n\n.tc-control-panel td {\n\tpadding: 4px;\n}\n\n.tc-control-panel table, .tc-control-panel table input, .tc-control-panel table textarea {\n\twidth: 100%;\n}\n\n.tc-plugin-info {\n\tdisplay: flex;\n\tborder: 1px solid <<colour muted-foreground>>;\n\tfill: <<colour muted-foreground>>;\n\tbackground-color: <<colour background>>;\n\tmargin: 0.5em 0 0.5em 0;\n\tpadding: 4px;\n    align-items: center;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info {\n    margin: 0.5em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugin-indicator {\n\tmargin: -16px 1em 0 2em;\n}\n\n.tc-plugin-info-sub-plugin-indicator button {\n\tcolor: <<colour background>>;\n\tbackground: <<colour foreground>>;\n\tborder-radius: 8px;\n    padding: 2px 7px;\n    font-size: 0.75em;\n}\n\n.tc-plugin-info-sub-plugins .tc-plugin-info-dropdown {\n\tmargin-left: 1em;\n\tmargin-right: 1em;\n}\n\n.tc-plugin-info-disabled {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n\tbackground: repeating-linear-gradient(45deg, #ff0, #ff0 10px, #eee 10px, #eee 20px);\n}\n\n.tc-plugin-info-disabled:hover {\n\tbackground: -webkit-repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n\tbackground: repeating-linear-gradient(45deg, #aa0, #aa0 10px, #888 10px, #888 20px);\n}\n\na.tc-tiddlylink.tc-plugin-info:hover {\n\ttext-decoration: none;\n\tbackground-color: <<colour primary>>;\n\tcolor: <<colour background>>;\n\tfill: <<colour foreground>>;\n}\n\na.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > svg {\n\tfill: <<colour foreground>>;\n}\n\n.tc-plugin-info-chunk {\n    margin: 2px;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon {\n\tflex-grow: 0;\n\tflex-shrink: 0;\n\tline-height: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description {\n\tflex-grow: 1;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-buttons {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tflex-grow: 0;\n\tflex-shrink: 0;\n    text-align: right;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h1 {\n\tfont-size: 1em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description h2 {\n\tfont-size: 0.8em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-description div {\n\tfont-size: 0.7em;\n\tline-height: 1.2;\n\tmargin: 2px 0 2px 0;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-toggle img, .tc-plugin-info-chunk.tc-plugin-info-toggle svg {\n\twidth: 1em;\n\theight: 1em;\n}\n\n.tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg {\n\twidth: 2em;\n\theight: 2em;\n}\n\n.tc-plugin-info-dropdown {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tbackground: <<colour background>>;\n\tmargin-top: -8px;\n}\n\n.tc-plugin-info-dropdown-message {\n\tbackground: <<colour message-background>>;\n\tpadding: 0.5em 1em 0.5em 1em;\n\tfont-weight: bold;\n\tfont-size: 0.8em;\n}\n\n.tc-plugin-info-dropdown-body {\n\tpadding: 1em 1em 0 1em;\n\tbackground: <<colour background>>;\n}\n\n.tc-plugin-info-sub-plugins {\n\tpadding: 0.5em;\n    margin: 0 1em 1em 1em;\n\tbackground: <<colour notification-background>>;\n}\n\n.tc-install-plugin {\n\tfont-weight: bold;\n\tbackground: green;\n\tcolor: white;\n\tfill: white;\n\tborder-radius: 4px;\n\tpadding: 3px;\n}\n\n.tc-install-plugin.tc-reinstall-downgrade {\n\tbackground: red;\n}\n\n.tc-install-plugin.tc-reinstall {\n\tbackground: blue;\n}\n\n.tc-install-plugin.tc-reinstall-upgrade {\n\tbackground: orange;\n}\n\n.tc-check-list {\n\tline-height: 2em;\n}\n\n.tc-check-list .tc-image-button {\n\theight: 1.5em;\n}\n\n/*\n** Message boxes\n*/\n\n.tc-message-box {\n\tborder: 1px solid <<colour message-border>>;\n\tbackground: <<colour message-background>>;\n\tpadding: 0px 21px 0px 21px;\n\tfont-size: 12px;\n\tline-height: 18px;\n\tcolor: <<colour message-foreground>>;\n}\n\n.tc-message-box svg {\n\twidth: 1em;\n\theight: 1em;\n    vertical-align: text-bottom;\n}\n\n/*\n** Pictures\n*/\n\n.tc-bordered-image {\n\tborder: 1px solid <<colour muted-foreground>>;\n\tpadding: 5px;\n\tmargin: 5px;\n}\n\n/*\n** Floats\n*/\n\n.tc-float-right {\n\tfloat: right;\n}\n\n/*\n** Chooser\n*/\n\n.tc-chooser {\n\tborder-right: 1px solid <<colour table-header-background>>;\n\tborder-left: 1px solid <<colour table-header-background>>;\n}\n\n\n.tc-chooser-item {\n\tborder-bottom: 1px solid <<colour table-header-background>>;\n\tborder-top: 1px solid <<colour table-header-background>>;\n\tpadding: 2px 4px 2px 14px;\n}\n\n.tc-drop-down .tc-chooser-item {\n\tpadding: 2px;\n}\n\n.tc-chosen,\n.tc-chooser-item:hover {\n\tbackground-color: <<colour table-header-background>>;\n\tborder-color: <<colour table-footer-background>>;\n}\n\n.tc-chosen .tc-tiddlylink {\n\tcursor:default;\n}\n\n.tc-chooser-item .tc-tiddlylink {\n\tdisplay: block;\n\ttext-decoration: none;\n\tbackground-color: transparent;\n}\n\n.tc-chooser-item:hover .tc-tiddlylink:hover {\n\ttext-decoration: none;\n}\n\n.tc-drop-down .tc-chosen .tc-tiddlylink,\n.tc-drop-down .tc-chooser-item .tc-tiddlylink:hover {\n\tcolor: <<colour foreground>>;\n}\n\n.tc-chosen > .tc-tiddlylink:before {\n\tmargin-left: -10px;\n\tposition: relative;\n\tcontent: \"» \";\n}\n\n.tc-chooser-item svg,\n.tc-chooser-item img{\n\twidth: 1em;\n\theight: 1em;\n\tvertical-align: middle;\n}\n\n.tc-language-chooser .tc-image-button img {\n\twidth: 2em;\n\tvertical-align: -0.15em;\n}\n\n/*\n** Palette swatches\n*/\n\n.tc-swatches-horiz {\n}\n\n.tc-swatches-horiz .tc-swatch {\n\tdisplay: inline-block;\n}\n\n.tc-swatch {\n\twidth: 2em;\n\theight: 2em;\n\tmargin: 0.4em;\n\tborder: 1px solid #888;\n}\n\ninput.tc-palette-manager-colour-input {\n\twidth: 100%;\n\tpadding: 0;\n}\n\n/*\n** Table of contents\n*/\n\n.tc-sidebar-lists .tc-table-of-contents {\n\twhite-space: nowrap;\n}\n\n.tc-table-of-contents button {\n\tcolor: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents svg {\n\twidth: 0.7em;\n\theight: 0.7em;\n\tvertical-align: middle;\n\tfill: <<colour sidebar-foreground>>;\n}\n\n.tc-table-of-contents ol {\n\tlist-style-type: none;\n\tpadding-left: 0;\n}\n\n.tc-table-of-contents ol ol {\n\tpadding-left: 1em;\n}\n\n.tc-table-of-contents li {\n\tfont-size: 1.0em;\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li a {\n\tfont-weight: bold;\n}\n\n.tc-table-of-contents li li {\n\tfont-size: 0.95em;\n\tfont-weight: normal;\n\tline-height: 1.4;\n}\n\n.tc-table-of-contents li li a {\n\tfont-weight: normal;\n}\n\n.tc-table-of-contents li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n\tline-height: 1.5;\n}\n\n.tc-table-of-contents li li li li {\n\tfont-size: 0.95em;\n\tfont-weight: 200;\n}\n\n.tc-tabbed-table-of-contents {\n\tdisplay: -webkit-flex;\n\tdisplay: flex;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents {\n\tz-index: 100;\n\tdisplay: inline-block;\n\tpadding-left: 1em;\n\tmax-width: 50%;\n\t-webkit-flex: 0 0 auto;\n\tflex: 0 0 auto;\n\tbackground: <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a,\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tdisplay: block;\n\tpadding: 0.12em 1em 0.12em 0.25em;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a {\n\tborder-top: 1px solid <<colour tab-background>>;\n\tborder-left: 1px solid <<colour tab-background>>;\n\tborder-bottom: 1px solid <<colour tab-background>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item > a:hover {\n\ttext-decoration: none;\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour tab-border>>;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a {\n\tborder-top: 1px solid <<colour tab-border>>;\n\tborder-left: 1px solid <<colour tab-border>>;\n\tborder-bottom: 1px solid <<colour tab-border>>;\n\tbackground: <<colour background>>;\n\tmargin-right: -1px;\n}\n\n.tc-tabbed-table-of-contents .tc-table-of-contents .toc-item-selected > a:hover {\n\ttext-decoration: none;\n}\n\n.tc-tabbed-table-of-contents .tc-tabbed-table-of-contents-content {\n\tdisplay: inline-block;\n\tvertical-align: top;\n\tpadding-left: 1.5em;\n\tpadding-right: 1.5em;\n\tborder: 1px solid <<colour tab-border>>;\n\t-webkit-flex: 1 0 50%;\n\tflex: 1 0 50%;\n}\n\n/*\n** Dirty indicator\n*/\n\nbody.tc-dirty span.tc-dirty-indicator, body.tc-dirty span.tc-dirty-indicator svg {\n\tfill: <<colour dirty-indicator>>;\n\tcolor: <<colour dirty-indicator>>;\n}\n\n/*\n** File inputs\n*/\n\n.tc-file-input-wrapper {\n\tposition: relative;\n\toverflow: hidden;\n\tdisplay: inline-block;\n\tvertical-align: middle;\n}\n\n.tc-file-input-wrapper input[type=file] {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tfont-size: 999px;\n\tmax-width: 100%;\n\tmax-height: 100%;\n\tfilter: alpha(opacity=0);\n\topacity: 0;\n\toutline: none;\n\tbackground: white;\n\tcursor: pointer;\n\tdisplay: inline-block;\n}\n\n/*\n** Thumbnail macros\n*/\n\n.tc-thumbnail-wrapper {\n\tposition: relative;\n\tdisplay: inline-block;\n\tmargin: 6px;\n\tvertical-align: top;\n}\n\n.tc-thumbnail-right-wrapper {\n\tfloat:right;\n\tmargin: 0.5em 0 0.5em 0.5em;\n}\n\n.tc-thumbnail-image {\n\ttext-align: center;\n\toverflow: hidden;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-image svg,\n.tc-thumbnail-image img {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n\tmin-width: 100%;\n\tmin-height: 100%;\n\tmax-width: 100%;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-image img {\n\tfilter: alpha(opacity=0.8);\n\topacity: 0.8;\n}\n\n.tc-thumbnail-background {\n\tposition: absolute;\n\tborder-radius: 3px;\n}\n\n.tc-thumbnail-icon svg,\n.tc-thumbnail-icon img {\n\twidth: 3em;\n\theight: 3em;\n\t<<filter \"drop-shadow(2px 2px 4px rgba(0,0,0,0.3))\">>\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon svg,\n.tc-thumbnail-wrapper:hover .tc-thumbnail-icon img {\n\tfill: #fff;\n\t<<filter \"drop-shadow(3px 3px 4px rgba(0,0,0,0.6))\">>\n}\n\n.tc-thumbnail-icon {\n\tposition: absolute;\n\ttop: 0;\n\tleft: 0;\n\tright: 0;\n\tbottom: 0;\n\tdisplay: -webkit-flex;\n\t-webkit-align-items: center;\n\t-webkit-justify-content: center;\n\tdisplay: flex;\n\talign-items: center;\n\tjustify-content: center;\n}\n\n.tc-thumbnail-caption {\n\tposition: absolute;\n\tbackground-color: #777;\n\tcolor: #fff;\n\ttext-align: center;\n\tbottom: 0;\n\twidth: 100%;\n\tfilter: alpha(opacity=0.9);\n\topacity: 0.9;\n\tline-height: 1.4;\n\tborder-bottom-left-radius: 3px;\n\tborder-bottom-right-radius: 3px;\n}\n\n.tc-thumbnail-wrapper:hover .tc-thumbnail-caption {\n\tfilter: alpha(opacity=1);\n\topacity: 1;\n}\n\n/*\n** Diffs\n*/\n\n.tc-diff-equal {\n\tbackground-color: <<colour diff-equal-background>>;\n\tcolor: <<colour diff-equal-foreground>>;\n}\n\n.tc-diff-insert {\n\tbackground-color: <<colour diff-insert-background>>;\n\tcolor: <<colour diff-insert-foreground>>;\n}\n\n.tc-diff-delete {\n\tbackground-color: <<colour diff-delete-background>>;\n\tcolor: <<colour diff-delete-foreground>>;\n}\n\n.tc-diff-invisible {\n\tbackground-color: <<colour diff-invisible-background>>;\n\tcolor: <<colour diff-invisible-foreground>>;\n}\n\n.tc-diff-tiddlers th {\n\ttext-align: right;\n\tbackground: <<colour background>>;\n\tfont-weight: normal;\n\tfont-style: italic;\n}\n\n.tc-diff-tiddlers pre {\n    margin: 0;\n    padding: 0;\n    border: none;\n    background: none;\n}\n\n/*\n** Errors\n*/\n\n.tc-error {\n\tbackground: #f00;\n\tcolor: #fff;\n}\n\n/*\n** Tree macro\n*/\n\n.tc-tree div {\n    \tpadding-left: 14px;\n}\n\n.tc-tree ol {\n    \tlist-style-type: none;\n    \tpadding-left: 0;\n    \tmargin-top: 0;\n}\n\n.tc-tree ol ol {\n    \tpadding-left: 1em;    \n}\n\n.tc-tree button { \n    \tcolor: #acacac;\n}\n\n.tc-tree svg {\n     \tfill: #acacac;\n}\n\n.tc-tree span svg {\n    \twidth: 1em;\n    \theight: 1em;\n    \tvertical-align: baseline;\n}\n\n.tc-tree li span {\n    \tcolor: lightgray;\n}\n\nselect {\n        color: <<colour select-tag-foreground>>;\n        background: <<colour select-tag-background>>;\n}\n\n/*\n** Utility classes for SVG icons\n*/\n\n.tc-fill-background {\n\tfill: <<colour background>>;\n}"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/bodyfontsize",
            "text": "15px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/bodylineheight",
            "text": "22px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/fontsize": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/fontsize",
            "text": "14px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/lineheight": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/lineheight",
            "text": "20px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storyleft": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storyleft",
            "text": "0px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storytop": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storytop",
            "text": "0px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storyright": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storyright",
            "text": "770px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/storywidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/storywidth",
            "text": "770px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/tiddlerwidth",
            "text": "686px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarbreakpoint",
            "text": "960px"
        },
        "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth": {
            "title": "$:/themes/tiddlywiki/vanilla/metrics/sidebarwidth",
            "text": "350px"
        },
        "$:/themes/tiddlywiki/vanilla/options/stickytitles": {
            "title": "$:/themes/tiddlywiki/vanilla/options/stickytitles",
            "text": "no"
        },
        "$:/themes/tiddlywiki/vanilla/options/sidebarlayout": {
            "title": "$:/themes/tiddlywiki/vanilla/options/sidebarlayout",
            "text": "fixed-fluid"
        },
        "$:/themes/tiddlywiki/vanilla/options/codewrapping": {
            "title": "$:/themes/tiddlywiki/vanilla/options/codewrapping",
            "text": "pre-wrap"
        },
        "$:/themes/tiddlywiki/vanilla/reset": {
            "title": "$:/themes/tiddlywiki/vanilla/reset",
            "type": "text/plain",
            "text": "/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n   ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n  line-height: 1.15; /* 1 */\n  -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n   ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n  margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n  display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n\n/* Grouping content\n   ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n  box-sizing: content-box; /* 1 */\n  height: 0; /* 1 */\n  overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n  font-family: monospace, monospace; /* 1 */\n  font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n   ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n  background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n  border-bottom: none; /* 1 */\n  text-decoration: underline; /* 2 */\n  text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n  font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n  font-family: monospace, monospace; /* 1 */\n  font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n  font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n\nsub {\n  bottom: -0.25em;\n}\n\nsup {\n  top: -0.5em;\n}\n\n/* Embedded content\n   ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n  border-style: none;\n}\n\n/* Forms\n   ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n  font-family: inherit; /* 1 */\n  font-size: 100%; /* 1 */\n  line-height: 1.15; /* 1 */\n  margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n  overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n  text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n  -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n  border-style: none;\n  padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n  outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n  padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n *    `fieldset` elements in all browsers.\n */\n\nlegend {\n  box-sizing: border-box; /* 1 */\n  color: inherit; /* 2 */\n  display: table; /* 1 */\n  max-width: 100%; /* 1 */\n  padding: 0; /* 3 */\n  white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n  vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n  overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n  box-sizing: border-box; /* 1 */\n  padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n  height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n  -webkit-appearance: textfield; /* 1 */\n  outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n  -webkit-appearance: button; /* 1 */\n  font: inherit; /* 2 */\n}\n\n/* Interactive\n   ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n  display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n  display: list-item;\n}\n\n/* Misc\n   ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n  display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n  display: none;\n}\n"
        },
        "$:/themes/tiddlywiki/vanilla/settings/fontfamily": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/fontfamily",
            "text": "-apple-system, BlinkMacSystemFont, \"Segoe UI\", Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\""
        },
        "$:/themes/tiddlywiki/vanilla/settings/codefontfamily": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/codefontfamily",
            "text": "\"SFMono-Regular\",Consolas,\"Liberation Mono\",Menlo,Courier,monospace"
        },
        "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimageattachment",
            "text": "fixed"
        },
        "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize": {
            "title": "$:/themes/tiddlywiki/vanilla/settings/backgroundimagesize",
            "text": "auto"
        },
        "$:/themes/tiddlywiki/vanilla/sticky": {
            "title": "$:/themes/tiddlywiki/vanilla/sticky",
            "text": "<$reveal state=\"$:/themes/tiddlywiki/vanilla/options/stickytitles\" type=\"match\" text=\"yes\">\n``\n.tc-tiddler-title {\n\tposition: -webkit-sticky;\n\tposition: -moz-sticky;\n\tposition: -o-sticky;\n\tposition: -ms-sticky;\n\tposition: sticky;\n\ttop: 0px;\n\tbackground: ``<<colour tiddler-background>>``;\n\tz-index: 500;\n}\n\n``\n<$list filter=\"[range[100]]\">\n`.tc-story-river .tc-tiddler-frame:nth-child(100n+`<$text text=<<currentTiddler>>/>`) {\nz-index: `<$text text={{{ [[200]subtract<currentTiddler>] }}}/>`;\n}\n`\n</$list>\n</$reveal>\n"
        }
    }
}
15px
14px
20px
5px
fluid-fixed
yes
diagonal-noise.png
fixed
auto
Monaco, Consolas, "Lucida Console", "DejaVu Sans Mono", monospace
"Microsoft YaHei"
"Microsoft YaHei", "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif

.
rizi
https://rizi.me/store.php
classic
<$transclude mode="block" tiddler=bookinfo/>
"""
06-06-10-端午·读书更新:
 1. 《[[夜航船]]》(明)张岱 著(共20卷) @@color:red;^^★^^ @@  
 2. 《[[浮生六记]]》  (清)沈复  @@color:red;^^★^^ @@
 3. 《扬州十日记》 (明) 王秀楚 
 4. 《世说新语》  (南朝宋) 刘义庆 
 5. 《春明丛说》  (清) 俞蛟 
 6. 《围炉夜话》  (明) 佚名 
 7. 《寄园寄所寄》 十二卷B(清)赵吉士
 8. 《宋稗类钞》   (清) 潘永因

06-06-17日更新 阵雨
9. 《月亮和六便士》(英)威廉·萨默塞特·毛姆   @@color:red;^^★^^ @@

**06-07-20日更新 连续两天阵雨**
10. 《金刚经》
11. 《周易正义》@@color:red;^^★^^ @@
12. 《景善日记》 (清) 景善
13. 《晚清七十年》 唐德刚
14. 《天史》(清)丁耀亢
15. 《悔过自新说》(清)李

06-8-01日新添  湿热
16. 《埋忧集》(清)朱翊清 撰
17. 《智囊全集》(明)冯梦龙
18. 《老学庵笔记》(宋)陆游
19. 《增广贤文》

06-9-01日新添  凉秋·悲伤的下午
20. 《周易正读》徐丛

06-9-07日新添  心慌无所事事的下午
21. 《佛说无量寿经》
22. 《古文辞类篹》清 姚鼐 编

**06-9-08日新添  开始啃啃大部头
23. 《史记》西汉·司马迁

06-9-12日新添  在经常去的小树林
24. 《清代野记》清] 梁溪坐观老人
25. 《客窗闲话(正续)》清 吴炽昌

06-9-15日新添  中秋节
26. 《述庵秘录》清·王无生
27. 《醉古堂剑扫卷》/《小窗幽记》 @@color:red;^^★^^ @@*(该书与明朝洪应明《菜根谭》、王永彬《围炉夜话》一起并称“处世三大奇书”)*明·陆绍珩 

06-9-16日新读  中秋假期万圣书店
28. 《木心散文》(在万圣书店用了三个小时读完了这本小册子)

06-9-20日  紧张的投资最后阶段
29. 《古文观止》
30. 《大明王朝1566》刘和平 
31. 《百家讲坛:鲍鹏山新说水浒》

06-10-5日  十一郁闷的长假
32. 《从0到1,开启商业与未来的秘密》美国 彼得·蒂尔
33. 《[[零ZERRO:世界符号大全|零Zerro]]》日本 松田行正

06-10-12日  车库咖啡
34. 《干校六记》杨绛
35.《 [[艺术的故事]]》贡布里希

06-10-13日  车库咖啡回家路上
36. 《念完哈佛念阿弥陀佛》陈宇廷 

06-10-14日  很郁闷的周末 
37. 《[[瓦尔登湖]]》美·梭罗  @@color:red;^^★^^ @@

06-10-30日  风沙肆虐的周末
38. 《青箱杂记》宋·吴处厚

06-11-15日  窒息的雾霾天
39. 《洛阳缙绅旧闻记》宋·张齐贤
40.  《佛说四十二章经》 明·释智旭

06-12-11日  窒息的雾霾天
41. 《自由选择》(美)米尔顿·弗里德曼
42. 《格调 社会等级与生活品味》(美)保罗.福塞尔

06-12-12日  窒息的雾霾天
43. 《[[阿城文集]]》阿城  @@color:red;^^★^^ @@
44. 《[[献给阿尔吉侬的花束]]》(美)丹尼尔·凯斯

--
[[正读]] | [[想读]] | [[2021读书目录]]  | [[2020读书目录]] |  [[2019读书目录]] | [[2018读书目录]] | [[2017读书目录]] | [[图书检索|Book List]] | [[读书日志|Reading Logs]] |[[Λ-Reading]]

"""
//注: 标 @@color:red;^^★^^ @@ 符号的为推荐阅读书目//


<$button message="tm-close-tiddler">Close Me!</$button>
<<tabs "[[2017年12月日志]] [[2017年11月日志]] [[2017读书目录]]"class:"tc-vertical">>     
"""
17-01-1-前往内蒙的列车上:
1.《觚剩》 清·钮琇 
2.《鹿鼎记》金庸 (重读)

17-01-20-小年夜:
3. [[《容斋随笔》|三家村公开版权精品书籍]] 清·洪迈
4.《阿城精选》阿城 @@color:red;^^★^^ @@

17-01-26-再有一天过年了:
5. 《秋灯锁亿》 清·蒋坦

17-01-30-初三
6. 《楞严经》
7.《从文自传》 沈从文
8.《浮生再记》 清·蒋坦  @@color:red;^^★^^ @@

17-02-1 -破五
9. 《边城》沈从文

17-03-08 妇女节
10.《胡雪岩全传》@@color:red;^^★^^ @@高阳
11.《了凡四训》明·袁了凡

17-03-09 春天来了
12.《[[我的应许之地]]-以色列的悲情与荣耀》@@color:red;^^★^^ @@阿里沙维特

17-03-16 春日荣荣
13. 《刀锋》英·毛姆
14. 《经典音乐故事》沈弘
15.《曾文正公嘉言钞》 曾国潘

17-03-26 阳光灿烂的日子
16.《经典常谈》朱自清  原典系列一   <<footnote "[1]"其它系列见[[2018读书目录]]">>
17.《声律启蒙·弟子规》清· 车万育 李毓秀
18. [[《酉阳杂俎注释》|三家村公开版权精品书籍]]赵弘志

17-04-2 清明节
19. 《[[陶庵梦忆]]》@@color:red;^^★^^ @@明·张岱

17-04-12 大病之后 新Kindle到手
20. 《怎样读书》胡适
21. 《哈扎尔辞典》塞尔维亚 · 洛拉德·帕维奇
22.《人类简史》@@color:red;^^★^^ @@以色列 · 尤瓦尔·赫拉利

17-04-17 夏天来了,开始穿文化衫了
23. 《[[中国哲学十九讲]]》牟宗三
24.  《[[苏东坡传]]》林语堂

17-04-18 无聊的下午
25. 《北京折疊》郝景芳
26. 《白夜行》东野圭吾·日
27. 《桃花扇》清·孔尚任
28. 《二手时间》俄·阿列克谢耶维奇

17-04-22 世界读书日
29.《[[如何阅读一本书]]》[美]莫提默·J·艾德勒 查尔斯·范多伦
30.《[[十一种孤独]]》理查德·耶茨(Richard Yates)

17-04-29 五一小长假
31.《特斯拉之父》
32. 《[[硅谷钢铁侠]]》@@color:red;^^★^^ @@
33. 《[[李鸿章传]]》梁启超
34.《曾国藩家书》李鸿章校稿
35.《傲慢与偏见》简·奥斯丁
36. ~~《菊与刀》鲁思·本尼迪克特~~

17-05-2 第一期读书会试运行
~~37.《人性的弱点》[美]卡内基~~

17-06-1 忙乱的五月份之后的六一儿童节
38. 《字体故事》西蒙·加菲尔德
39. 《历代笔记概述》 刘叶秋
40. 《中华雅文化:随园食单、林泉高致、长物志、园治》
41. 《思考,快与慢》丹尼尔·卡尼曼

17-06-6 了却了一桩心思 南无阿弥佗佛
42.《[[禅与摩托车维修艺术]]》罗伯特·M·波西格 @@color:red;^^★^^ @@
43.《理想国》柏拉图

17-06-8 最近无名火很大
44.《[[说文解字]]精读》@@color:red;^^★^^ @@殷寄明

17-06-12 这一周很闲,但很恐慌
45. 《精进:如何成为一个很厉害的人》采铜

''07-1 这就进入下半年了''
46. 《人为什么活着》王小波
47.  《[[我的应许之地]]》@@color:orange;^^★^^ @@以色列·阿里·沙维特

''07-03 KIndle免费书库''
48. 《人间词话》王国维  
49.《格言联璧》(清)金缨、 金缨
50. 《胡适四十自述》胡适

''07-07  换一个新环境,旧书新看''
51.《统一与分裂》葛剑雄

''07-14 似乎现在保持在了每周一本书''
52.《[[十一种孤独]]》 理查德·耶茨
53. 《[[思考快与慢]]》丹尼尔·卡尼曼

''08-01 时间多起来了''
54.  《[[蒋介石与现代中国的奋斗]]》@@color:orange;^^★^^ @@ 美·陶涵(Jay Taylor)
55. 《[[艺术的故事]]》贡布里希 (Sir E.H.Gombrich)

''09.02 多事之秋,诸事不宜,旁骛忧烦''
56.《清言集》
57.《民国经典小说合集》(19册:金粉世家 啼笑因缘 春明外史 夜深沉 京华烟云 风声鹤唳 旧巷斜阳 呼兰河传 血纸人 十二金钱镖 亭子间嫂嫂)

''09.15 心情回归,重启读书''
58. 《[[维摩诘的花雨满天]]》 南怀瑾
59. 《敦刻尔克》 [美]沃尔特·劳德

''09.17 离魔去芜 心无旁骛''
60. 《[[浮生三记]]》 沈君山
61. 《[[雪涛谐史]]》  明·江盈科

''09.18 秋意浓''
62. 《[[江湖丛谈]]》连阔如

''09.23 失意 不知所措 迷茫''
63. 《古文鉴赏辞典》(新一版)(全二册)  
64. 《[[文言津逮]]》 张中行
65. 《古典小说漫稿》吴小如

''09.24 秋高气爽  古典音乐的午后''
66. 《枕草子》(日)清少纳言(周作人·译)
67. [[《小螺庵病榻忆语》》|三家村公开版权精品书籍]]清·孙道乾

''09.25 秋雨拍窗 寂寞清冷''
68. [[《影梅庵忆语》|三家村公开版权精品书籍]]清·冒襄

''09.28 暖洋洋的太阳 慵懒的思想 长假前的彷徨''
69. 《[[芳华]]》 严歌苓

''10.1 长假自然醒 懒床看书''
70. 《慈禧全传》@@color:red;^^★^^ @@ 高阳
~~26. 《家书中的百年史》 萧功秦~~

''10.2 没有什么比看书自在了''
71. 《寓言集》胡安·何塞·阿雷奥拉 (Juan José Arreola) 
72. 《原典书坊合辑》@@color:orange;^^★^^ @@(鲁迅 闻一多  梁启超 李石岑王国维 蔡元培 陈柱) 

''10.6 假期尾声,继续游荡在清史''
73. 《[[清朝的皇帝]]》高阳
74. 《清末四公子》高阳
75. 《乾隆韵事》高阳

''10.9 长假之后 萧秋雨冷''
76. 《高阳文集》高阳
77. 《流沙河讲古诗十九首》流沙河

''10.17 19大,草木皆兵''
78.《 [[见字如面]]》

''10.23 ������''
79. 《身边的江湖》土家野夫

''11.1 满地落叶������ 更显瞅瞅''
80. [[《耳食录》|三家村公开版权精品书籍]]清·乐钧
81. 《梦中的欢快葬礼和十二个异乡故事》马尔克斯
82. [[《洛阳伽蓝记》|三家村公开版权精品书籍]]北魏· 杨炫之

''11.8 趁双11淘几本书''
83. 《孔子的智慧》 林语堂
84. 《欧亨利短篇小说集》欧亨利
85.  《[[一个人的书房]]》王国维
86. 《[[阅读是一座随身携带的避难所]]》毛姆
87. 《[[宋代人物列传]]》欧阳修

''11.9 双11囤''
88. 《世界美术名作二十讲》傅雷
89. 《先知中国》余世存
90. 《缘缘堂随笔》丰子恺
91. 《[[艺术哲学]]》丹纳, 傅雷
92. 《毛姆读书随笔》
93. 《[[老味道]]》汪曾祺
94. 《紫禁城的黄昏》庄士敦
95. 《哈佛非虚构写作课 : 怎样讲好一个故事》(美)马克•克雷默

''11.13 [[三家村精品古籍|三家村公开版权精品书籍]]''
96.《 [[闲情偶寄]]》@@color:red;^^★^^ @@

''11.16 双11余波 又收一本''
97. 《[[品人录]]》易中天

''11.21 没有文字版的古籍看起来真费劲''
98. 《[[青泥莲花记]]》明·梅鼎祚

''11.27 寒冷的北京开始驱逐低端人口''
99. 《[[乡下人的悲歌]]》美· J.D. 万斯

''12.2 下周又开始忙了''
100. 《[[中国馔馐谭]]》 民国·齐如山

[[正读]] | [[想读]] | [[2021读书目录]]  | [[2020读书目录]] |  [[2019读书目录]] | [[2018读书目录]] | [[2016读书目录]] | [[图书检索|Book List]] | [[读书日志|Reading Logs]] |[[Λ-Reading]]

//注: 标 @@color:red;^^★^^ @@ 符号的为推荐阅读书目//

<$button message="tm-close-tiddler">Close Me!</$button> 
这本书堪称睡前故事,每晚都会看一些,乐此不疲的原因,就在于此书书写优美,故事怪力乱神,伴眠可以浮想联翩。如若说看次书何得?唯有此书得遣词造句了,至于内容和《子不曰》以及《阅微堂笔记》不相伯仲。
我记得小学时候家里有一本书---《前方来信》---至今不知道这本书从哪里来的,家里没有人会买这本书的。今天看《见字如面》,又让我想起小时候看的前方来信,往事模糊。也许这就是读书的力量,读书未必当时都记得,但是在未来的某一天,总会激活记忆,想起点滴。
"""
李渔是个好玩的人,嬉笑怒骂,活得精致而又潇洒不羁,爱美婢,喜精馔,着美服,耽戏剧。历史上只有张岱堪与媲美。
[[张岱《自为墓志铭》|2017年11月14日 下午 08:52:39]]
"""
3. 可得性法则能解释为什么有些事人们记得很清楚,而有的却被遗忘了。人们是根据从记忆中提取信息的容易程度来估测事情的重要程度的,而这往往也与媒体报道的广泛程度有关。
	<思考,快与慢 (丹尼尔•卡尼曼)> 2017-06-21 00:10:14

4. 正常人思考时出现的系统性失误,认为这些失误是由认知机制的构造造成的,并非由情感引起的思想腐化导致的。
	<思考,快与慢 (丹尼尔•卡尼曼)> 2017-06-21 00:07:51

5. 包括对事件的概率赋值、对未来进行预测、对假设进行评估,以及对频率进行预估
	<思考,快与慢 (丹尼尔•卡尼曼)> 2017-06-21 00:06:33

6. 对经验法则的依赖必然会导致人们判断时的成见。
	<思考,快与慢 (丹尼尔•卡尼曼)> 2017-06-21 00:05:35

7. 以某个字母开头的单词要比想起它在第三个字母位置上的单词容易得多。
	<思考,快与慢 (丹尼尔•卡尼曼)> 2017-06-21 00:05:02
	
8. 框架效应,即决策的制定往往因为对所回答问题不合逻辑的选择而受到影响。
			
24. 我们对自己认为熟知的事物确信不疑,我们显然无法了解自己的无知程度,无法确切了解自己所生活的这个世界的不确定性。我们总是高估自己对世界的了解,却低估了事件中存在的偶然性。

27. 我们显然无法了解自己的无知程度,无法确切了解自己所生活的这个世界的不确定性。
	
28. 直觉启发法的核心观点:当面对难题时,我们往往会对相对简单的问题进行回答,却忽略了自己已经置换了原始问题这个事实。
	
30. 我的主要目标是,在认知心理学和社会心理学最新发展的基础上展示大脑的工作机制,在这些发展中有一些内容比较重要,其中一项就是我们认为瑕瑜互见的直觉思维。

''张岱《自为墓志铭》:''

<<<
蜀人张岱,陶庵其号也。少为纨绔子弟,极爱繁华,好精舍,好美婢,好娈童,好鲜衣,好美食,好骏马,好华灯,好烟火,好梨园,好鼓吹,好古董,好花鸟,兼以茶淫橘虐,书蠹诗魔,劳碌半生,皆成梦幻。年至五十,国破家亡,避迹山居,所存者破床碎几,折鼎病琴,与残书数帙,缺砚一方而已。布衣蔬食,常至断炊。回首二十年前,真如隔世。
<<<

张岱自题小像:


<<<
功名耶落空.富贵耶如梦.忠臣耶怕痛.锄头耶怕重.著书二十年耶而仅堪覆瓮.之人耶有用没用. ---《张岱文选》
<<<

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
书前部分--关于戏剧创作理论部分--尽可以略去,尤其是关于填词声律,非专业人士实难掌握,与其晦涩难懂,不如略过。
自序足以悲天悯人,天妒英才,让人唏嘘人生无常。

''自序 ''


<<<
  陶庵国破家亡,无所归止,披发入山,駴駴(hài)为野人。故旧见之,如毒药猛兽,愕窒不敢与接。作自挽诗,每欲引决。

  因《石匮书》未成,尚视息人世。然瓶粟屡罄,不能举火,始知首阳二老直头饿死,不食周粟,还是后人妆点语也。饥饿之余,好弄笔墨,因思昔人生长王、谢,颇事豪华,今日罹此果报。以笠报颅,以篑报踵,仇簪履也;以衲报裘,以苎报絺,仇轻暖也;以藿报肉,以粝报粻,仇甘旨也;以荐报床,以石报枕,仇温柔也;以绳报枢,以瓮报牖,仇爽垲也;

  以烟报目,以粪报鼻,仇香艳也;以途报足,以囊报肩,仇舆从也。种种罪案,从种种果报中见之。鸡鸣枕上,夜气方回,因想余生平,繁华靡丽,过眼皆空,五十年来,总成一梦。今当黍熟黄粱,车旅蚁穴,当作如何消受?遥思往事,忆即书之,持向佛前,一一忏悔。不次岁月,异年谱也;不分门类,别志林也。偶拈一则,如游旧径,如见故人,城郭人民,翻用自喜,真所谓痴人前不得说梦矣。昔有西陵脚夫为人担酒,失足破其瓮,念无所偿,痴坐伫想曰:“得是梦便好!”

  一寒士乡试中式,方赴鹿鸣宴,恍然犹意非真,自啮其臂曰:

  “莫是梦否?”一梦耳,惟恐其非梦,又惟恐其是梦,其为痴人则一也。余今大梦将寤,犹事雕虫,又是一番梦呓。因叹慧业文人,名心难化,正如邯郸梦断,漏尽钟鸣,卢生遗表,犹思摹拓二王,以流传后世。则其名根一点,坚固如佛家舍利,劫火猛烈,犹烧之不失也。
<<<

其它零散记录:

1. 仰望慈悲,俯从大众.    2017-06-20 02:03:47

2. 是日,四方流离及徽商西贾、曲中名妓,一切好事之徒,无不咸集。长塘丰草,走马放鹰;高阜平冈,斗鸡蹴踘;茂林清樾,劈阮弹筝。浪子相扑,童稚纸鸢,老僧因果,瞽者说书,立者林林,蹲者蛰蛰。日暮霞生,车马纷沓。宦门淑秀,车幕尽开,婢媵倦归,山花斜插,臻臻簇簇,夺门而入。    2017-07-09 13:14:56

3. 土著流寓、士夫眷属、女乐声伎、曲中名妓戏婆、民间少妇好女、崽子娈童及游冶恶少、清客帮闲、傒僮走空之辈,无不鳞集。 2017-07-09 13:04:43。

//待补//
梅鼎祚《青泥莲花记》载,宋徽宗赵佶为了泡妞竟设“行幸局”,专职安排其寻娼宿妓,这不就是炮局吗?《青泥莲花记--李师师》:

<<<
“局中以帝出日谓之有“有排挡”,次日未还,则传旨称疮痍不能坐朝”
<<<

无怪乎被金人掳去。。
文人相轻,亘古不变。

《品人录》雍正一节,说起雍正驾崩之谜,易中天说二月河的《雍正皇帝》可谓“狗屁不通”“信口开河二月河”:


<<<
雍正暴卒,官书又不载原因,似乎有意在隐瞒什么,自然会引起人们的猜疑。历史学家的猜测不带感情,比较可靠公允,如郑天挺认为死于中风,冯尔康认为死于中毒(服丹药所致)。小说家和民间的说法就难免想当然甚至瞎编造。最离谱的是河南作家二月河,在其所著《雍正皇帝》一书中说是半因殉情半因乱伦而自杀,简直就是胡编乱造信口开河。电视连续剧《雍正王朝》则含糊其辞,暗示其系劳累而死,虽有一定道理,但劳累不可能是致死的直接原因。
<<<


一个史学家,怎么能以史学标准考量小说家那,还加枪弄棒的来个地域歧视,如此来说,金庸武侠小说可谓满纸荒唐言了?易中天白呼了半天也没有对康熙之死说出个所以然来。如若非要找一个史学家里写小说最好的,小说家里历史最夯实的,非高阳莫属了。《[[清朝的皇帝]]》里,高阳对雍正上位,采取的是“偷梁换柱”说:把康熙遗诏“传位十四阿哥胤祯。钦此。--康熙六十一年六月初二御笔”通过隆科多篡改为“传位于四阿哥胤禛。钦此。”(原著:“将“贞”上一小画出头,最下面再加上一画,使得“贞”之下的两撇,变成一个“大”字,“祯”就变成“真”了。”)权且不论孰是孰非,尚不可定论。但高阳的小说可谓史实与文采兼具,考据公良而翔实,古韵十足而易懂,而易中天的作品与之比起来,易也只能算是一个说书人了。

推荐:高阳作品《胡雪岩全传》和《慈禧全传》
阿城的字,字字无奇;连成句,句句平常;组成段,则意味绵长。这就是一个写字人的功力。

平字见奇,常字见险,陈字见新,朴字见色。

阿城的短篇,读起来,如塌青草,如沐春风,一段故事下来,人的凄苦悲歌,吹煞一波江水。
怪不得王安忆有这样评价:

<<<
“阿城是一个有清谈风格的人。现在作家里面其实很少有清谈风格的,生活很功用,但是他是有清谈风格的,他就觉得人生最大的享受就是在一起吃吃东西,海阔天空地聊天。法国人也有清谈风格。
<<<


[[短篇精品|http://zove.me/#%E7%B2%BE%E5%93%81%E7%9F%AD%E7%AF%87%E9%98%85%E8%AF%BB:%E7%B2%BE%E5%93%81%E7%9F%AD%E7%AF%87%E9%98%85%E8%AF%BB]]
"""
自顺治以后,年号的涵义如下: 
1. 顺治——入关之初,天下未定,愿将顺民意,以求大治。此一年号显然有抚慰的用意在内。
 2. 康熙——天下既定,与民休息,希望安居乐业。 
3. 雍正——雍为雍亲王,正为正位。特选此两字,正见得其得位不正;世宗喜自作聪明,类此弄巧成拙之事甚多。 
4. 乾隆——乾卦在五伦中象征为男、父、君,用于年号自是指君。乾隆者"乾运兴隆",可见高宗得位的基础是很薄弱的。此年号配合其他各种迹象,透露了许多秘密。 
5. 嘉庆——此年号为高宗内禅时所定,嘉是对嗣皇帝的嘉许、嘉勉,庆者高宗自祝。  
6. 道光——光大道统之意。清朝诸帝年号,道光的涵义比较空泛。 
7. 咸丰——道光年间,积极整顿盐务、漕运、河道,但鸦片战争的结果,显示财用不足,国势中衰;文宗即位,以求富足为第一要义,因称咸丰。 
8.同治——穆宗年号本定"祺祥",辛酉政变,"三凶"被逮,两宫垂帘,恭王执政,同治的涵义非常明显:太后临朝听政,并不专断,愿与亲贵大臣共同治国。 
9.光绪——绪有二义,一为统绪,二为次绪。张衡《东京赋》:"故宗绪中圮。"注曰:"绪,统也。"所以年号用此绪字,既以表示德宗为外藩迎立,亦以表示兄终弟及的先后次序,于德宗的身份异常贴切。同光之际,词臣最盛,故能选用此精当深刻的字眼。光自是光大之意。 
10. 宣统——迎立溥仪的懿旨,明白宣告,溥仪入继为穆宗之子,兼祧德宗。此是根据慈禧的意旨,明白宣告统绪,用意亦在防止醇王一系,或者会引明世宗的故事,以皇帝"本生父"的身份,在宗法上引起争议。
//~高阳《清朝的皇帝》//
"""
一、雍正:上"胤",下"示"字旁。 
二、乾隆:上"弘",下"日"字旁。 
三、嘉庆:上"颙",下"玉"字旁。 
四、道光:上"绵",下"竖心"旁。 
五、咸丰:上"奕",下"言"字旁。 
六、同治:上"载",下"三点水"旁。 
七、光绪:同上。 
八、宣统:上"溥",下"人"字旁。
//《清朝的皇帝》//
此名字好美 --“锁骨菩萨”,当下来形容骨干女孩还是蛮合适的。


<<<
昔延州有妇人,白哳,颇有姿馥,年可二十四、五。孤行城市,年少之子悉与之游,狎妮荐枕,一无所却。数年而殁。州人莫不悲惜,共醵丧具,为之葬焉。以其无家,瘗于道左。
大历中,忽有胡僧自西域来,见墓遂肤坐,具敬礼焚香。围绕赞叹数日。人见谓臼:“此一淫纵女子,人尽夫也。以其无属性,故瘗于此,和尚何敬邪。"僧日:“非檀越所知,斯乃大圣、慈悲喜舍,世俗之欲,无不徇焉。此即锁骨菩萨,顺缘已尽。圣者云耳,不信,即启以验之。”
众大即开墓,视遍身之骨,钩结皆如锁状·果如言。州
人异之.为设大斋.超塔焉。一《续玄堡录》
<<<

此类故佛教典籍载录颇多:

<<<

昔有贤女马郎妇,于金沙滩上施一切淫人。凡与交者,永绝其淫。死葬后,一梵僧来,云:“求我侣”掘开,乃锁子骨。梵僧以杖挑起,升空而去。-- 《传灯录》
<<<

佛门故事中,姿色靓丽大义凛然人尽可夫的女子,很多都超然升天。真可谓我不入地狱谁入地狱。以身试法,言传身教,一念成佛!


<<<
观音大士昔于陕州化为女,以救淫迷:既死,埋之,骨如金锁不断。  一《韵府续》
<<<


<$button message="tm-close-tiddler">Close Me!</$button> 
什么小说才是一本好小说?
具有一个引人入胜的故事是否就是一本好小说?
这是毛姆提出来的问题,也是我有时候很困惑的问题,什么才是一部好小说?一部好小说应该具有什么样的特征?
如果说叙述了一个耐人寻味的故事就是一本好小说,不如说它是一本故事会。这让金庸的作品情何以堪?如果按照毛姆所说“他们并不明白,实际上故事是小说家为了抓住读者的兴趣而扔出的一根救生绳索。”,一本好小说,首先得有一个引起读者广泛的兴趣得主题,“故事并不是小说中最重要的部分。”同时也指出为什么许多作家时不时在小说中安排男女上床的情节,就是引起人们的兴趣。

<<<
“为了维持小说对读者的吸引力,他们让男女主人公在故事中频频上床。在我看来,这不是一个好办法。 关于性交,切斯特菲尔德爵士曾经有过这样的评论:欢娱是短暂的;情景是好笑的;代价是高昂的。如果切斯特菲尔德爵士寿命够长,活到今天并阅读过现代小说,也许他会做出这样评价:行为是重复的;叙述是冗长的;感受是乏味的。
<<<

小说家不是故事员,但小说要有故事。故事之外的是什么?
"""
雍正是一个什么样的人:
1、孤独而敏感:做皇子时,他是“孤臣”;当了皇帝,则是“独夫”。他生性刚毅、急躁、猜忌、刻薄、冷峻挑剔,易暴易怒,因此在诸王大臣中很没有人缘,几乎和谁都搞不来。苛刻一面,处理年羹尧一事即可看出来。 雍正对年羹尧,可以说是恨到骨头里,也整到底了。他给年羹尧的最后上谕说:“尔自尽后,稍有含怨之意,则佛书所谓永堕地狱者,虽万劫亦不能消汝罪孽也。”专制君主残害他人,真比强盗还要厉害。强盗不过要人钱财,最多谋人性命,专制君主则不但要别人的性命,还要别人的灵魂,而且还要说这是为你好,是慈悲为怀菩萨心肠,真是阿弥陀佛,善哉善哉!

2、朝乾夕惕,宵衣旰食:敬业精神和勤政精神,几乎所有历史学家都不否认。 雍正的个人生活也很简单,没什么嗜好和娱乐,不爱游猎,也不算好色。他也喜欢一些小玩艺,但不玩物丧志。
3、刚毅而又有温存一面:他常常会在臣下请安的折子上批上一句:“朕躬甚安好,卿好么?”或“朕安,你好么?”话虽不多,但语气中透着亲切,不是一般的官样文章。他也会和臣下说闲话,拉家常,絮絮叨叨,拉拉杂杂。兴起时,想说什么就说什么。比如:“好事好事!读此奏书之后而不高兴嘉奖的,除非不是皇帝。”或“李枝英真不是个人!大笑话!真笑话!”“传口谕给他,朕笑得了不得,真武夫也!”他还会在奏折上连批四个该字:“该!该!该!该!”真是爱憎好恶溢于言表,嬉笑怒骂皆成文章,完全不摆皇帝架子,故作圣人状。难怪史家公认,读雍正御批,尤有趣味,可以读出一个真实的雍正来。

雍正对自己一生所作所为,从不后悔,而且充满骄傲。正如他向世人之所宣布:@@background-color:yellow;“朕就是这样汉子,就是这样秉性,就是这样皇帝!”@@ 既然如此,我们还有什么话好说?

组织制度改革:公、忠、廉、能。
包括康熙皇帝在内,历代帝王都奉司马昭的“三字经”为圭臬。这三个字,就是清、慎、勤,也就是清廉、谨慎、勤勉。庸才则更加注重才能,并因材施用,扬起长而避其短,例如用文化程度不高但侠肝义胆的李卫做施外武将,而对维诺但

制度改革:密折政治。这是一道狠招,比明代的东西厂特务制更文明更有效,高明了不少。

思想文化改革:崇儒礼佛 

2017年11月22日下午11:43:32

<$button message="tm-close-tiddler">Close Me!</$button> 
"""
雍正胤禛是从藩邸突然跃升为皇帝,自然对官场种种陋习弊端、亏空挪用、贪污之道都谙熟。所以执政不久就开始了一场声势浩大的反贪风暴。力度之大堪为清代之最。
雍正先从国库和地方亏空抓起,手段高明且狠辣:从中央派出检查小组,并且带领着各地候补官员,先查亏空,再查贪污,一经查实立马革职,候补官员马上替补上任。被查出的亏空和贪污一切都有当事人偿还,而且父债子还,直到还清为止。这一场肃清贪腐运动浩浩荡荡在全国铺展开来,就连皇帝的弟弟也没有放过,照样卖宅子填补在任时的亏空。
反腐运动就像暴风雨,水过地皮湿,并不能根本上解决问题。倡廉比反腐更为重要,接下来,雍正从制度上进行改革,企图从根本上解决贪腐问题。雍正推出了两大措施:耗羡归公和高薪养廉。 就是费改税和高薪养廉。
雍正的反贪运动结果怎么样?确实有效,历史上有“雍正一朝无官不清”的说法,虽然夸张了点,却是对雍正治国的一个相对公正的评价。
“雍正改元,政治一新”。可这一切都是短暂的,讽刺的是,雍正去世没多久,在乾隆一朝就出现了有清一代最大的贪官大学士和珅,而且贪污之巨让人瞋目结舌。和珅查抄时的家财达八万万两,相当于当时政府十年的财政收入,时法王路易十四私产的十四倍,也相当于雍正五年国库储银的十六倍,康熙末年国库储银的一百倍。如果雍正地下有知,估计清陵要冒烟了。
为什么雍正一朝的朗朗清明如此短暂那?
成也极权,败也极权。“其人存则其政举,其人亡则其政息”(《礼记·中庸》)
雍正的反贪改革之所以成效,靠的是皇帝的强权和特权,而非行之有效的制度,因为雍正是这个制度的制定者也是监督方。雍正发明的“密折制”-- 地方直通中央热线,有授权的地方官吏都可以向雍正私呈密折,内容不限(这比明朝设置的东西厂特务制度高明了许多)-- 也起到了极大的监督作用。" 雍正要惩治的是腐败,反腐败的力量是他的特权,而特权又恰是腐败之源。没有特权,不会滋生腐败;没有特权,又无法惩治腐败。"

这是一个死结!谁能结?
呵呵!
德治 礼治 人治 法治 官治

[[上一则|2017年11月23日 下午 11:46:09]]简单总结了一下雍正的一些改革措施,例如反贪改革、文化以及制度改革。其结果是失败的,那么为什么会失败?除了上一则提到的“其人存则其政举,其人亡则其政息”,根本原因是什么?

人类社会是由单体个人组成群体性社会结构,这里面就有二维空间:个人和群体,如果加上政府即官方,则是三维:个人、群体和政府,三层关系。古代帝王中国对社会的基本治理则有三个方面组成:德治、礼治和律治。

''“他们是乡下人(hillbilliy)、乡巴佬(redneck),或者是白色垃圾(white trash)。而于我来说,他们是邻居、朋友和家人。”''

这是《乡下人的悲歌》作者——31岁的耶鲁法学院学生 J.D. 万斯——在序言中的自述。

在美国这个种族意识很强的社会中,所用的词汇往往局限于人们皮肤的颜色——黑人(black people)、亚洲人(Asians)和白种人特权(white privilege)。万斯是个白人,细分的来说,是来自苏格兰-爱尔兰人后裔(Scots-Irish descent)中那些没有大学文凭的数百万白人工人阶级当中的一员,而非美国东北部信奉新教的盎格鲁-撒克逊裔白人(WASP)。“对于这个人群而言,贫穷是家庭的传统——他们的祖先当年在南方当奴工,然后又曾当过佃农、煤矿工人,在较近的年代里又当上了机械工和工厂工人。在美国人的称呼中,他们是乡下人(hillbilliy)、乡巴佬(redneck),或者是白色垃圾(white trash)。而于我来说,他们是邻居、朋友和家人。”

中国自古几乎表面上不存在什么种族意识,五十六个民族是一家,这是社会主流的价值观。但万斯所描述的自我出身——苏格兰-爱尔兰后裔族群,不正像我们当今社会的一些族群——被官方认为的低端人口——吗?他们因为某些共同的属性被标签化为一个低端人口“无产阶级”,他们大部分来自农村或小城市,或许没有大学文凭(或没有名牌大学文凭),他们是快递员、饭店服务人员、办公楼保洁人员,他们是早晨贩卖早点的小贩,夜市撸串的摊主,是发廊的学徒,或者是小区的保安人员。解放前他们是农村包围城市的牺牲者;建国后他们是以工人阶级领导一切的下的贡献者;改革开放后他们是一部分先富起来人眼中的贫穷落后者;现在他们是城市化进程中的低端人口——城市蝼蚁。


在美国,苏格兰-爱尔兰裔是美国特色最为鲜明的群体之一。一位观察者曾记录道:“走遍美国各地,苏格兰-爱尔兰裔美国人一直令我感到震惊。他们是美国最为持久稳固、变化最少的亚文化群。当几乎到处都是对传统的全盘摒弃时,他们的家庭结构、宗教与政治,还有社会生活仍然保持不变。”在中国又何尝不是那,也许是这些“低端人口”仍在坚守着中国几千年乡村社会结构沿袭下来的一些传统文化,最浓的传统也只仅存在这些人生活之中了,也许一些人认为落后,认为俗,认为不现代,可中华文化能和这些割裂吗?我想被文革扫荡的也只剩下这些了。

而这些农村低端人口对传统文化的信奉给国家和社会带来了许多好的特性——高度的忠诚感以及对家庭和国家的狂热。如果社会是一面硬币,所谓的高端人口是带字的一面,无字的一定是“低端人口”,因为这一面被称为反面,他们是梅花、菊花和兰花。我们的社会向来是要面子不要里子的,看来这次北京“放弃低端人口”运动,一定不会是个案。

出身“寒门”的美国小伙子万斯在《乡下人的悲歌》自序里面说:
这就是我真实的人生,也是我写这本书的初衷。我想让人们知道那种对自己濒临放弃是一种什么样的感觉,以及为什么会有人放弃。我想让人们了解穷人的生活到底发生了什么,以及精神和物质上的贫穷会对穷人家的孩子造成什么样的心理影响。我想让人们理解我和我家庭的美国梦。我想让人们体会向上层流动的真实感受。此外,我还想让人们认识到我自己不久前才意识到的一个问题:对于我们这些实现了美国梦的幸运儿来说,那些我们经历过的恶魔一直就在身后不远处穷追不舍。

在美国的万斯是幸运的,实现了自己的美国梦。
在中国,“寒门”能否在复兴中华进程中实现中国梦?打破传说中的“寒门再难出贵子”?
我不知道,您知道吗?


<a href={{!!url}} target="_blank">北京驱逐低端人口有感</a> 
  ^^微信公众号^^

这封信是夏完淳写给母亲的。夏完淳是谁?


<<<
夏完淳,明末松江华亭县人。1631年出生于江南望族,9岁能赋诗作文,有神童之誉,名重一时。他的父亲是江南名士夏允彝。1644年,明朝灭亡。夏允彝集结忠明人士举兵抗清。这一年夏完淳14岁。刚刚完婚,便追随父亲四处征战。战事失利,夏完淳亲眼见证父亲投江殉节。国仇家恨没齿难忘。夏完淳继续抗清,于1647年春天因叛徒出卖,兵败被俘。押至南京,洪承畴亲自讯问并劝降,夏完淳痛骂了洪承畴。九月十九日,夏完淳在将赴刑场时写下这封《狱中上母书》,随后被带到南京西市。临刑时,他立而不跪,神色不变,刽子手战战兢兢,不敢正视,良久以持刀从喉间断之而绝。夏完淳就义时,年仅16岁。
<<<

权且放下夏完淳的民族大义之大,单纯从一个生物个体而言,16岁的年龄,在现代来看真是“毛都没长全的青瓜蛋”。而明末清初时期16岁的夏完淳却宛然一个大义凛然的伟丈夫,承父遗志反清复明,面对死亡视死如归,也只有面对母亲的时候才会肝肠寸断。看完直让人唏嘘不已。

''狱中上母书''


<<<
不孝完淳今日死矣。以身殉父,不得以身报母矣。痛自严君见背,两易春秋,冤酷日深,艰辛历尽。本图复见天日,以报大仇,恤死荣生,告成黄土。奈天不佑我,钟虐先朝,一旅才兴,便成齑粉。去年之举,淳已自分必死。谁知不死,死于今日也。斤斤延此二年之命,菽水之养无一日焉。致慈君托迹于空门,生母寄生于别姓,一门漂泊,生不得相依,死不得相问。淳今日又溘然先从九京,不孝之罪,上通于天。

呜呼!双慈在堂,下有妹女,门祚衰薄,终鲜兄弟。淳一死不足惜,哀哀八口,何以为生?虽然,已矣!淳之身,父之所遗。淳之身,君之所用。为父为君,死亦何负于双慈?但慈君推干就湿,教礼习诗,十五年如一日;嫡母慈惠,千古所难。大恩未酬,令人痛绝。

慈君托之义融女兄,生母托之昭南女弟。淳死之后,新妇遗腹得雄,便以为家门之幸;如其不然,万勿置后。会稽大望,至今而零极矣。节义文章,如我父子者几人哉?立一不肖后,如西铭先生为人所诟笑,何如不立之为愈耶?呜呼!大造茫茫,总归无后,有一日中兴再造,则庙食千秋,岂止麦饭豚蹄,不为馁鬼而已哉?若有妄言立后者,淳且与先文忠在冥冥诛殛顽嚚,决不肯舍!

兵戈天地,淳死后,乱且未有定期。双慈善保玉体,无以淳为念。二十年后,淳且与先文忠为北塞之举矣。勿悲勿悲!相托之言,慎勿相负。武功甥将来大器,家事尽以委之。寒食盂兰,一杯清酒,一盏寒灯,不至作若敖之鬼,则吾愿毕矣。
新妇结褵二年,贤孝素着。武功甥好为我善待之,亦武功渭阳情也。

语无伦次,将死言善,痛哉痛哉!人生孰无死,贵得死所耳。父得为忠臣,子得为孝子,含笑归太虚,了我分内事。大道本无生,视身若敝屣。但为气所激,缘悟天人理。恶梦十七年,报仇在来世。神游天地间,可以无愧矣!
<<<

这是一封毛泽东写给部下的一封信,毛的书我看的不多,但是从毛的这封信可以看出毛,或许是领导们,喜欢用字“的”和大量的排比句式。细思也是,“的”字为了陈述性强调,排比句式是为了显得更加有力量,时下来到的讲话稿似乎也是如此。

雷经天同志:
你的及黄克功的信均收阅。黄克功过去斗争历史是光荣@@color:red;的@@,今天处以极刑,我及党中央的同志都是
为之惋惜@@color:red;的@@。但他犯了不容赦免的大罪。以
一个共产党员、红军干部而有如此卑鄙@@color:red;的@@、
残忍@@color:red;的@@、失掉党的立场@@color:red;的
@@、失掉革命立场@@color:red;的@@、失掉人的立场的行为,如为赦免,便无以教育党,无以教育红军,无以教育革命者,并无以教育做一个普通的人。
因此中央与军委便不得不根据他的罪恶行为,根据党与红军的纪律,处他以极刑。@@color:red;正因为黄克功不同于一个普通人,正因为他是一个多年的共产党员,是一个多年的红军,所以不能不这样办。@@共产党与红军,对于自己的党员与红军成员不能不执行比较一般平民更加严格的纪律。当此国家危急、革命紧张之时,黄克功卑鄙无耻、残忍自私至如此程度,他之处死,是他的自己行为决定的。 @@color:red;一切共产党员,一切红军指战员,一切革命分子,都要以黄克功为前车之戒。@@
请你在公审会上,当着黄克功及到会群众,除宣布法庭判决外,并宣布我这封信。对刘茜同志之家属,应给以安慰与抚恤。
毛泽东  一九三七年十月十日
上接 :<$details class="notification" summary="德治 礼治 人治 法治 官治">
{{2017年11月27日 上午 12:02:11}}
</$details>


先说德治和礼治,二者是形而上下关系。诚如黄仁宇先生所言,是“以道德代法制”。也就是说,用道德和礼仪来管理社会,治理国家。这样一种管理和治理方式,就叫“德治”和“礼治”,不是我们现在主张的“法治”,也不是通常以为的“人治”。以道德代法制,是中国文化的性质决定的。中国文化的思想内核是群体意识。 因为法制只能规定人们不准做什么,不能规定人们必须做什么。比如它只能规定不得伤害他人,却不能规定必须热爱他人;只能规定不得损害群体利益,却不能规定必须为群体谋求利益。所以德治和礼治在中国古代社会治理中起到了极大的作用,在大部分地方中央政府的权力机构很难遍及,只有吏,没有官。地方的基本治理就要靠德治和礼治了,因为中国儒教的那一套道德理论是一套标准的人与人之间关系的的规范和行为的准则。人与人之间的关系可以有两种:平等的和不平等的。平等的关系产生平等的道德,不平等的关系则有赖于不平等的“伦理”。中国古代社会所谓“伦理道德”的核心内容,就是确立人与人之间的不平等关系,即:别内外、定亲疏、序长幼、明贵贱。因此,不同的人有不同的道德规范,“君为臣纲,父为子纲,夫为妻纲”,君要臣遵守的(忠),君不必遵守;父要子做到的(孝),父不必履行。没有一种对每个人都同等有效或必须共同遵守的“公德”。“天有十日,人有十等”,“惟上智与下愚不移”,哪有起点的平等可言?所以在道德的框架下,群体有宗族祠堂,个体有一家之主,他们挥舞着道德治理的大棒,行使着基本的治理功能。

而儒家说鼓吹的:“人皆可以为尧舜。”每一个人都可以像尧舜一样做一个德行修远的王。可是君臣主仆所修德目各不相同,君主修“王道”,越修越霸气,臣仆修“奴性”,越修越窝囊,怎么会一样地都是“尧舜”?这一切都是政治宣传所需要,蛊惑人心的一种糖衣炮弹而已,是古代的“中国梦”。

其次是人治。中国历史上确实存在过人治的现象。但我们必须注意,那多半出现在特殊的历史时期。比方说,在动乱年代,或建国之初。这时,礼已坏而乐已崩,德治和礼治系统失灵,便只好寄希望于“人治”和“治人”。尤其是在天下大乱改朝换代的年代,某些英雄人物确乎可能凭借个人的魅力,叱咤风云,逐鹿中原,运天下于股掌之中。其实,与其说这是人治,不如说是官治,人无管,治的权力何来?

再说法制。从现代社会治理结构来说,法制是一个社会运转不悖的基础。而中国古代社会,正如前面所说,是以德治和礼治为基础的,法制充其量是社会治理手段的一种补充,因为中国社会产生不了法制。法制有一个基本原则:法律面前人人平等。平等,才需要法;平等,也才能够产生法。什么是法?法就是“全民公约”,就是社会中全体个人的共同约法。

而这恰巧是中国社会的致命硬伤:只强调群体的意义,不承认个体的价值。群体总是伟大的,叫“一大群”。个体总是渺小的,叫“一小撮”。否定个体的存在价值,也就必然不承认个体的独立人格。没有独立人格,就没有自由意志,也就没有民主和法制。这样,赖以维系群体的,便只能是人身依附关系。那么,这样一种人际关系要怎样才能维持呢?无非两个办法,一是暴力,二是哄骗。这两种手段中国都有,那就是“霸道”和“王道”,也就是高压和怀柔。不过,高压和暴力难以持久,还是尽量以怀柔和哄骗为好。三纲五常这些“伦理道德”,就是用来干这活的。

所以这种人格不平等的社会无须乎法,因为他们之间没有什么可商量的,只有服从,无法约定。皇帝口衔天宪,乾纲独断,令行禁止,说一不二,约什么法?所以,中国古代只有“王法”,没有“约法”。虽然也有“约法三章”的说法,但那“约法”从来就是单方面的。比如刘邦入咸阳,与秦中父老的“约法”(杀人者死,伤人及盗抵罪),便不过是刘邦单方面宣布的新王法。中国古代社会是“君要臣死,臣不得不死;父要子亡,子不得不亡。”既然如此,还要法干什么?有律就行。比方说,谋逆,凌迟;大不敬,斩立决;不孝,绞;以及“十恶不赦”(即谋反等十种最严重的罪行不得赦免)等等。

而那些所谓“王子犯法,与庶民同罪”,也是骗人的鬼话。“天有十日,人有十等”,“惟上智与下愚不移”,哪有起点的平等可言?王子能犯什么法?除非是谋反。其他的,便只能叫“过失”。即便有了过失,也要另找替罪羊,由他人代为受过。比如皇太子读书不用功,受罚的便只能是陪读者。春秋时,晋悼公的弟弟公子扬干犯军规,执法官魏绛也不过只是将其车夫斩首。魏绛的“执法如山”是有名的,也不过如此而已。这就是礼,就是“刑不上大夫,礼不下庶人”,没什么平等可言。况且,如果王子犯法,便要与庶民同罪,那么皇帝犯法又与谁同罪?法律面前人人平等,行不通吧?

即便在新社会里,“一切人的自由发展”是以“每个人的自由发展”为条件和前提的。(见《共产党宣言》第一卷第273页)
<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201711]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>

Weekly30:7.17~7.23

本周读书:[[蒋介石与现代中国的奋斗]]

''“那个丢掉中国的人”''

我不是蒋介石的拥趸。这可能受两方面影响,一是受红色意识流污染;二是因为上一条原因,对近现代政治历史厌恶性排斥。而之于蒋,可能是敌人的敌人即朋友的心理,对之充满兴趣,所以时不时的总会读一些关于蒋介石的稗官野史。 《蒋介石与现代中国的奋斗》非野史,本书作者乃哈佛学者、前美国驻华外交官陶涵(Jay Taylor),他通过研究近年公开的蒋介石日记以及一些罕见档案,以第三方视角还原了那个风雷激荡的年代一个有血有肉凡人蒋介石。“ 透过蒋介石日记的慎选引用,陶涵成功表露蒋介石的个人特质…….日记引文搭配上重大政治、军事局势的生动细述,他让我们更贴近这些还在成形的思考。因此某种程度上,陶涵在蒋介石与他置身的世界之间建构了更具个人感性的连结。 ”(史景迁评)。我想他的著作公允程度应该比红色区出版物要高。本次介绍的版本非大陆版本。中信出版社将此书引进后,从名字就开始阉割–《蒋介石与现代中国》,内文也不知道删减了多少。像之前我在Zeroblog上摘录的章节,一定不会出现在大陆版本上的。如关于抗日战争的记述:

<<<

一九四零年一月,周恩来给斯大林的秘密报告提到,中国有百万以上的士兵伤亡或受伤,其中八路军伤亡仅有三万人,新四军则为一千人,换句话说,抗战打了两年多,中共在整个伤亡人数中只占百分之三。
德国入侵苏联当天,共产国际发紧急指令给中国,告诉他们,其最迫切任务是坚持和国民党合作抗日,如果日本攻打苏联,要以军事行动摧毁日本人在华交通运输线,否则,针对中国境内的日本侵略者的武力行为,不宜由中共发动。这也暗示要尽一切可能去怂恿美国对付德日。
根据共产国际一九四四年十二月的一份报告,直到当时抗战已进行七年半,中共八路军仅有十万三千一百八十六人阵亡,以游击战为主的中共新四军极可能只折损数千人;但是政府军死者逾一百万人。换句话说,从周恩来一九四〇年一月给共产国际的报告,至一九四四年十二月此一报告之间——这段期间是史迪威等人坚称中共承担抗战主要负担而国军并无作为的时间——中共只有约七万名士兵牺牲性命。
中共在“极罕发布的伤亡数字”中透露,从一九四七年三月至五月,“损失”十一万六千人,其中大多在东北地区。
<<<


关于孙中山的描述:


<<<
孙中山“二次革命”失败后狼狈地逃赴日本,追随孙中山东渡的人士当中有一位生意人宋耀如,是孙中山的重要金主,其长女宋蔼龄担任孙的英文秘书,有一天孙中山向宋耀如透露心意,想向宋蔼龄求婚,宋耀如大吃一惊,当下就拒绝了这本亲事,几个月后,宋蔼龄嫁给了孔祥熙。接替宋蔼龄秘书工作,服务革命领袖的,是二十一岁的妹妹宋庆龄,她比姐姐更苗条、美丽,孙中山立刻又爱上了妹妹,而宋庆龄对于这位比她大二十六岁的长官的感情纯粹是政治、精神上的崇拜敬爱。此时,宋耀如可能感觉孙中山又喜欢上了他的二女儿,决定全家回上海。回国之后,宋庆龄悄悄寄了一封信给孙,孙回信说,他在东京迫切需要她的协助。一天夜里,在家里女佣人的帮助下,宋庆龄爬窗、沿扶梯逃出家,旋即搭船去日本,孙中山在东京迎接她,并向她求婚,这一年,宋才二十出头,孙已经四十八岁。因为这件婚事,宋耀如宣布与女儿断绝关系,发誓再也不跟孙中山往来。
<<<
                                           // 17.8.24//


这本书读着好累。

之所以累,是信息量太大,史料太详实,未知领域太多。但也实在精彩,作者对叙事的驾驭,堪为一流。虽然整本书是线性推进,但民国时期的中国四分五裂,军阀混战,倭人入侵,内外交困,国共分合两治,这些庞杂的结构,没有一个好的叙事能力,实难完整的把故事讲下拉。

书方看到三分之一强,抗战刚刚进入转折阶段,珍珠港事件刚刚爆发,但是一个清晰的蒋介石已经浮现出来。如果说之前的蒋介石之于我是一个黑白电影,现在就是一个彩色大片,也许整本书看完会是一个立体的蒋介石呈现。
//2017.9.18//

作为特殊时代一位拨乱反正的伟人,能持之以恒,那怕是在战火硝烟的岁月,每日能静下来写日记,观自内心,自省自艾,实在让人佩服。蒋之前也有一位大人物--曾国藩--每日以字记事,累积书牍,反省自躬,不过比之蒋,后者居位更高,勤奋度更甚,蒋的这一行为,可谓前无古人后无来者。蒋介石的日记更是一份“史记”,一方努力抹平的一些历史,在蒋介石的日记里都真实的记载着。

蒋在日记里经常出现这样的自省言语:

<<<
轻浮急躁,个性太强
凡大小政策,无不自信自决
以致无人进言,不能集思广益
折中至当
<<<

<$button message="tm-close-tiddler">Close Me!</$button> 
# 《[[清朝的皇帝]]》
#  《慈溪全传》
#  《乾隆韵事》

"""
十一长假,人家行万里路,我孤灯闲坐乱翻书。
以上三本书皆出自高阳之手,包括上个月读的《胡雪岩传》,皆堪称经典。高阳以小说形式演绎史话,可以说在近代无人能出之右,尤其清代历史。以小说场景设置还原历史,虽说为史学家所不齿,但史学家却鲜有能把历史活灵活现的现场还原,并于优雅的文字加以描述。高阳为之,不仅文笔优雅,而且古韵悠远,堪称大家。高阳在写作第一部历史小说《李娃》的时候就曾经说过,他的兴趣本来在于历史,对历史考据等等充满了热情,而最终使他忘情于历史的,在于他无边的悲悯和想像力,他对小说细节的热爱。
高阳的清代史话小说,与其出身也不无关系。高阳原名许晏骈,出身钱塘望族。清代杭州横河桥许氏门第显赫,高阳的高祖许乃钊咸丰年间官至江苏巡抚,许乃钊兄许乃普是嘉庆庚辰榜眼,官吏部尚书。光绪初年的军机大臣许庚身,再早些入值南书房的许寿彭,都是高阳的曾叔祖。
//Sat Oct 14 2017 14:56:17 //

《[[清朝的皇帝]]》事实上只讲了三朝皇帝,既清太祖努尔哈赤后金开国称汗、清太宗皇太极称帝、清世祖福临入关。但这三个节点,恰是清一代最错综复杂,最难讲述的,也是历史上存疑最多的。高阳在叙说这三朝采用释疑写法,而非线性叙述,把一些重要事件和疑点进行解疑,而解疑更是让人啧啧,在古籍中旁征博引,引用大量的古代笔记中相关叙述和佐证,堪称学术著作风格。例如在证明董小宛既端敬皇后时,运营了大量笔墨,在许许多多的清人笔记、野史、杂著、诗文中寻找蛛丝马迹,驳斥先前一些史说。这也是高阳最难能可贵的一点,不但有史才与史学,而且有史识,对近代的重要历史人物与事件,都有自己独到的眼光和判断,成一家之言。不过,这也是这本书的晦涩难懂之处,非具有清雅之耐性,非具有古代小学之通识,莫能顺畅读下去。

相比《清朝的皇帝》,另外两本书--《乾隆韵事》和《慈禧全传》--可读性就强的多了,线性叙述,故事性强。只可惜《乾隆韵事》一本书百分之六十都在说乾隆他爹--雍正,剩余部分说的时乾隆出身及其与亲生母亲团聚,而乾隆之事所说无多。//Sat Oct 17 2017 14:56:17 //
"""

<<<
洪承畴的投降与明朝之失天下无甚关系,但对清朝之得天下,关系甚重。《清史稿》本传: 崇德七年二月壬戌,上命杀民仰、变蛟、廷臣,而送承畴盛京。上欲收承畴为用,命范文程谕降。承畴方科跣谩骂,文程徐与语,泛及今古事。梁间尘偶落,着承畴衣,承畴拂去之,文程遽归告上曰:"承畴必不死,惜其衣,况其身乎?"上自临视,解所御貂裘衣之曰:"先生得无寒乎?"承畴瞠视久,叹曰:"真命世之主也!"乃叩头请降。上大悦,即日赏赉无算,置酒陈百戏。诸将或不悦曰:"上何待承畴之重也!"上进诸将曰:"吾曹栉风沐雨数十年,将欲何为?"诸将曰:"欲得中原耳!"上笑曰:"譬诸行道,吾等皆瞽,今获一导者,吾安得不乐?"居月余,都察院参政张存仁上言:"承畴欢然幸生,宜令薙发,备任使。"五月,上御崇政殿,召承畴及诸降将、祖大寿等入见。
<<<


<<<
袁崇焕死得很惨,《石匮书》本传:

于镇抚司绑发西市,寸寸脔割之。割肉一块,京师百姓从刽子手争取生啖之。刽子手乱扑,百姓以钱争买其肉,顷刻立尽。开膛出其肠胃,百姓群起抢之,得其一节者,和烧酒生啮,血流齿颊间,犹唾地骂不已。拾得其骨者,以刀斧碎磔之。骨肉俱尽,止剩一首,传视九边。

此段记载,似有言过其实处,但必有其事,则毫无可疑。其家属在辽者,流贵州;在籍者,流福建。史书皆谓其"胤绝"。乾隆四十八年,高宗手诏查问袁崇焕后裔下落,广东巡抚尚安查奏:"袁崇焕无嗣,系伊嫡堂弟文之子入继为嗣,见有五世孙袁炳,并未出仕。"后蒙恩得授峡江县丞。
<<<
Wed Oct 18 2017 23:52:05 

<$button message="tm-close-tiddler">Close Me!</$button> 
<$transclude mode="block" tiddler=booklogsinfo/>

李渔是个好玩的人,嬉笑怒骂,活得精致而又潇洒不羁,爱美婢,喜精馔,着美服,耽戏剧。历史上只有张岱堪与媲美。



<<<
{{2017年11月14日 下午 08:52:39}}
<<<



李渔生在明亡在清,出身富家,天资聪颖,而屡试不第。这样的履历和张岱如出一辙,只不过比张岱大了十三岁。(私以为,盛世是出不了大家和名作的,只有动荡或变革的时代才会“魁星”现世,这是不是应了那句话“饱思安逸,馁思过”。)李渔初为家无恒产,不事农商的“清客”,擅戏剧创作。在当下看,李渔是个不折不扣的文艺青年。满清入关后,江浙地带惨遭战火涂炭,李渔没有像张岱那样遁世深山佛寺,为了养家糊口,李渔自组戏剧小班,自编自导,携带姬妾家眷遍历全国卖文卖艺,创作了诸如《连城璧》《肉蒲团》《十二楼》及传奇《风筝误》《怜香伴》等在当时脍炙人口的作品。“李家班“成为清初著名的戏班之一。

经过十多年江湖漂泊,李渔老矣,李渔诸姬妾既当家花旦亦老矣,已不堪舟车劳顿,风餐露宿。花甲之年的李渔回到金陵,遂把一生的戏剧创作理论和生活经验编撰成书。于是就有了其最负盛名的代表作--《闲情偶寄》。

《闲情偶寄》不仅是中国最早期的戏剧理论之书,也是一本生活美学生活美学典范,讲戏剧创作,讲女人服饰之搭配,讲美食烹饪,讲植物栽培造型。林语堂说:“《闲情偶寄》是一部讨论生活艺术的书。李渔极富创作思想,对每件东西都有新颖的议论。他所创作的器具中,有许多至今为人所用。”周作人也认为《闲情偶寄》“有与自然与人事的巧妙观察,有平明而又新颖的表现”。

<$transclude mode="block" tiddler=bookkeywords/>
"""
Weekly42:10.9~10.15
读书:《见字如面》
<div class="tc-subtitle">發表於 <$view field="modified" format="relativedate"/></div>
没有什么比信笺更能承载历史和感情了。
一封信,两个人,一个时代,两个当事人,一段历史,一份恩怨情仇。
打开一封信,还原一段历史现场,见字如面。
《见字如面》是一档读信节目所读信笺的合集,择取的信笺上到秦国一位士兵的家属,下到去年一位父亲写给自己自闭症孩子的未来信。有遗书,有家书,有情书,有公开信,每一封信都有浓的化不开的承载。正如前沿所示“入选的信件一定要值得在今天被更多人看到。这个表述很主观,细化一些的标准是,它必须能为今天的人提供对历史、社会、人情和人性的认知价值,能激发大家的独立思考。”

待续
[[郁达夫写给沈从文的信|http://telegra.ph/%E9%83%81%E8%BE%BE%E5%A4%AB%E5%86%99%E7%BB%99%E5%8C%97%E6%BC%82%E6%B2%88%E4%BB%8E%E6%96%87%E7%9A%84%E4%BF%A1-10-23]]
无论如何掩盖,历史总归要不被人遗忘,要不被人揭露真相。

关于抗日战争,国共两党的奉献如今并非为敏感话题,大陆很多学者普遍的认为蒋介石及其领导下的国民党对抗日战争做出了决定性的贡献,这一点是永远也不可磨灭的。
关于战后问题,关于战后日本问题,我至今很难理解为什么共产党会做出那样最终的决定,而后又在大陆改革开放时候接受日本很多援助和贷款。
在Jay Taylor的《蒋介石与现代中国的奋斗》中我找出关于战后问题的本来样子:

<<<

(时间:开罗会议时)在这次严肃的长谈中,两人(蒋介石与罗斯福)似乎对一切事情都有相同共识。蒋赞同罗对于日本未来政府形态应由日本人民决定的看法。他提议,日本对中国的赔偿可以用工业和战争机械设备、商船及其他实体财产支付。他觉得驻日盟国占领军应由美国领衔;但罗坚持应该由中国国军来主导。蒋也同意罗对“俄国共产主义之政策”,强调莫斯科不可信赖,但又说在对苏关系上,将听从罗斯福的指挥。罗斯福强力支持东北和台湾回归中国。两人早先在通信时就有共识,对战后世界有一致的看法,尤其认为必须终结殖民主义。此外,蒋还提到两人讨论了苏联参与对日战争的问题以及新疆的局势。蒋对这次会谈的结论是“非常满意”。罗斯福“以老友待我”。(Chiang Diaries, Hoover, November 23, 1943, box 43, folder 10; FRUS(1943): The Conferences, pp.322-325.)
<<<

战后最初的决定与最终的结果如此天壤之别。历史不能假设,如果可以假设是最初的样子,当今东亚世界不知道少了多少纷争和纠葛。

在开罗会议时另一个有趣的现象时第一夫人(宋美龄)艳压群雄。

<<imageSlider [[http://i65.tinypic.com/34j4qpl.jpg]]
"//宋美龄美国国会演讲//">>

<<<
“1943年11月21日(开罗会议),三大巨头、盟国联合参谋长团以及大小幕僚的第一次全体会议当中,蒋宋美龄是唯一的女性。英国参谋总长阿兰布洛奇(Lord Alanbrooke)元帅说,当她在窄裙内挪腿换个姿势时,他好像听到年轻军官们发出一股低声的叹息。相形之下,阿兰布洛奇形容她的丈夫,这位中国领袖像“松貂和雪貂的混种”。(参见:Barbara Tuchman(杜希曼),Sand against the Wind: Stilwell and the American Experience in China (London: Macmillan, 1971), p.402.)

罗斯福总统住在美国大使官邸。当天夜里,罗在大使官邸设宴招待蒋氏夫妇。霍浦金斯是唯一的陪宾。蒋夫人脚登露趾鞋、身穿黑色丝绸旗袍,和去年叼扰甚久的老朋友罗斯福打招呼。双方都有译员坐在边上,但美龄不时修正她先生译员的翻译。蒋原本就视罗斯福是“超乎常人”的大政治家,经过一整夜坦诚长谈后,对罗更增添敬意。相形之下,蒋的尖噪子以及在权贵宾客前的拘谨、礼貌,却没让意气风发、随意的美国东道主产生太多的友谊感。(Ray Huang(黄仁宇),Chiang Kai-shek and His Diary as a Historical Resource (Armonk, N.Y.: M.E.Sharpe, 1996), part 2, p.53.)
<<<

<iframe width="560" height="315" src="https://www.youtube.com/embed/K1UEz9us8zY" frameborder="0" allowfullscreen></iframe>

宋美龄从来是不缺聚光灯的,或者说是自带光环。宋对中国之贡献可以说罄竹难书,无论是在抗战时期,在美国国会演讲,用个人魅力影响国际关系,还是在在内战时期,用冷静和理智处理西安事变,近代中国历史都深深的烙印着宋的影子。

<$button message="tm-close-tiddler">Close Me!</$button> 
齐如山,民国一代大家。中国剧作家、戏剧理论家、历史学家。还可以加一个民俗学家。

齐如山出身门第,世居北京。齐如山医生成就,总结起来有三点:一、对当时留法学生之帮助,成立“留法勤工俭学会”;二、促进京剧之发展,为梅兰芳、杨小楼、尚小云编排了诸多优秀京剧曲目,并组织梅兰芳美国、日本以及俄罗斯等国的演出访问;成立北平国剧学会、并成立了国剧传习所等民间组织;将京剧称为“国剧”。(这有点像李渔,见[[闲情偶寄]])三、日本占领时期的铮铮气节。

<<imageSlider [[https://upload.wikimedia.org/wikipedia/commons/thumb/1/13/Qi_Rushan_and_others.jpg/440px-Qi_Rushan_and_others.jpg
]]
"//1923年,自左至右:罗瘿公、程砚秋、吴富琴、齐如山、许伯明。//">>

在日本侵华期间,大隐于市的齐如山写了不少书,其中就包括最近几天读的《[[中国馔馐谭]]》和晚年在台湾写就的《[[齐如山回忆录-清宫史话]]》。

在[[2017年12月02日 下午 03:24:28]]中搞不明白的,关于日本战后赔款问题,经过查找了一些资料,基本有些眉目了:

# 二战后,大国基本上都放弃了对日战争索赔,如俄罗斯等(除了一些小国,如新加坡等,战后的日本一穷二白,页无力赔偿,日本天皇由此还把自己的游艇赔给了新加坡);
# 日本战后也并非没有向中国赔款,而是用一些重型机械等方式抵赔(日伪满洲国上的资产被俄罗斯占去);
# 由于战后国共两党之争,日本在中间做平衡游戏,由此得利。为了争取一些国际空间,由此放弃对日索赔;
# 日本从战争的颓废中复苏后,对中国大陆进行了大量的援助或无息贷款,数目超过抗日战争时期美国对华援助的10倍还多。 
!This is an encrypted Tiddler
这本书不教技法,更多是梳理和盘点,大多都为耳熟能详之物,所以本书大部分章节皆可掠过。书尾部道有一节菜名考据内容蛮有趣。 如对“鸡蛋炒饭”为什么叫“炒木须饭”,作者调查研究后弄清楚是和明朝太监们有关。明朝太监由于忌讳“鸡”和“蛋”,而明朝一代,太监又重权在握,所以民间为了不惹“阉党”,就把凡和“鸡”和“蛋”有关的菜都想办法避之。例如鸡蛋改名曰白果,鸭蛋改名曰青果,熏鸡改名曰熏牲口,卤鸡改名曰卤牲口,酱鸡改名曰酱牲口,蛋花改名曰甩果,炸鸡改名曰炸八块,炒鸡蛋改名曰摊黄菜,熘鸡蛋改名曰熘黄菜,卧鸡蛋改名曰卧果儿,炒鸡蛋改名曰炸荷包。肉丝炒鸡蛋改名曰炒木须肉,鸡蛋炒饭改名曰炒木须饭,鸡蛋羹改名曰木须汤,大片鸡蛋羹改名曰果儿汤,讹为逛儿汤。现今这些名字大部分仍在北京、乃至北方地区仍在使用。

比之李渔的《[[闲情偶寄]]》,虽然后者不是美饌民俗专著,但李渔的笔墨更有趣一些。而李渔和袁枚的[[随园食单]]同阅,后者则更胜一筹,专著美饌精馐,而又意在食外绵绵流长,多了一分闲,二分情、三分雅。
“津逮”的本意是由渡口坐船到达目的地,后用来比喻为学的门径。所以“文言津逮”也就是“文言入门”。

《文言津逮》是“大家小书”。之所以说大家,著者为张中行老先生,吕叔湘先生(中国语言学家,近代汉语学的拓荒者和奠基人。)作序并起的书名,启功先生写的书名,集三大家于一声。张中行,中国著名学者、哲学家,散文家,与季羡林、金克木有“燕园三老”之称,前妻杨沫。所谓“小书”者,只是就其篇幅而言,篇幅显得小一些罢了。用了两天上下班路上实践便看完了。

正如书名为“津逮”,“这里边是讲怎样学习文言的文章,一共十篇,外加一篇附录讲工具书”。虽然小小一本书之于浩瀚文言世界仅为沧海之滴水,而张先生通过多年的任教经验,给有志于了解文言的新人指出了个人“端倪”。一,指出了学习文言文的都有哪些“坑”,如文义之间的古今异形、古字通假、古今同字异声等;二,告诉了一些进入文言世界的一些门径,学习文言文的方法,以及读什么和怎么读。

在如何学习文言的方法问题上,多年来一直有两种意见之争:一种意见是偏重多读,以“熟”为基础求会;另一种意见是偏重摸清规律,以“知”为基础求会。或者说,一条路是以多读为主,以文言的词汇语法知识为辅;另一条路是以文言的词汇语法知识为纲,以纲统阅读的目。张先生主张走前一条路,就是走以多读为基础求会求通的“老路”,因为“这老路虽然要费相当多的时间和精力,却是有保证的通路”。

诚如我之前思考的[[读文言文有什么用?]],现在我们每天使用中文,学习中文,不能与文言文割裂而用之,要知道它的传承性,要知道它的来龙去脉,要知道我们是不是说出来的字、词是有一定的故事和源远的。这也是为什么这些年读书目录里,我总少不了加一些文言基础或者古代文学类读物。

基于此,索性把书名也“窃”了去,把之前看的古代文学书目集结为“[[文言津逮系列]]”。<<tag Album>>
上接:<$details summary="读历史读的是什么?">

{{2017年12月07日 下午 06:49:01}}
</$details>


“历史的教训就是从来不吸取教训”!

“年年岁岁花相似,岁岁年年人不同”

现代历史学家提出“历史是一个螺旋上升”的存在状态。其实在我看来,历史只是一个纵向的时间轴而已,没有什么螺旋,也没有所谓的上升。人类不断的重复着历史上的悲哀和错误,也不断在历史的悲哀中忘记历史的悲哀。也许这就是人们想从历史中找寻的,一种不断修正悲哀的领导妙药。之所谓也没有什么上升,因为人类根本不知道人类的未来走向,不知道分享,何来上升的位置判断?也许是倒退,为什么这么说?也许人类慢慢的走向了毁灭,走到了终点,就像“2012”一样,人类的历史发展过程中也不是没有这种迹象存在,这样的毁灭难道不是一种倒退或者是一种轮回的圆形存在轨迹吗?
''维摩诘'',是释迦摩尼佛时代的一位信徒,并未出家,以居士身份修行,终成大果,成为佛教在家修行的典范。

''《维摩诘经》'',中国禅宗四部宗义之一(《楞伽经》、《金刚经》、《维摩经》和《六祖坛经》),法师鸠摩罗什带领汉传弟子所译,经文主要叙述维摩诘菩萨(居士)与诸位菩萨和声闻罗汉满智慧和譬喻的问答,它以辩论的方式来详细说明大乘佛教与小乘佛教在教义上的分别,集中讨论[[不二论]]。在禅宗和净土宗中,维摩经有重要的地位,它强调唯心净土:

<<<
将分别心与执著心放下,就是做为佛教徒的基础了。也就是禅宗的:不思善、不思恶、而将心念专注于当下,而烦恼即是菩提的种子,只要去除瞋心、则当下即是佛国净土。
<<<

《维摩诘经》的“[[不二法门|不二论]]”思想,深深影响了禅宗的“不二”思想。即所谓的`“动静不二,真妄不二,维摩明一切法皆入不二门。”`

《维摩诘经》中文版本,是在中国历史上动荡的南北 朝时期,由西域请来的胡僧鸠摩罗什所翻译的。最初是前秦的苻坚发兵去请鸠摩罗什,但鸠摩罗什还没走到中国,苻坚的前秦就亡国了。后来就由姚兴在今天陕西地区所建的后秦国,出兵请到鸠摩罗什来中原。为了请来这一位学者,发兵几十万,灭了扣住鸠摩罗什的三个西域小国家,大概也只有中国南北朝这些野蛮的皇帝们才做得出来。佛法路也是血!

《维摩诘经》中文版不仅佛理通俗易懂,故事生动,文字也很优美,传入中国后对汉文化、文学影响源远流长(佛教极大的丰富了汉文化)。南北朝时期的文人学士最爱清谈与《维摩经》;唐代文人的唐诗,也几乎无不受《维摩诘经》的影响;宋代以后的士子多好禅学。后世的昆剧《天女散花》就是取材《维摩经》。

维摩诘是在家修佛的典范。星云大师说:我将每一个人都当作维摩居士。王维等唐代诗人皆已维摩居士为榜样,而国画大师张大千甚至将其住所命名为《维摩精舍》。由此,我把有关佛教的读书内容集合在<<tag 维摩诘>>之下,也算是一种学习勉励修行吧,希望能成为''佛门津逮''(见[[文言津逮系列]]之“津逮”)。
历史就是一串糖葫芦,一条时间轴串起事件和人物,内中酸甜苦辣咸,只有当事人自知。

读近代史,其中跳不过去的一人物就是李鸿章 <<ref "[1]">>。正如此书作者梁启超 <<ref "[2]">> 序中所言:

> 四十年来,中国大事,几无一不与李鸿章有关系。故为李鸿章作传,不可不以作近世史之笔力行之。著者于时局稍有所见,不敢隐讳,意不在古人,在来者也。

<<imageSlider  [[https://i.loli.net/2018/10/09/5bbc4e7b5e871.jpg]]    "//两江总督任内的李鸿章//">>

李鸿章无论是当世还是时下,都是一个争议性人物。而梁启超笔下的李鸿章,不可不读。二位年龄相差50岁,前者为晚清重臣,力挽飘摇欲坠的清朝于狂澜,举洋务以图兴;后者为晚清公知,抛头颅洒热血,组织“公车上书”政治运动反对李鸿章签订马关条约,力图维新救亡,变法图兴。两位的目标一直,图存图兴;两位的方法相同,洋务和维新;而两位的发力方向却相反,一人扶,一人推。如今,曾经的“敌人”评价曾经的“对手”,岂不精彩。

<<imageSlider  [[https://i.loli.net/2018/10/09/5bbc4ec742fc9.jpg]]    "//梁启超//">>

---
@@color:gray;<i class="fa fa  fa-wikipedia-w fa-2x fa-pull-left "></i>@@ 
<<footnotes "[1]" "晚清两朝重臣,历经太平天国、捻军、洋务运动、中法战争、甲午战争、义和团运动。与曾国藩、左宗棠、张之洞并称“晚清四大名臣”。">>

<<footnotes "[2]" "梁启超师从康有为,就李鸿章签马关条约发起“公车上书”(中国群众性政治运动的开端),力图维新救亡,后于与康进行戊戌变法,事败后出逃日本,在海外推动君主立宪。倡导新文化运动,支持五四运动。">>
昨晚偶然看到高晓松的一档节目系列竟然是[[闲情偶寄]],可能高想取这四个字的本意--- ---闲适怡情偶字片语以寄情吧。读李渔之《闲情偶寄》已接近尾声,其中速览不少章节,诸如演习部--- --- 古代戏曲的剧本、声韵和曲子等、居室部--- --- 室内陈设布置、声荣部--- --- 女子穿衣打扮及饮馔部,这几部分因时时移景迁,读之意义不大。而词曲部--- --- 戏曲台词剧本声律韵味、种植部、颐养部,则趣味良多,可能古今声色男女都一样吧。

速览部分些许摘要:

<<<
妇人之衣,不贵精而贵洁,不贵丽而贵雅,不贵与家相称,而贵与貌相宜。
<<<

<<<
声音之道,丝不如竹,竹不如肉,为其渐近自然。吾谓饮食之道,脍不如肉,肉不如蔬,亦以其渐近自然也。
<<<

李渔自喻为“香国平章”<<ref  "[1]">>,嗜花如命:

<<<
予有四命,各司一时:春以水仙、兰花为命,夏以莲为命,秋以秋海棠为命,冬以蜡梅为命。无此四花,是无命也;一季缺予一花,是夺予一季之命也。
<<<
饭可以不吃,而花不可不看,真乃花痴是也:

<<<
记丙午之春,先以度岁无资,衣囊质尽,迨水仙开时,则为强弩之末,索一钱不得矣。欲购无资,家人曰:“请已之。一年不看此花,亦非怪事。”予曰:“汝欲夺吾命乎?宁短一岁之寿,勿减一岁之花。且予自他乡冒雪而归,就水仙也,不看水仙,是何异于不返金陵,仍在他乡卒岁乎?”家人不能止,听予质簪珥购之。予之钟爱此花,非痂癖也。
<<<

李渔写花,以花比人,人有性,花有灵,多品评其性情品格,偶尔提及养植之道。

---
@@color:gray;<i class="fa fa  fa-wikipedia-w fa-2x fa-pull-left "></i>@@ <<footnotes  "[1]" "平章:官名,常有以平章代指宰相。此处李渔自诩为花卉中有权威的品评者。">>

梁启超在书的开篇就为“评李鸿章”定了基调:

<<<
吾敬李鸿章之才,吾惜李鸿章之识,吾悲李鸿章之遇。
<<<
而非“腹黑”到底,足见梁气度之大。相反某些方面还为李鸿章进行了辩护:

<<<
天下惟庸人无咎无誉。举天下人而恶之,斯可谓非常之奸雄矣乎。举天下人而誉之,斯可谓非常之豪杰矣乎。虽然,天下人云者,常人居其千百,而非常人不得其一,以常人而论非常人,乌见其可?故誉满天下,未必不为乡愿;谤满天下,未必不为伟人。
<<<

这也不是说梁启超就没有了立场,作为与师力倡维新变法的先驱,与李鸿章的立场是非常鲜明的:


<<<
史家之论霍光,惜其不学无术。吾以为李鸿章所以不能为非常之英雄者,亦坐此四字而已。李鸿章不识国民之原理,不通世界之大势,不知政治之本原,当此十九世纪竞争进化之世,而惟弥缝补苴,偷一时之安,不务扩养国民实力,置其国于威德完盛之域,而仅摭拾泰西皮毛,汲流忘源,遂乃自足,要挟小智小术,欲与地球著名之大政治家相角,让其大者,而争其小者,非不尽瘁,庸有济乎?
<<<


梁启超认为李鸿章充其量是一位权臣或者能臣,尽管李也推行洋务运动,创办实业,然这一切都是”弥缝补苴,偷一时之安“。没有从根本上变革清朝之积弊,根本是什么?是梁启超所说的”政治之本原“----国家政治制度。而身在其位,谋其政的李鸿章,怎么可能从内部改革几千年的帝王制度那?
在没有把《[[李鸿章传]]》看完前,先把李鸿章的资料补了一一下。这位清末重臣一生共签下30多个条约,又大多为不平等条约。生逢一朝末世,成也“颓世”,毁也“颓势”。在颓世之中崛起,才华尽显;在颓势之时激流荡舸,忍辱负重。然以其一人之力岂能扶将倾之大厦?正像李鸿章对自己一生的总结:

<<<
“我办了一辈子的事,练兵也,海军也,都是纸糊的老虎,何尝能实在放手办理,不过勉强涂饰,虚有其表,不揭破,犹可敷衍一时。如一间破屋,由裱糊匠东补西贴,居然成一间净室,虽明知为纸片糊裱,然究竟决不定里面是何等材料。即有小小风雨,打成几个窟笼,随时补葺,亦可支吾对付。乃必欲爽手扯破,又未预备何种修葺材料,何种改造方式,自然真相破露,不可收拾,但裱糊匠又何术能负其责?” <<footnote "[1]" "吴永 《庚子西狩丛谈》 卷四">>
<<<

<<imageSlider  [[https://d.pr/FREE/GUCqI0+]]    "//李鸿章在《辛丑条约》上的签名花押//">> <<footnote "[2]" "在条约上签字的时候,李鸿章故意把自己的名字连在一起,变得难以辨认,使其看起来像一个“肃”字.">>

梁启超在[[李鸿章传]]中认为李''不学无术'',所以成为不了当世英雄。在彼强弩之末朝运下,身为专制政权下的才臣或权臣,命运无非两种:一、逆势而上,鞠躬尽瘁;二、大势归隐,呜呼哀哉。如若为弄臣或奸臣,可能命运就不一样了,要不作福作威,要不趁火打劫。李选择了前者,尽管身背三十个不公平条约签订者的骂名,可换来了清一代更多的苟延残喘。

@@.note
''Keywords:'' {{!!description}}
@@

<<<
“总是开天辟地的圣人多事,不该生女子设钱财,把人限到这地步”。
<<<

这是李渔小说《肉蒲团》得最后一句话。未央生一生嗜隐,愿作一位犹如西门庆,枕花籍柳,偷香窃玉,又如出家人一样常坐蒲团,只不过这个蒲团希望是肉坐的。李渔小说也跳不开古代小说娱人教事的窠臼,未央生淫人妻女,妻女亦被人淫。末了,终大彻大悟,遁入空门,真正坐了蒲团。李渔的《肉蒲团》被屡遭禁毁,虽为说事教人,但书中充满了人欲肉糜。而集李渔一生经验和生活智慧的《[[闲情偶寄]]》一半人文艺术--- --- 戏剧、剧本创作,一半为生活艺术--- --- 吃穿住行乐,尤其后半部分充满了胭脂气--- ---女子的姿色修容冶服习记技--- --- 和荷尔蒙--- --- 男人的行乐节色养生调饮。李渔常年身处梨园之春 <<footnote "[1]" "梨园,戏班,戏院。">>,对女子姿色仪容鉴赏自然颇有心得;而对男女敦伦之事,采阴补阳御女之术,如卖油郎,但手熟尔。就如李渔之言“孔子云:“素富贵,行乎富贵。”人处得为之地,不买一二姬妾自娱,是素富贵而行乎贫贱矣。”鲁迅在《中国小说史略》第十九篇《明人之小说》中也有是评价:“惟《肉蒲团》意想颇似李渔,较为出类而已。”

什么女人最美?

<<<
媚态之在人身,犹火之有焰,灯之有光,珠贝金银之有宝色,是无形之物,非有形之物也。惟其是物而非物,无形似有形,是以名为尤物。尤物 <<footnote "[2]" "是物而非物,无形似有形之态度">>者,怪物也,不可解说之事也。凡女子,一见即令人思,思而不能自已,遂至舍命以图,与生为难者,皆怪物也,皆不可解说之事也。
<<<

这是李渔眼中的尤物,最美。用今天的话说,有气质的女人最美!

李渔是个享乐派,鼓吹“行乐第一”“止忧第二”,人生路,且行且乐:

<<<
"伤哉!造物生人一场,为时不满百岁.......即使三万六千日尽是追欢取乐时,亦非无限光阴,终有报罢之日。"
<<<

什么时极乐?男女房事也!

李渔的房中术,可谓练达,堪称御女之术,“凡借女色养身而反受其害者,皆是男为女用,反地为天者耳。倒持干戈,授人以柄,是被戮之人之过,与杀人者何尤?”针对御女行乐老李提出了“御女六不要”:

首先,男女行乐不要“干柴”与“烈火”,要女方得有所心思,为什么那?

<<<
使男子至乐,而为妇人者尚有他事萦心,则其为乐也,可无过情之虑。使男妇并处极乐之境,其为地也,又无一人一物搅挫其欢,此危道也。
<<<

其次,难过的时候也要节制。“然忧中行乐,较之平时,其耗精损神也加倍。”

再者,饥、寒、醉、饱四时,皆非取乐之候。

<<<
然使情不能禁,必欲遂之,则寒可为也,饥不可为也;醉可为也,饱不可为也。以寒之为苦在外,饥之为苦在中,醉有酒力之可凭,饱无轻身之足据。总之,交媾者,战也,枵腹者不可使战;并处者,眠也,果腹者不可与眠。饥不在肠而饱不在腹,是为行乐之时矣。
<<<

第四,劳累刚过戒行乐。

第五,节新婚乍御之欲。(这一点最有意思)

<<<
新婚燕尔,不必定在初娶,凡妇人未经御而乍御者,即是新婚。无论是妻是妾,是婢是妓,其为燕尔之情则一也。乐莫乐于新相知,但观此一夕之为欢,可抵寻常之数夕,即知此一夕之所耗,亦可抵寻常之数夕。能保此夕不受燕尔之伤,始可以道新婚之乐。不则开荒辟昧,既以身任奇劳,献媚要功,又复躬承异瘁。终身不二色者,何难作背城一战;后宫多嬖侍者,岂能为不败孤军?危哉!危哉!当筹所以善此矣。善此当用何法?曰:静之以心。虽曰燕尔新婚,只当行其故事。“说大人,则藐之”,御新人,则旧之。仍以寻常女子相视,而不致大动其心。过此一夕二夕之后,反以新人视之,则可谓驾驭有方,而张弛合道者矣。
<<<
第六,节隆冬盛暑之欲。
李渔说冬天和夏天时男人最难控制的季节,因为冬天裸抱取暖,夏天袒裼裸裎,所以这两个季节就不要太放纵了,要有守势,“能守则日与周旋而神旺,无守则略经点缀而魂摇。”有了守势,慢慢就会成为自然,达到了炉火纯青的地步。“无时不堪昵玉,有暇即可怜香。”

李渔,真性情人也!
今天看到推友许晖大作《这个字原来是这个意思》,挺有意思的一本书。这部正是我从去年就开始啃的《[[说文解字]]》的精华摘录版吗?看起来许晖是个有心人,点滴成集,集羽沉舟。《说文》才看了三分之一,以后也把发现的好玩字记录下来,以飨!
<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201712]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>

这应该是2017年最后一条日志了。约定成俗的情景下,这条日志是盘点和展望。

先说读书。

2017年读书数量上略低于上一年([[2016读书目录]]),[[2017年读书的数目|2017读书目录]]是100本,很完整的一个数字啊(见 <<tag 已读>>,有些速读本无需进入 [[Library]]的<<tag Book>>标签,如一些古代人文笔记等)。这100本,有一些还没有读完(见 <<tag 未读>>、 <<tag 想读>>),需要跨年,如《[[说文解字]]》、《[[维摩诘的花雨满天]]》、《洛阳伽蓝记》、《史记》以及《古文鉴赏辞典》,这几本快不了,不能囫囵吞枣,需要慢慢的磨,2018年能读完并再续记本已经不错了。而《[[蒋介石与现代中国的奋斗]]》、《艺术的故事》、《[[思考快与慢]]》 等,也在未完成状态,这类书信息量大,也可能是在自己兴趣范围之内,需要精读,需要认真的思考和撰写读书笔记,所以也不能快,希望能在三月份结束未读状态。

2017年的读书笔记比之前更加系统和详尽了。之前的读书笔记都是基于~OneNote或~Evernote一些碎片化的记录,偶尔一些发布在微信公众号(见[[事了拂剑去|Wechat]])上,但也是随兴所至,去年一年也就写了十几篇,不该!2017年后半年开始陆续并认真的开始在~Tiddlywiki上写读书笔记了(见 <<tag Album>> [[2017's Journal]]),基本上保持一天一篇的规律进行,目前已经有70多篇了。写读书笔显而易见的有几点好处:一、读书而致用;二、知识从碎片化到系统化;三、提高文字的表达能力;四、养成了良好的习惯。这几点对我来说是显而易见的效果,例如近三年的读书书目列表中一半为文言,读文言不仅要会读,更重要的是会用--- 在一定的文言语感下学会表达(见[[读文言文有何用|2017年11月25日 上午 02:47:04]]),写读书笔记是不错的锻炼文言表达的机会(见[[文言津逮系列]])。再例如,从前年就想开始--- ---准确的说是企图--- --- 对思维逻辑以及思维框架进行一些系统的学习和实践,而通过读书笔记和平时相关知识的积累(见 [[PKM]],个人知识管理),逐渐对[[思维框架|Thought Framework]]研究有了好的开头,好的开头是成功的一半,这话不假,2018年这个系列一定会丰富起来的,相关的书目也列入了2018年的日程中(见 <<tag "Thought Framework">>)。

随着读的闲书越来越多,最近一直有一种“做一下读书规划”的紧迫感。不是读闲书无用,而是生命短暂,所以从2017年下半年开始,读书就开始相对谨慎起来了,在选书上开始舍得花时间了。这还是不够的,还需要认真的做一些思考和调整,至少做到以下这几点:

"""
一、同时读的书目不超过4本(见[[读书忌贪|2017年12月12日 上午 06:49:08]])<<tag 正读>>;
二、书目设置要科学:@@color:orange;认知(人文经典,30%)+知识更新(社科,30%)+厚重(元典,20%)+趣味(兴趣;20%)@@;
三、在书目选择上要花更多时间,先研究再读 <<tag Library>>;
四、读书时间合理分配:速度(占60%)+精读(占40%);
五、输出部分加大 <<tag Writing>>:读书笔记(占60%)+写作(占40%)。
"""
<<imageSlider  [[https://cl.ly/of6P/Snipaste_2017-12-31_22-41-01.png]]    "书目占比分配">>

这四点需要在读书的过程中再进行微调,以观后效。
//2017年12月30日 下午 01:41:16//

再说其它。

其它,无非工作、生活以及其它。工作,准确的说是事业,一句而概之:同志需要努力。不过事业之与读书,都是长期性工程,没有什么捷径,二者相辅相成。当然也有暴发户和运气存在,不过这终究长不了。而运气之说是存在的,运气即审时度势,这个度和势是否能抓住,还是需要读书的积累。所以,万般皆下品惟有读书高。

生活。生活是两种状态,一种是生,一种是活。每日为了工作为之生,超越工作为之活,生易,活难。<<tag Life>> 活,又是两个阶段,为己,不为己。为己,活的自在,活出一种深度;不为己,活的精彩,活出一种宽度。希望自己能在未来的日子里少点为己,多点不为己。

//2017年12月30日 下午 01:41:16 //
"""
''18-01-1 新年新气象,不如看掌故''
1.《掌故》第一集

''18-01-2 新年第二天''
2. 《掌故》第二集

''18-01-10 零下10度''
3. 《[[图说区块链]]》

''18-01-18 离春节整一个月''
4. 《[[原则]]》 瑞·达利欧

''18-01-28 回家路上人行忙''
5. [[《文学的群星闪耀时》(国内篇)|文学的群星闪耀时-国内篇]]

''18-01-30 家人齐聚偷闲看书''
6. 《知乎1小时》系列

''18-02-7 立春了''
7、[[《文学的群星闪耀时》(国外篇)|文学的群星闪耀时-国外篇]]

''18-02-14 明天就是大年三十了''
8. 《[[我书架上的神明]]》 @@color:red;^^★^^ @@
9.~~ [[越读者]]~~

''18-02-18 初三,无事,突然想再看看红楼梦''
10. [[红楼梦]]脂评汇校本 

''18-03-02 元宵节,外面鞭炮声很闹腾''
11.《 [[王氏之死]] 》

''18-03-11 万物复苏萌动''
12. 《[[子弹笔记术]]》   日·杉野干人 著

''18-03-12 屋里的玉兰花已经开了''
13. 《[[梁遇春散文选集]]》 民国 · 梁遇春  @@color:red;^^★^^ @@

''18-03-16 今天补了去年冬天欠的雪''
14. 《[[书卷多情似故人]]》 大师经典小品之一

''18-03-24 气温一下飙到20+''
15. 《[[民风野趣幽然醉]]》 大师经典小品之二
16.  《[[梦中的欢快葬礼和十二个异乡故事]]》 加西亚·马尔克

''18-03-30 职业阅读''
17. 《[[阅读心理学]]》

''18-03-31 四分之一就要结束了''
18. 《[[旧事新知风雨声]]》大师经典小品之三
19. 《圣经》中英文版,学点英文

''18-04-04 清明假期''
20. 《[[雅记清词写流韵]]》大师经典小品之四

''18-04-09 季节交替 开始牙疼'' 
21. 《[[清代学术概论]]》原典系列二   <<footnote "[1]"系列一见[[2017读书目录]]">>
22. 《[[中国哲学十讲]]》原典系列三
23. 《[[中国小说史略]]》原典系列四

''18-04-10 续读前篇''
24.  《[[东坡志林]]》

''18-04-20 雨霏霏 雾蒙蒙 病怏怏''
25. 《[[艽野尘梦]]》 陈渠珍

''18-05-01 劳动节不劳动''
26. 《[[茨威格文集]]》(全3卷) @@color:red;^^★^^ @@

''18-05-12 初夏周末看暴政''
27. 《[[君主论]]》

''18-05-12 周日 母亲节想妈了''
28. 东方历史评论(第4辑):变革的节奏
29. 《[[历代文言小故事]]》先秦两汉篇  @@color:red;^^★^^ @@

''18-05-13 这一周怎么过?''
30. [[东北游记]] 纪实文学

''18-05-18 新项目筹备中 有点迷茫''
31. 《[[英语词源趣谈]]》

''18-05-25 最近很郁闷 读书也少了''
32. 《[[一个村庄里的中国]]》

''18-05-25 这两本书都是书的书,作为工具书用吧''
33. 《[[我读]]》
34. 《[[私人阅读史]]》 

''18-05-29 猴子掰棒子''
35. 《[[民国清流:那些远去的大师们]]》@@color:red;^^★^^ @@

''18-06-01 进入下半场''
36. 《[[黄金时代:小人物在大时代的出境和选择]]》

''18-06-010 最近时间浪费的太多太多''
37. 《[[怎样学古文二十五讲]]》

''18-06-20 闲来无多''
38. 《[[张贤亮文集]]》
39. 《[[男人的一半是女人]]》

''18-06-28 德国战车无缘角逐世界杯了''
40. 《[[八十年代访谈录]]》
41. 《[[我在现场:性社会学田野调查笔记]]》

''18-07-01 今年开始进入下半场''
42. 《[[这个字原来是这个意思]]》

''18-07-04 上火 牙疼 痛苦''
43. 《[[胡适谈读书与做人]]》

''18-07-09 心不定''
44. 《[[侠隐]]》

''18-07-12 我不知道在干嘛''
45. 《[[不失者]]》

''18-07-19 这周没怎么看书''
46. 《[[莎士比亚书店]]》

''18-07-21 怀疑人生看人生''
47. 《[[人生]]》@@color:red;^^★^^ @@

''18-07-23 大暑过后桑拿天''
48. 《[[民国清流:大师们的战国时代]]》 @@color:red;^^★^^ @@

''18-07-27 牙疼的要命''
49-52. [[《天涯》(人文精品全四册)|2018年09月18日周二下午09:39:26]]
53.《[[民国清流:大师们的中兴时代]]》

''18-08-03 小痒折磨我了一周''
54. 《[[琅嬛文集]]》@@color:red;^^★^^ @@

''18-08-13 已入秋''
55. 《[[鱼·翅与花椒]]》 (译文纪实)

''18-08-18 七夕''
56.《[[东京一年]]》
57.《[[民国清流:大师们的抗战时代]]》

''18-08-25 最近多了一些变化''
58.《[[博物人生]]》

''18-08-29 出差山东''
59. 《[[认识身体]]》
60.《[[齐如山回忆录-清宫史话]]》

''18-09-08 在山东有点迷茫''
61. 《[[博尔赫斯短篇小说集]]》

''18-09-13 返京''
62.《[[国士无双]]》

''18-09-20 难得清闲''
63.《[[奥斯维辛的小图书馆员]]》

''18-09-24 中秋节''
64.《[[伊斯坦布尔:面纱下的七丘之城]]》

''18-10-01 开启假期模式''
65. 《[[邻人之妻]]》@@color:red;^^★^^ @@

''18-10-02 火车上''
66. 《[[苏富比的早餐]]》

''18-10-14 出差之前''
67. 《[[牧羊少年奇幻之旅]]》@@color:red;^^★^^ @@

''18-10-26 蛰居酒店''
68. 《[[胡适谈读书与做人]]》

''18-11-18 立冬''
69. 《[[资治通鉴]]》

''18-11-21 回京''
70. 《[[小王子]]》 “每个大人都曾经是个孩子,可惜的是,很少大人记得这一点。”

''18-11-23 出差前''
71. 《[[植物名字的故事]]》

''18-11-26 心情似乎在变好''
72. 《[[偷书贼]]》

''18-12-1 18年进入倒计时了''
73. 《[[夜航船]]》 //重读//
74. 《[[说部之乱]]》

''18-12-3 又要出差了''
75. 《[[诗经]]》//重读//

''18-12-16 异地周末大学校园里''
76. 《[[且借纸遁]]》

''18-12-19 在东瀛''
77. 《[[中国哲学史大纲]]》

''18-12-20 东瀛''
78. 《[[东风与西风]]》

''18-12-23 东瀛周末''
79. 《[[植物的记忆与藏书乐]]》

''18-12-26 极寒''
80. 《[[柳林风声]]》

''18-12-29 年尾最后一本了吧''
81.《[[马关议和中之伊李问答]]》

---

[[正读]] | [[想读]] | [[2021读书目录]]  | [[2020读书目录]] |  [[2019读书目录]] | [[2017读书目录]] | [[2016读书目录]] | [[图书检索|Book List]] | [[读书日志|Reading Logs]] |[[Λ-Reading]]

//注: 标 @@color:red;^^★^^ @@ 符号的为推荐阅读书目//


<$button message="tm-close-tiddler">Close Me!</$button>
今天感觉好累!长假后的疲惫感剧增。

在下班路上总算把[[蒋介石与现代中国的奋斗]]上册看完了。看本书的战线拉的太长,前后半年有余。这就是为什么之前我说的:[[看书忌贪|2017年12月30日 下午 01:41:16]]。

虽然看了一半,但完全革新了我对蒋公的看法(看,连称呼都改了),随着看书的深入推进,由刚开始翻书时候的仅为了解,到现在的带有崇敬之情。一方面是因为蒋之性格的坚韧,一方面是蒋在乱世之局所表现出的高尚的民族大义。就以本书上半册结束处为例,蒋为了换取抗日的最后胜利,扭转中华大地抗日战争之格局,忍辱负重,甘愿在美国的淫威之下,把国军的最高军事指挥权转交给常称蒋为“花生米”先生的史迪威。当蒋接罗斯福的函电时,不仅痛哭流涕:


<<<
史迪威拿出中文译本,交给蒋;蒋默默地读完。宋子文后来告诉艾索浦,中文本比起英文本更加侮辱人。隔了一阵子,蒋放下信,把空茶杯倒过来,然后说:“我明白了。”.......等到房里只剩下大舅子,蒋才“放声痛哭”........当天晚上委员长在日记写下,下午所发生的事是“毕生上最大之耻辱”。"
<<<


而之前也同样是为了保持中国大地上抗日战争能够继续进行,在美国调停下,蒋依然放弃成见和权力,欢迎共产党的合作,但必要的前提是:

<<<

(一)美国要确保未来苏联会尊重中国在东北的主权;(二)美国要支持让英国终止她在香港及中国其他地方的 “帝国权利 ”。
<<<

这和毛及其领导的共产党完全两个做派。当蒋殚精竭虑正面与日军作战的时候,毛确在私下里巩固和发展共产党势力,以备“抗日战争后,国内必有一战”:

<<<
根据共产国际 1944 年 12 月的一份报告,直到抗战已进行七年半,中共八路军仅有 103186 人阵亡;以游击战为主的中共新四军极可能只折损数千人;但是政府军(国民党)死者逾 100 万人。换句话说,从周恩来 1940 年 1 月给共产国际的报告,至 1944 年 12 月此一报告之间——这段期间是史迪威等人坚称抗战主要由中共承担而国军并无作为的时间——中共只有约 70000 名士兵牺牲性命  。
<<<

<<<
“你必须知道所有重要学科的重要理论,并经常使用它们。要全部都用上,而不是几种,大多数人都只学过一个学科的思维模型,比如说经济学,试图用一种方法来解决所有问题。你知道谚语所说:在拿着铁锤的人看来,世界就是一颗钉子。这是处理问题的一个笨方法。”---查理·芒格
<<<

[[Thinking Models]]
整本《维摩诘经》里面最重点的重点,是告诉我们:佛法就在这个世间,我们就在自己的身心上自了。如果求他方世界依赖别人,想了生死,想成佛道,是不可能的。因为外力仅是方便法门,非究竟法门。所以究竟法门必须要自度自了。


<<<
见了就作,作了便放下,了了有何不了

慧生于觉,觉生于自在,生生本是无生
<<<
"""
''“功德智慧,以修其心”''
《维摩诘经》讲学佛修菩萨道的重心,由这八个字点出来了。修行就是修功德修智慧,也就是修心。

  要怎样修呢?靠''定慧止观'',不是靠打坐,愈打坐愈胡涂的人很多。止是止一切妄念杂想,止于至善,一念在净念上,然后要起观,参究一切的佛,这才是打坐静修的道理,不是在那里玩弄气感!学佛就两条大路,一条修福德,行一切善,去一切恶,只有了功德,才会福德;另一边修智慧。福德圆满、智慧圆满,才能成功。 

''“深入缘起,断诸邪见。”''
佛法讲缘起,一切都是缘起。小乘 <<ref "[1]">> 法门注重十二因缘的缘起,以十二因缘概括了三世因果,三世皆从无明而起。以境界上讲,无明就是起心动念,就是不知道生来死去,睡眠也是无明。在理上讲,宇宙如何开始,第一个人如何生出等等问题,不知答案,也是无明。总而言之,不论是境界上或是道理上,这两种无明都是因为没有修持,没有悟道而有。境界上的无明必须用定力来破除,真得如来大定的人昼夜长明,随时随地都在自性光明定中。但是纵然到了这样的境地,仍然没有解脱。''解脱是靠智慧,但是真正的慧还是要从定而生(慧从定生),没有定的慧是狂慧,或称作干慧。''

小乘讲因缘法都从十二因缘的无明一念而起,但无明又是怎么起的?在《楞严经》中富楼那就拿这个问题替我们问佛,因为佛既然说一切皆空,他问如果一切自性本来是空,为何忽然生出山河大地?也就是问:这世界怎么来的?第一念怎么来的?无明怎么来的?这个问题就是大小乘佛法最基本的问题。所有宗教对这个问题的处理就是挂块「谢绝参观」的牌子,因为到这里问不下去了,教你只要信就好了。但是富楼那一定要问第一念无明怎么来的,佛回答他无明是从明来的,''“觉明为咎”。无明是因觉明为咎而生,一念灵知,觉性常明,久之复生无明。''佛没有再交待,富楼那也不再问了。 

什么是定慧?
怎么修定慧?
既然“缘起性空,性空缘起”,怎么讲缘起?

---
@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "中文小乘一词译自梵语 Hīnayāna,其中 Hīna 是小、低下意思;yāna 意为乘、车子,引申为教法、或通往解脱之道;合起来是“小车子”即“低下教法”的意思。是大乘佛教对于其他佛教宗派的鄙视称呼。小乘的“乘”字在现代标准汉语中读作chéng(音同“成”)。依古音亦读作shèng(音同“剩”)。因为“小乘”包含贬义,1950年召开的世界佛教徒联谊会达成明确共识,无论在西方或东方对南传佛教的正确称呼应当一律使用上座部佛教而非“小乘”。 ">>

接[[昨天|2018年01月09日 周二下午 05:32:52]]:

''定慧'',禅定与智慧。摄乱意为定,观照事理为慧。又名止观。法华经序品曰:「佛子定慧具足。」无量寿经上曰:「如来定慧,究畅无极。」六波罗蜜多经八曰:「佛果大菩萨,定慧为明本。」六祖坛经曰:「师示众云:善知识!我此法门,以定慧为本。」

如果按照[[思考快与慢]]的[[2个系统论|2017年12月26日 下午 09:28:32]]来看,由定入慧的过程就是从系统1--- ---快思考到系统2--- --- 慢思考的转变。从思维科学的角度来解释定慧的法门,也就是怎么修持定慧,似乎更容易一些。

科技就像流感,一波波,而又传染性极高。去你伊始的AI(人工智能)和区块链可谓炙手可热,作为文科出身的互联网工作者不可不补这两方面的知识。另一方面,最近对`科技哲学`十分感兴趣,想深入研究一下,那就先从区块链入手吧。

[[图说区块链]]这本书算科谱性读物,基本上能把问题说明白了。至于图说,图完全是装饰,是噱头(我就是受图解二字的影响才读的),很不厚道。

''[[什么是区块链]]?''
许多年以后,重读加西亚·马尔克斯,我才意识到高中时期所读的《百年孤独》,纯粹是被流行的裹挟和对“百年孤独”名字的高冷的崇拜而一知半解。

上面这句话我借用了加西亚·马尔克斯作品《百年孤独》的开头句式结构:


<<<
许多年之后,面对行刑队,雷奥良诺·布恩地亚上校将回想起,父亲带他去见识冰块的那个遥远的下午。
<<<

此一开头已经成为经典或教科书式的小说开头,许多人趋之若鹜,东施效颦。就连同为诺贝尔文学奖获得者的莫言,也承认受加西亚·马尔克斯写作风格的影响。而我对国外文学的了解,一直停留在概念的程度--- --- 所读不多。这可能是我的性格造成的,对一些文人或者公知动辄皆引用加缪、缪尔·贝克特、尤金·尤涅斯库、胡安·鲁尔弗、略萨、加西亚·马尔克斯、普鲁斯特等现代派文人的名字或者作品的现象的反感,就如一些人说话总夹杂一些英文单词让人反胃,所以对国外文学从来没有系统而深入的阅读。而私下总有按捺不住想阅读的冲动。
民国时期是大师辈出的时代。不知是时代成就了大师,还是大师创造了时代,这种时代不常有,大师亦不常有。而王国维之于民国大师,可谓大师中的大师。

王国维生在清末,逝在民国,精通国学 --- --- 中国古典美学和古代文学的集大成者,又深谙西学 --- --- 精通英文、德文、日文,在那个继往开来的时代,王国维自然就成了新旧学的桥梁,对旧学的继承和改造,对新学的开拓和创立,被誉为“中国近三百年来学术的结束人,最近八十年来学术的开创者”,近代中国最后一位美学和文学思想家。

王国维的这本“大家小书”--《一个人的书房》,是其学术随笔,分述、讲、品、写、作和抒,小文章大思想,涵盖范围很广,从秦哲学讲到西方哲学,从王国维的诗词到教学心得,包括其读书体会和闲情逸趣小品。
4. ''陈家琪''  同济大学人文学院哲学系教授

''研究领域:''现代西方哲学

''推荐书目:''

# 《法哲学原理》,[德]黑格尔著,范扬、张企泰译,商务印书馆,1961[1979]
#《回忆录:1848年法国革命》,[法]托克维尔著,周炽湛、曾晓阳译,上海人民,2005(《托克维尔回忆录》,董果良译,商务印书馆,2004)
#《旧制度与大革命》,[法]托克维尔著,冯棠译,商务印书馆,1992
#《中国历代政治得失》,钱穆著,北京三联,2002

''推荐理由:''

专业和职业所需反复研读。《回忆录》就不多说了,仅就那种把理论思索转变为一种叙事结构的体裁就足以使人陶醉;这是一种我心仪已久、并多次试验的方式。《中国历代政治得失》里面有些非常精彩的论述,这种精彩不在历数中国历代政治变迁的过程,而在历数中所透露出的那种悲凉与无奈。

5. ''陈克艰 ''上海社会科学院图书馆文献整理部研究员

''研究方向:''科学哲学、科学知识社会学、佛学、当代新儒学

''推荐书目:''

#《数学方法趣引》,孙泽瀛著,中国科学图书仪器公司,1953
#《从杨辉三角谈起》,华罗庚著,人民教育出版社,1964
#《从祖冲之的圆周率谈起》,华罗庚著,中国青年出版社,1962
#《从孙子的“神奇妙算”谈起》,华罗庚著,人民教育出版社,1964
#《数学归纳法》,华罗庚著,上海教育出版社,1963
#《自然辩证法》,[德]恩格斯著,中央编译局译,人民出版社,1971
#《红楼梦》,曹雪芹、高鄂著,人民文学出版社,1982
#《堂吉诃德》,[西]塞万提斯著,杨绛译,人民文学出版社,1978
#《科学发现的逻辑》,[英]卡尔·波普尔著,查汝强、邱仁宗译,科学出版社,1986
#《新唯识论》,熊十力著,中华书局,1985
#《新教伦理与资本主义精神》,[德]韦伯著,康乐、简惠美译,广西师大出版社,2007
#《柳如是别传》,陈寅恪著,上海古籍出版社,1980

数学书籍启发数学兴趣;《柳如是别传》一书,堪称“科学的史学”之典范。

//2018年02月17日周六下午09:37:02//

6. ''陈乐民''  中国社会科学院欧洲所研究员

''研究方向:''国际政治、欧洲史、中西文化交流史

''推荐书目:''

# 《徐光启集》,王重民辑校,上海古籍出版社,1984
#《徐光启年谱》,梁家勉著,上海古籍出版社,1981
#《阿Q正传》,鲁迅著,人民文学出版社,1976
#《中国哲学史》(两卷本),冯友兰著,华东师大出版社,2000
# 《中国哲学史新编》,冯友兰著,人民出版社,1982-1989
#《顾准文集》,顾准著,贵州人民出版社,1994
#《哲学通信》,[法]伏尔泰著,高达观等译,上海人民出版社,1961
#《历史理性批判文集》,[德]康德著,何兆武译,商务印书馆,1990
#《历史哲学》,[德]黑格尔著,王造时译,三联书店,1956
#《共产党宣言》,[德]马克思、恩格斯著,中央编译局译,人民出版社,1963
#《论美国的民主》,[法]托克维尔著,董果良译,商务印书馆,1988

''推荐理由:''

《徐光启集》,徐是有明一代具有开放和开明眼光的“奇材”,是中西文化交流史中的开篇人物;坊间同类哲学思想史的书不少,但个人管见,都绕不过冯著二种(《中国哲学史》);李慎之对我说:“今天有没有思想家?”接着自答:“有的,那就是顾准!”;

7. ''陈尚君'' 复旦大学中文系教授

''研究方向:''古代文学

''推荐书目:''

#《全唐诗》,王全整理,中华书局,1960
#《全唐文》,中华书局,1983
#《唐五代人物传记资料综合索引》,傅璇琮等编,中华书局,1982
#《资治通鉴》,司马光编撰,中华书局,1976

8. ''陈严'' 法国政治与思想史研究中心客座研究员

''研究方向'':当代中国思想史

''推荐书目:''

#《国家与革命》,[俄]列宁著,中央编译局译,人民出版社,1964
#《资本主义与二十一世纪》,[美]黄仁宇著,三联书店,1997
#《菲利普二世时代的地中海和地中海世界》,[法]布罗代尔著,唐家龙等译,商务印书馆,1996
#《15至18世纪的物质文明、经济与资本主义》,[法]布罗代尔著,顾良等译,三联书店,1993
#《论美国的民主》,[法]托克维尔著,董果良译,商务印书馆,1988
#《旧制度与大革命》,[法]托克维尔著,冯棠译,商务印书馆,1992

9. ''程念祺'' 上海社会科学院历史研究所副研究员

''推荐书目:''

#《史记》,中华书局标点本,1959
#《传习录》,载在《王阳明全集》(商务印书馆国学基本丛书1936年排印本)
#《历史是什么?》,[英]爱德华·霍列特·卡尔著,吴柱存译,商务印书馆,1981

''推荐理由:''

《历史是什么?》是我学习历史的入门书。

10. ''党国英'' 中国社会科学院农村发展所研究员

''研究方向:''农业经济学、农村制度变迁

#《百年思索》,龙应台著,南海出版公司,2001
#《国富论》,[英]亚当·斯密著,杨敬年译,陕西人民出版社,2001
#《经济学》,[美]萨缪尔森、诺德豪斯著,萧琛主译,人民邮电出版社,2008
#《新教伦理与资本主义精神》,[德]韦伯著,康乐、简惠美译,广西师大出版社,2007
#《资本主义论丛》,[法]布罗代尔著,顾良、张慧君译,中央编译出版社,1997
#《变化社会中的政治秩序》,[美]亨廷顿著,王冠华等译,北京三联,1989
#《农民、政治与革命:第三世界政治与社会变革的压力》,[美]米格代尔著,李玉琪、袁宁译,中央编译出版社,1996
#《民主的模式》,[英]戴维·赫尔德著,中央编译出版社,1998
#《当代经济学与中国经济》,杨小凯著,中国社会科学出版社,1997
#《平等与效率》,[美]阿瑟·奥肯著,王奔洲等译,华夏出版社,1987
#《个人主义》,[英]史蒂文·卢克斯著,阎克文译,江苏人民出版社,2001

2018年02月19日周一下午11:00:47
《[[一个人的书房]]》是一本需要反复阅读的书,尤其是书中第一部分:

<<<
第一编 述:诸子学说
老子之学说
孔子之学说
墨子之学说
列子之学说
孟子之学说
荀子之学说
周秦诸子之名学
<<<

以王国维的国学高度,加之西学认识,后世人只能望其项背,所以王对先秦哲学诸子学说的分析,能钩沉索隐,穷搜经典,发覆探幽,直至开聋启聩,可谓经典,后世之人不能再有超越。
[[整理了十几个人推荐书目之后|我书架上的神明]],我准备放弃了。原因有三,一是书中大部分人所荐书目是大部分读者一辈子都不会读的专业书籍;二是,荐书人研究领域过于集中------大多集中在区域经济和思想史领域,”好书“过于偏科;三是荐书人拘于时代闲置,所谓的好书有其时代的偶然性价值,在当下并不一定合适推荐给大家。除此之外,这七十多位知识分子,样本单一 --- --- 大多从文革或上山下乡时代走过来的,不具有读书的多样性,但从中看到了这些人身上泛着治学严谨和对读书强烈渴望的可贵之光,而且几乎每个人所荐书目中都有一两部厚重历史著作,或史记、或论语、或资治通鉴等。

不过一路读下来,这些著作等身的人读书经历和读书故事中不乏金玉良言:


<<<
纳博科夫认为,要做一个优秀读者,并不是一定要参加一个读书会,或者与书中主人公认同,或者是自己也写东西,而是:1. 须有想象力。2. 须有记性。3. 手头应有一本字典。4. 须有一定的艺术感。
<<<

<<<
喜欢什么书或什么歌,往往和你在什么时候第一次读和听有关系。
<<<

<<<
后来读到韦伯的《民族国家与经济政策》,才知道德国人已经吃过了类似的苦果。对我而言,读这本书最大的收获在于,我学会了一种阅读的方法,或者更准确地说,是一种态度:虔敬,但不屈服。在阅读之前,尽可能地放弃一切已有的成见,紧紧跟随作者的眼睛,并且,努力站在作者的高度去思考,进入他的世界,面对他的问题。
<<<

<<<
如果我们真的热爱读书,那么我们就应当像对待朋友那样选择书、对待书:“友直、友谅、友多闻”,轻浮或者迷信都会损害友谊。或许这是我的读书生活给我最重要的启示。
<<<

<<<
一个人不经历过一些偏激,不做一回“愤青”,无法真正地回归中庸。
<<<

《历史学的理论和实际》 贝奈戴托·克罗齐(Benedetto Croce)的这本书分为“史学理论”和“史学史”两大部分,“史学理论”是本书的精华。在这部分内容里,他提出了“一切真历史都是当代史”的命题,指出认识论上的历史是“活”的历史,是“一种思想活动”,并且与历史解读者所处的现实生活密不可分。通俗地讲,对过去发生的历史的解读或认识不是一成不变的,它会随着时代的变迁而改变;真正的历史认识是现实与历史的联结,一旦脱离现实生活或者因为时代的改变,它便会变成“死”的历史。他从认识论上和价值论上,否定了以兰克学派为代表的客观主义或实证主义史学方法,通过对史料进行不夹杂主观情感的编排即通过“编年史”形式重现过去的历史;这种历史则是死历史和伪历史,毫无意义。尽管克罗齐的这种观点陷入了相对主义,但是他为人们理解历史开拓了一条新思路。
[[接上|2018年02月23日周五下午03:44:47]],继续把[[我书架上的神明]]中的一些亮点摘抄出来:


<<<
少年时期的理想主义的破碎让我对政治无所适从,既视之为应该远离的、往往与邪恶为伍的权力斗争,但又感到它是一种我无法避开也无法掌握的力量。

当下大多数人对政治的理解基本限于这样一种无意识的暧昧:或者追逐权力以获取自己的利益,或者在对权力的顺从中接受体制的塑造,或者远离政治而专注于私人生活。这三者往往互为表里,使人们不自觉地成为他们无法掌握的政治的产品。

在现代社会中,必须通过公共性的政治生活克服个体的自私和虚弱,战胜僭主和寡头的暴力和贪欲,实现自由、德性乃至伟大。

在托克维尔那里,宗教对于个体和公民灵魂的提升和净化,具有深刻的政治意义,在他看来,宗教精神和自由精神的结合,是现代政治的成功之道。

从哲学家和知识分子的心魔爱欲去理解这些人的政治狂热和盲目——政治对于他们来说不过是其心魔爱欲的工具,仍然是颇有启发的解释,并且也是对很多自负为哲人和知识分子的人的警醒

“月冷笼沙,星垂大荒。一个自由人,在追赶监狱”。

科学研究发现“我们将其作为‘现在’、‘感觉到的’现在实际经历的时间跨度大约仅为五十分之一秒长”。(Ernst Breisach, Historiography: ancient, medieval & modern, Chicago,1994,2nd ed, p. 2)所以,当你意识到现在是“现在”的时候,它已经变成了过去,而你却正生活在未来。

两句古书上的话,一句是《中庸》上的,“诚之者,择善而固执之者也”;另一句是《荀子》上的,“不以所已藏害所将受”。

<<<
春节之后所读之书一直在民国的窠臼里跳不出来(见[[2018读书目录]]),虽然每天有诸多作古大师为伴,然这些大家的清欲和素朴,好古和怀远,让我少了一些激情和欲望。这盘菜实在太素了  <<footnote "❶"英子在[[雅记清词写流韵]]上说:“色调上我偏嗜了素淡的一面,因为那是能够润饰人底深远幽邈的情绪以忧郁的冥思的”。">>,虽然之前一直探究这种[[素心素地素文的大情怀|素心素地素文方是大文章]],然萝卜青菜固然可爱,而能量和营养总要跟得上来,大荤也还是要有得。这就像[[年前做得读书计划|Laws of reading]],各个学科都要照顾到,如今嗜口而偏食了。

很早之前做过一个[[艺术与历史专题|Wechat]],美轮美奂的艺术可以训练审美和养眼,艺术背后的故事和大历史背景又开始还原现场,可惜暌违而汗颜,成了半拉子工程,希望接下来的换口味的间隙可以重续前篇,顺利转场。

此外,[[思维框架构建和认知科学|Thought Framework]]的探索也在年后原地打转,无甚进展。如果夏季再无进展,则如逆水行舟。存照,厉行!

再者,还有科技哲学这个靶子,枪一直在端着,瞄来瞄去,一枪未放,空放一腔热情。

在这三个领域希望接下来能花更多时间,以便荤素搭配。
温源宁在[[雅记清词写流韵]]上记周作人的一篇小文(《周作人:铁与温雅》),写的真是好,自然、传神、有趣,把周作人现场还原的活灵活现。


<<<
周先生的住宅远在北平繁华中心之外,因此过访者不甚踊跃,然而真的过访的几个人,主人总是欢迎的:他们不是老朋友,就是常来找他想在写作上得一点特殊指示,或只是随意谈谈的几个热诚的景仰者。''十有八回,开口的是客人,听着的是周先生。话是用幽幽然的调子说着。没有议论,所以就没有雄辩。话头左一弯右一弯,说到这说到那——只是软软的撩一下,便荡开去落在别的上:任什么也不许独占春光,以至于变成争论的对象。热情是没有地位的,所有的只是对于一切事物的清明无私的好奇的烛照。''
<<<

<<<
大凡在学问中讨生活的人,对于让外人参观自己的书房这件事,大都心存忌讳。他们视自己的秘密书架,好比金屋里藏的阿娇,或者贪官的银行户头,不到万不得已,那是绝不愿意轻易示人的。---《读书》前执行主编王焱
<<<

读书是很私人的事情。也正是很其私密性,我对别人的读书有很强的“偷窥欲”。长长的读书清单中,我专门建立了一个别类:书的书。窥探他人读书除了好奇心外,也是寻猎好书的一种途径,了解别人的读书之法([[Laws of reading]])和读书故事。

《[[私人阅读史]]》这本书是从梁文道的《[[我读]]》中获悉。

先说一下梁文道的《[[我读]]》。梁文道应该算是专业的读书人,但他又不是学者,是以读书为职业的人。我不知道读书对他来说是否是一件痛苦的事情 --- 应该不会。因为一旦把读书变成了职业,这种行为就失去了诸多乐趣,就像上学时期的读书,我想没有几个人那时候是酷爱吧。对梁文道本人我是熟之又熟,和他本人在五道口万圣书店见过两次,一起在书店楼下抽了会烟就离开了。而对他的节目我是每期必看 --- 最喜欢的还是他和老窦以及许子东的座谈节目《锵锵三人行》。据说梁文道读书神速,一晚能看完一本书。如果没有猜错,我想梁文道的读书法正是《[[如何阅读一本书]]》里的第二、三种阅读法:检视阅读和分析阅读。除此之外,世界上还有什么其它的快速阅读法吗?当然,经过阅读训练的人,看书的速度 --- 用《[[阅读心理学]]》上的专有名词叫眼跳速度和跳读 --- 是可以提高的,一目十行也不是不可能。

《[[我读]]》这本书其实就是梁文道在凤凰卫视上的节目《开卷八分钟》的文字版,简单进行了筛选和加工。我也是拿这本书当工具书用 --- 查询一本书的大概信息和感概。

再说《[[私人阅读史]]》。

《[[私人阅读史]]》和之前读的《[[我书架上的神明]]》很像,前者锁定的时间段更考前一点 --- 从1978年到2008年,对象年龄大都为六零后之前;而后者更当代一点,包括80后的阅读经历。

读书,我好像很难戒掉猴子掰棒子的毛病 --- 一本没看完就急不可耐的翻开另一本。在 <<tag Task>>和 <<tag 正读>>、<<tag 想读>>标签中已经开始“负债累累”。

不过我为这次掰下的棒子欣喜 --- 《民国清流》系列是有关民国书籍的上乘之作 <<ref [1]">>。

作者以编年体作为全书布局,从1917年开始,每一年为一个单元逐一写下来。每一单元又以某一个人物切入,顺藤摸瓜,一串串扯出来。

就说第一单元 --- 1917年 --- 吧。 第一出场人物为蔡元培,从其入驻北大开始,接着《新青年》编辑陈独秀登场,假陈之手又对胡适伸出橄榄枝。陈、胡接受北大之邀,揭开了整书大幕,也是暮气沉沉的北大逐渐成为新文化运动的精神高地。李大钊、钱玄同、刘半农、周氏兄弟等一代新型知识精英,也开始一一登上历史舞台。旧式文人也没有被沉寂,章太炎、辜鸿铭等大儒一样不吝笔墨。

《民国清流》另一特色是作者以小说笔法重整史事。作者把相关人物和重要节点都以小说手法还原历史现场,并辅以文学色彩的渲染和铺垫,从而使生硬的历史事件和人物关系变得生动了起来。这也是这套书之所以好看的重要原因之一。不过话说回来,以这种写法见长的当属台湾高阳,高阳所写的清代历史小说后世无人能够超越 (见 <$appear>

<$list filter="[field:author[高阳]]+[!sort[created]]">.

<$link><$view field="book_title"/></$link>  

<$transclude/>

  </$list>

</$appear>此)。汪兆骞对历史事件的处理和衔接过于生硬,文学铺陈痕迹过于明显而至有做作之嫌。

-- -- --

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "汪兆骞著有经典史诗级民国大师集体传记“民国清流”系列  ,已出版  《民国清流:那些远去的大师们》、  《民国清流2:大师们的“战国”时代》、 《民国清流3:大师们的中兴时代》、《民国清流4:大师们的抗战时代》、《文坛亦江湖:大师们的相重与相轻》、《走出晚清:大师们的涅槃时代》、《往事流光》、《春明门内客》、《紫塞烟云》、《张骞》等。 ">>
<<<
对现实的不满,不会希冀未知的将来,而更多的是对过往的追忆。 --- 三家村
<<<

也许这就是“民国热”的内在原因。民国,是一个物质匮乏,社会动荡不安,民不聊生的时期。而人们热衷的是这个短暂而又响亮历史阶段的独有特质 --- 时代变革催生的文化裂变、国际局势激发的国家图存探索、军阀混战造就的正义与邪恶的较量。这种撕裂感的历史特质的独特魅力核心就是灿若星河的大师们。

[[那些远去的大师们|民国清流:那些远去的大师们]]人遂去,而茶未凉。当身处黑暗之中时,还能看到一些人在遥望他们,星星点点的灯火依然可以引导迷茫着。

先说蔡元培。

如果蔡元培看到今天北大之现状,估计要揭棺诈尸,魂不能安。蔡元培接下北大时,北大是一个前清留下的烂摊子:

<<<
北京大学在动荡的政局下,一片乌烟瘴气,名声狼藉。教师中不少人靠印发旧讲义,糊弄学生。学生中有不少人整天吃花酒、捧戏子、打麻将,不上课,不读书,混日子。北京大学所处的马神庙、沙滩一带,成了市井闹肆、酒楼,暗娼招摇过市,与文化圣地形成绝妙的讽刺。
<<<

经过蔡励精图治,在“兼容并包”的办学宗旨的大旗下,延揽了陈独秀、胡适、钱玄同、章太炎、黄侃、辜鸿铭、章士钊等清流名士,北大方成为一片圣土。特别是在胡适和陈独秀两个勇士的推动下,北大成为中国新文化运动的诞生地和新思潮的前沿阵地,直接导致五四运动的轰然炸响。

如今,北大的这些清誉尚存几何那?




再说胡适。

<<<
胡适在家乡受九年私塾教育,1904年到上海求学,两年后考入中国公学。1908年转入中国新公学,兼英文教员。19岁考取留美官费生,就读于康奈尔大学农学院。后又转入文学院读哲学、经济、文学诸课程,1914年获文学学士,9月发起创立“中国科学社”。次年,入哥伦比亚大学研究院,师从美国哲学家杜威,学习哲学。
<<<

<<imageSlider  [[https://i.loli.net/2018/06/07/5b180fcb51d15.jpg]]    "胡适 1960">>

胡适与鲁迅,是中国现代思想史和文学史上并峙的双峰。胡适入职北大,成为北大第一位洋博士。在胡回国之前,就在海外提出“一个国家有海陆空,不如有大学”的主张,这让蔡校长赞叹不已,事实上也成为新北大一面鲜明的旗帜,与陈独秀联手发起白话文运动,并继而推进新文化运动。正是上个世纪早期这场轰轰烈烈的运动,才引起思想各种思想的撞击和讨论,催生催生了五四爱国学生运动。那些从黑暗中突围出来的知识分子,才如泉涌般集体亮相,以启蒙者和革命家的胆魄,继续奋力开启新时代的闸门,一路高歌猛进,为20世纪的中国历史谱写了新的序言。

“胡适大名垂宇宙,小脚太太亦随之”,胡适的婚姻被列为民国史上七大奇事之一。一个提倡新生活倡导新文化的玉树临风洋博士和一个大门不出二门不迈的裹脚妇女(江冬秀)结合,确实悬殊太大。可这位谦谦君子之风的新儒派代表人物却是一位至纯至孝的孝子,为了母亲不得不迁就个人生活。1918年5月,新婚五月的胡适在写给挚友胡近仁的信中说:

<<<
我之就此婚事,全为吾母起见,故从不曾挑剔为难。(吾不为此,吾决不就此婚,此意但可为足下道,不足为外人言也。)今既婚矣,吾力求迁就,以博吾母欢心。吾之所以极力表示闺房之爱者,亦正欲令吾母欢喜耳。
<<<

并峙双峰的另一峰之鲁迅可就没有胡适从一而终了。鲁迅奉母与朱安成婚,后来一贯贯彻个性主义的鲁迅个性解放了,与许广平自由恋爱,但朱安呢?个性解放与人道主义的矛盾,造成了朱安这个可怜女人的悲剧。这个阴影也一直笼罩着周树人。

胡适对近现代中国的影响力勿用赘述。但与之有颇深渊源的一人不得不提,那就是新中国的缔造者,毛泽东。
《我在现场:性社会学田野调查笔记》这个书名包含了几个有意思的信息:性+社会学+田野调查+笔记。性,人类繁衍的原始活动;社会学,研究人类行为和人类群体;但性+社会学(sociology of sex)就是很有意思的一个词,研究的方向应该是性与社会性的交叉范畴。而本书的内容主要是性从业者和中国“红灯区”。田野调查,是人文社会科学领域围绕研究对象而进行的田间野外实地调查活动,也即在文化人类学等学科方法论中所称的“直接观察法”。笔记,是本书的写书叙事风格。书名的“我在现场”,我想是出版社的商业噱头行为,和田野调查是一个意思。

一直以来对纪实性文学、人文社科研究报告很感兴趣,之前看的《[[东北游记]] 》、《[[一个村庄里的中国]]》都属于这个范围。我在[[第三只眼睛看东北]]提到过当今社会这种文体读物的价值和难得所在:见此 <$appear type="popup">

看纪实文学就像看纪录片,是一种现实性体验,和纯文学的区别就是非想象和虚构以及无论美丑但真实的魅力。中国好纪录片少之又少,现存的纪录片不是捧臭脚,就是跪舔式的阿谀;不是洗脑式的价值灌输,就是意淫式的自我高潮。真正好的纪录片是一个真实的过程,记录、信息传递和人性启蒙。同样,中国纪实文学作品也同纪录片一样的现状。事实上中国是最不缺少现实题材的土壤,网友神侃为这是一片神奇的国度,远且不说,就改革开发四十年,经济的飞跃带来的阶级分化、社会价值观的滞后带来的国际和国内问题、被经济撕裂的信仰带来的人性痛苦和社会问题、互联网浪潮下的社会道德底线和政府作为、逐渐分层的社会造成的不同族群的个性化和主流价值观的冲突........这些不都是绝佳的现实题材和魔化题材吗?奈何无人来做!

</$appear> 。此书2017年出版,尚有一定的时代价值。

本书难能可贵之处有二。

一是作者们把自己丢在“现场”,并“自甘堕落”融入“现场”。第一篇文章的作者,人大教授潘绥铭,在白发苍苍的年纪驻守东莞红灯区夜总会里面四十多天;第二篇文章作者黄盈盈 ,人大性社会学研究所所长,还是个未毕业的女孩子的时期就深入广东发廊,与性工作“战斗”在第一线。二是作者的研究态度,降维沟通。我们一般人在面对性工作者时候除了好奇之外,我想绝大多数人都有一定的道德优越性,甚至不自觉的进行道德绑架。而这些“走入田野”的人,能够自我降维,拒绝道德绑架,我想这不是一般人能够做的到的。就像潘绥铭所说:

<<<
究竟是因为“性”本来就坏,还是为了装高尚才把它说得那么坏?再说了,如果性不那么坏,钱也不那么坏,那为什么两个连在一起就变坏了呢?别跟我说什么道德,您那个道德经过全民公决吗?怎么就能强迫别人遵守呢?
<<<


我想,这就是这本书的价值。除了满足些许的偷窥欲之外,使人能够做到降维思维,深入事务的本质看问题。
<<<
社会科学的本质,就是要从人人可见的表象中去发掘那些平时被大家所忽视的东西。
<<<


我本想从《我在现场》中企图了解改革开放40年来人们性观念的演变、性工作者现状以及中国“红灯区”的变革,可惜本书并没有给出什么结论和参考,而只是这拨人工作手记而已。我想他们也没有什么研究成果吧!不过本书有趣的一点是,一群头顶教授、博士、最次也是研究生头衔的知识分子,企图去亲密接触、融入一拨没知识没文化的“社会底层的边沿人”,并努力去取得对方信任和打开心扉。这样的社会科学调查本身就是非常好的一个社会科学现象,两个社会阶层(甚至可以用阶级这个词来描述)高低悬殊巨大,是什么让这两拨人在哪个点交汇和共鸣?这本身可能也是一个社会科学课题:阶级分化和共鸣。

虽然本书故事性强于学术性,有点玩弄噱头糊弄读者的嫌疑。但个中还是有些许闪光点:

<<<
眼睛里看得见角落,心里才会有全局。
<<<

<<<
性行为并不都是按照男女性别来划分的,也可以按照快乐不快乐来划分。
<<<

<<<
社会科学研究最大的魅力在于,研究者可以投入自己的真情实感去探索社会问题,并且在探索中发现、体验和发展自己的内心世界与情感能力。
<<<
经常见许晖在twitter上安利他的系列作品 --- 解字、解词系列书籍。因为这两年一直在闲看《[[说文解字]]》,今天也大致翻了翻他的《这个字原来是这个意思1.2》。

说实话,写像《这个字原来是这个意思1.2》这类书是一个苦力活,需要参考很多古代文献资料,要不然根本无法对一个字、词的演变、释疑以及各方见解说明白。文字学在小学范畴,明清比较流行,出了不少大专家和专著。近现代,特别是民国新文化运动提倡白话、新中国汉字化繁为简之后,文字学再无什么人搞出什么明堂了。

我提倡人们多看一些“说文解字”,这是汉语的元件,不仅是学习古汉语必备的知识储备,也是学好汉语的基础。如果有些文言文基础的话,最好还是看元典,如《[[说文解字]]》等。像许晖的“说文解字”系列也可以翻一翻,聊胜于无吧,不过无甚新意。

看《[[说文解字]]》这种书很枯燥,需要慢慢来,想起来了就翻一翻,遇到感兴趣的字就记下来,钩沉索隐,日积月累,集腋成裘。除了看这种“说文解字”专著,还有一种学习办法也很管用,那就是凡是遇到一个生僻的或者感兴趣的字,就翻一翻字典,搞清楚这个字的来龙去脉,然后记下来。 在这里我推荐几个工具,很有用:

* 在线字典:[[汉典|http://www.zdic.net/]]
* Chrome浏览器插件:[[Papier|https://chrome.google.com/webstore/detail/hhjeaokafplhjoogdemakihhdhffacia]]  ,把字的解释都放在Papier上,这样每次打开chrome就可以看到。

除此之外,我还用了[[OneNote|http://office.com]]和Kindle。把所有在kindle上遇到的生字词都汇集到Onenote,然后每天在[[汉典|http://www.zdic.net/]]上查一个,然后在Onenote上把它删除,并把释疑贴在[[Papier|https://chrome.google.com/webstore/detail/hhjeaokafplhjoogdemakihhdhffacia]] 上。每天一个,记不住也没关系,下次遇到您继续查,继续贴出来,一定会记住的。

同理,这个办法记英语单词也是可行的。
今天在读库上看到这样一段描述:

<<<
 60年代可以说是美国历史上最重要的十年,在这十年里,美国举行过从抗议种族歧视到反对越南战争的数次华盛顿大游行;发生了数不清的暗杀和暴力事件;出现了头戴鲜花的嬉皮士和善于制造事端的异皮士;流行过从大麻到LSD再到海洛因的各类毒品,并从中诞生了身穿长袍的迷幻宗师和走入歧途的谋杀犯。这一切都发生得那么迅速,以致于民歌手克罗斯比曾经用下面这句看似错误的话来形容那个年代: 你如果还记得六十年代发生过什么 那你就根本没有在那个年代生活过 这被许多从60年代过来的“老兵”们称为是描述那个年代的最贴切的一句话。而伍德斯托克音乐节,则是美国音乐史上最兴盛的60年代的最后一次高潮。
<<<

之所以存照,是企图在[[中国百年思潮迭代和探究]]中找到一段可以对应的年代,虽然方式可能不同,但表象之下的思潮和逻辑相似即可。还没有探究,马上想到的是80年代,可能唯有这段时间由此机会。
这些年养成了一个毛病:[[囤书|https://rizi.me/#BookStore:BookStore]]。虽然大部分标注“要读”的书都逐渐被我消化掉了,但遇到好书、有趣的书、符合个人趣味的书还是忍不住囤起来。说好听点,是为了建立自己的数字资源知识库,其实就是爱书的瘾犯了,目前互联网上最不缺的就是电子图书资源;说不好听点,这是贪!这个毛病一直改变不了,一本书还没有进入尾声,遇到零一本好书,又急不可耐的读了起来。该治!

读书应该有个计划。我下了(见 <$appear type="popup">{{Laws of reading}}</$appear> )不少功夫。可执行结果并不理想,仍然是随意而为。看一些大师的读书史,许多人说随意而读即为真正的读书,带有某种目的和功利性读书非真正的读书。这话我赞成一半,即读书不要太功利性。不赞成的一半是,我认为读书要有计划性,为什么这么说?“吾生也有涯,而知也无涯。以有涯随无涯,殆已!”把有限的时间有计划性的去读好书(是好书,而非有用的书),去读经典大作。因为每年都有海量的书籍问世,而这海量书籍中真正可读、能读、值得读的可能并不多,细分每个学科或领域,经典的书籍也不多。那么为什么还要把时间浪费在读那些浑浑噩噩的书那?

除此之外,读的书越多,除了感觉到自己的无知之外,越来越感觉到自己的无趣。无趣,指的是有趣的灵魂。生活中遇到一个具有有趣灵魂的人弥足珍贵,堪称万里挑一。有趣,不仅指的是亦正亦邪的嗜好和耽爱,更重要的是对世界具有独特的见解,以及近乎成魔成佛或大智若愚的行事风格。做到这一点太难了,用释家的话说,这需要顿悟,需要一道灵光,需要一语棒喝,从而忘我。用儒家的话说,这需要学富五车,从而厚积而薄发。而从认知科学上来看,这需要突破自我的认知瓶颈,用上帝视角的思维俯瞰世界。

可这到光在哪?
习惯了在电影上映前速览一下电影原著。看原著比看电影多了好几个维度,整个故事会更立体饱满。电影用侵略性的视觉语言强加于认知,而读书用主动性思维幻想一个场景和主人公,二者的结果其实是蛮大的。就像之前读完《[[芳华]]》,就不再想看电影版本了。

《[[侠隐]]》是发生在民国末年 --- 西安事变前后那段时期北平的一个复仇故事。整本书的故事很简单,围绕主人公 --- 李天然复仇展开;人物关系很简单,李天然和李天然熟识的几个人;故事背景很简单,虽然那段时期中国处在内忧外患的复杂历史阶段,但作者并没有想写成历史小说,所以故事背景一带而过。而小说简单中的复杂是故事发生的地点,民国时期的的北京,如果对北京不熟悉,是搞不懂小说中的地理,从一个胡同到另外一个胡同。与胡同呼应的是胡同里的生活,老北京的生活,准确的说是老北京胡同里四合院的生活,“天棚,鱼缸,石榴树;先生肥狗胖丫头”。这一点对于北京土著来说是迷人的,是怀旧。可能这才是作者张北海写这部小说真正想抒发的感情,作者十几岁离开北平(1949)到台湾,后移民美国,六十岁退休后才开始写作。老年写作,难免古国怀旧,午夜梦回。据说(电影还没有看)电影《邪不压正》恰恰是抽离了老北京生活这部分,单独把故事领了出来。我不知道作为北京土著的姜文导员为什么这么做,但我想,如果真正他这么做了,未必能拍得出那种味道来,他的风格不合适这种题材。

也许与作者老年写作有关,整本书的叙事风格如文火慢炖,把一个复仇故事写的如游记或回忆录,把武林江湖月黑风高杀人越货写的看不出任何刀光血影,甚至你还能从中嗅出咖啡、威士忌、雪茄和豆汁、葱油饼、羊肉包子的浪漫主义味道。
看 《不失者》,就像进错了门,不经意发现了别样天地。 因为我原本不会对这种题材 --- 科幻或者非现实题材 ---感兴趣,也对这种看似网络小说的作品由衷的排斥,我甚至有点神经质的拒绝看近三十年出的书。但一脚踹开《不失者》的门,在不经意翻一翻的过程中,先是被作者的文采所吸引,后是被作者狂放的想象力所瞩目,再就是为作者富有哲学意味的大段描述所赞叹。

 《不失者》文字的精彩部分在作者对比喻的运用,虽然整个故事的结构有点紊乱,章节的编排并不合理,但是不影响对整个故事的了解情况下,您会享受作者一个一个比喻的运用。对比喻手法的运用是一门高超的技术,不是谁都可以信手拈来,恰如其分的。

故事的想象力和结构,也是本书的一个特点。虽然想象力并不很出色,但是和故事一环一环的套起来的结构结合起来,就使故事具有很大的悬念和趣味性。可惜的是整个故事格局还是太小,如果有一个宏大的结构和立意,以作者的文采足可以媲美《三体》。

整本书最后一部分 --- 关于迷宫哲学 --- 十分精彩,虽然与整个故事有点剥离感,但依然不失其迷人之处。


看完整本书,我查了一下作者孔亚雷的资料,百度百科上这样写的:

<<<
中国的村上春树,一部堪与《寻羊冒险记》和《奇鸟行状录》相媲美的奇妙小说。孔亚雷的这部长篇小说令人想到《世界尽头与冷酷仙境》等更具村上春树文学本质的作品,并在很大程度上达到了形神兼备的境地。而这一境地,便不是简单的技术性模仿所使然,而须以精神的谐调、心灵的契合为前提,同时更需要波涌浪翻的文学才情。套用一句老话,他可以说颇得村上文学的“真传”。
<<<

可惜作者的作品太少。或许作者后来放弃写作了吧。
每一次生病都是一次生命的净化。

这话用我身上显得有点矫情。这几天我这也不算什么病,只是严重一点的上火牙疼,充其量算是小恙。但是小恙而大痛苦,吃不好,睡不好,无时无刻的疼痛提醒着您,由牙疼到耳根疼再到太阳系疼到最后直至半个脸痛的麻木而浮肿。加上北京闷热骚湿的天气,真如炼狱。

幽深绵长,沉闷利钝的疼不间断的调戏我过程中,我时不时如梦如幻般的会和身体里这个宿敌进行对话。你是谁,你在哪里,你为什么要折磨我。有时我会向他示弱、投降,不要折磨我了,你要我干啥都行,你只要停下来。我记得我还向它行贿示好,我每天好好的供养你,美馔鲜食。而当我真正清醒的时候,回想和它的每次交锋,我对他一无所知。

我。一个形而上的我,一个形而下的我。

通常我们所说的我,也是中国人文里的我,大多是形而上的我,是精神意义上的我,是具有多维度内涵的我。我们会脱口而出的说我是什么样的人,我喜欢什么电影什么书,喜欢什么样的姑娘和她身上的味道。而真正意义上的本我,形而下的我,每日载我而歌,托我而行的那个真正物理上的我,似乎永远只是个配角,甚至您会突然发现,我们对这个可怜的任劳任怨的家伙知之甚少,完全是一个陌生的家伙。直到有一天这个家伙生气了,罢工不干了,我们才意识到这个家伙的存在,才意识到平时有点溺爱了形而上的我,而忽视了真正的本我。

“我”之长存,而忽亦久矣。中国文化是忽略、不提倡,甚至压抑追求肉身的。认为身体是只有耻感与罪感的东西,唯有苦难才能洗去它们;痛感需要忍受,快感需要抑制。老子有过名言:“吾所以有大患者,为吾有身。及吾无身,吾有何患?”甚至把身体当作了一种累赘和负担。

时不时身体上两个我进行一次坦诚布公的谈话是一件好事。有道是皮之不存毛将焉附,载我而歌,承我而愉的不是它者,是另外一个自我。

观自在菩萨,照见五蕴皆空,方度一切苦厄。
<<<
书画琴棋诗酒花,当年件件不离它,如今七事都改变,柴米油盐酱醋茶。
<<<

上面这首诗是命运多舛的苏东坡的真实写照。从才高八度、气贯长虹的文学青年,经过政治人生的洗礼,沦落为油腻的隔壁大叔。曾经的庙堂高山仰止的偶像,如今只能曳尾涂中。

<<<
一曰无事以当贵,二曰早寝以当富,三曰安步以当车,四曰晚食以当肉。
<<<

入世和出世,似乎是每个曾经沧海的人生抱负的起点和终点。戏噱的油腻中年,其实是一种知天命的出世态度。


<$transclude mode="block" tiddler=booklogsinfo/>《鱼·翅与花椒》这本书的书名起得好,有点“枪炮与玫瑰”的韵味,但讲的是和吃有关。尽管书的风格是纪实文学,当看此书扔能让人口舌生津,似有绕梁余味。

一个生在牛津,剑桥大学毕业的英国姑娘,不远万里来中国成都求学,最后确成了一个地道的中国吃货。不仅走街串巷寻找四川美食,还一猛子扎进去,上了一个川味烹饪学校。从此一发不可收拾,拜码头学厨艺,出没在各大饭店的后厨之中。从生猛的川菜,提神的湘菜,到温柔的闽菜,惊人的粤菜,和辉煌的宫廷菜,这个叫扶霞的英国姑娘已经完全超越了一般中国人对中国菜的认知和烹饪技术,成了一位地道的中国美食家,除出书介绍中国菜到国外,还成了一些排场场面的座上宾和美食点评家。

这位英国吃货姑娘有点像春季我看的另外一本纪实文学《[[东北游记]]》的作者迈克尔•麦尔,有追求、专注而坚韧。在我这个中国人眼里,不管他们的调查结果是否科学和精准,他们是有趣的人。这样的人一直也是我追求的,像古代的李渔、张岱或沈复,和最近读的民国清流,如辜鸿民等,他们没有轰轰烈烈的事迹,然而遂愿而为的率性,有点偏执狂的专注,确显得那么有趣而弥足珍贵。而时下,如我辈有那么多的放不下,那么多的算计、衡量和计较,以致最终一事无成而碌碌无为。也许这就是古人说的“舍得”辩证吧。太多计较得,而不得;无心插柳的舍确绿树成荫,硕果累累。

看[[鱼·翅与花椒]],不要当菜谱来看,虽然作者每一章后面都会附一道菜的做法,本书核心看点是一个外国姑娘从接触中国菜到最后成为美食专家的历程。对一位老外来说,深入中国菜的内核和掌握精髓,不仅仅需要对自我的不破不立的生存还是毁灭的勇气,更需要领会中国“民以食为天”的文化要以,也许这才是本书的看点,第三只眼睛看中国。
<$transclude mode="block" tiddler=bookkeywords/>
对于热门作家的作品,我一般都有意回避之,不想赶热闹,找话题。蒋方舟不知道算不算热门作家,至少在中国她是个公知、话题人物和电视节目热门嘉宾。我对她有限的认知,之前是来自媒体对天才少年的报道,最近是因为看窦文涛的节目,她变成了常驻嘉宾,从而走进了我的视野。对她的印象谈不上好,也说不上讨厌。不过其率真的性情还是值得欣赏的。

而拿起她的这本日记体书 ---《东京一年》,完全处于这本书的东京二字,和蒋方舟名字没有关系。中日文化在近代史上互相影响,你中有我,我中有你,所以中国人对日本及日本文化总带有复杂的看法。第一次看蒋方舟的文字,总体上没有让人失望,不像一些年轻女作者的文字显得苍白和无病呻吟。蒋的文字无论是写作技巧还是遣词造句透出一股子成熟,这应该是她长年写作锻炼的结果,她虽然她是89年人,但人家毕竟7岁就出书了。不过她的语言风格依然有点轻飘,这可能是网络时代新青年作家的共性吧,古汉语字、诗词,付之阙如,取而代之的是一些网络语言,例如中二等、打 call等。除了成熟的写作技巧和流畅的行文,我对蒋方舟读书的广博颇感佩服,也许这是专业作家的职业必备需求吧。也许正因为此,蒋方舟的文字里的一些比喻的运用显得十分有趣和精妙,如:


<<<
因为掌握了新的技能而变得很自信,像第一次放学不用家长接就能回家。 

大概就像面对一个在葬礼上哭得不能自已的人,忽然指着他身后喊道:“看!UFO!”哀伤的人或许会因为错愕而短暂地停止哭泣。 

还有一尊是唐朝天龙窟第二十一窟的观音像,眼鼻唇秀美极了。我看了一会儿,简直要像谈恋爱一样脸红起来。 

从咖啡馆的窗户看到里面的人暖和又开心,觉得自己像卖火柴的小女孩。 

甚至还点了一直不敢尝试的马肉刺身。味道却很一般,带着血的马肉,太鲜活了,似乎能尝到它生前奔跑时的味道。 

老人像是另一个物种,或是另一种形式,当世界是GIF、AVI格式的时候,他们已经提前进入了JPG格式,没有多余的动作,所有的情绪反应也降到最低。 

比如“7岁写作,9岁出书”这些我讲腻了的故事。但是在我写出好的作品之前,也只能靠这些故事来引起读者对我的兴趣,和表演吞火球、钻火圈没什么区别。 

横尾忠则的作品,简直是将我们日本人内在某些不想面对的部分全部暴露出来,让人愤怒,让人畏惧。这是何等低俗的色彩啊……然而在没有办法被这些鲜明色彩包裹的黑暗深处,似乎暗藏着某种严肃。就像马戏团钢索少女缀满亮片的底裤会让人感受到某种严肃那样。
<<<
“恪”字谁都认识,但是能读对陈寅恪名字的人我估计不多,我之前一直读作陈寅恪(què),梁文道似乎也一直读 què。今天看《民国清流:大师们的中兴时代》方知是错的。原本“恪”读què还是“kè”都说的通,但本主出来证明了,那一定是没错的。

<<<
世人多把陈寅恪之“恪”字,读作“què”,说是因陈氏原居福建上杭,属客家人,当地读“恪”作“què”。据《守护语林》考证,上杭的客家话里,根本无“q”这个声母,“què”应为粤语的“恪”的发音。陈寅恪本人在成都燕大授课时,曾亲口对人说:“我的名字念‘客’。”有人曾问陈寅恪,既然你自己将“恪”读成“kè”,而世人却读成“què”,你为何不予以纠正呢?陈笑着反问:“有这个必要吗?”于是,世人误读至今。其实,陈寅恪不改“恪”之读音,乃有出处,《辞海》载: 恪(kè课,旧读què却),谨慎,恭敬。《诗·商颂·那》:“执事有恪。”《新唐书·崔元综传》:“性恪慎,坐政事堂,束带,终日不休偃。”其言“旧读què却”,可能另有原因。故读恪为“kè”与“què”无对错。 
<<<

陈寅恪,是我最喜欢的民国人物之一(其它几位为:辜鸿铭、章太炎、胡适)。[[正如前述|那位一直喊”危险!危险!“的辜鸿铭]],辜鸿铭是真性情;章太炎是真学问;胡适是真君子;陈寅恪是真学问加真君子。民国初期的大师们,大凡有才学者,或狂傲,或峻急,或狂戾,或伐异,或恶札,或癖怪,或疯癫。而陈寅恪虽博学,却虚怀、诤友、清洁。

从陈寅恪与鲁迅之间的关系即可看出其德品一二。陈寅恪少年即留学日本,与鲁迅同学。然而在陈寅恪的文字中很难看到鲁迅二字,鲁迅的日记也只有一条提到陈寅恪,这绝非二人关系有隙,似乎另有它情。陈寅恪晚年这样解释到:

<<<
鲁迅的名气越来越大,最后以“民族魂”的大旗覆棺盖椁,继而成为“先知先觉”和“全知全觉”的圣人,他怕言此事,被国人误以为自己像鲁迅所说的那样,成为“谬托知己”的“无聊之徒”,“是非蜂起,既以自衒,又以卖钱,连死尸也成了他们的沽名获利之具”。
<<<

事实上陈寅恪是看不起鲁迅的,他的解释跳过了二人相识的二十年,只谈到了鲁迅晚年及其去世之后,皮里春秋是嘲讽和不屑。事实上鲁迅的名头是真真的被夸大了,被神话了,连今天的我看到鲁迅的“民族魂”的大帽子都烦,何况对鲁迅知根知底同时代的陈寅恪那。还有一位民国大师也是一生都不愿意谈鲁迅,那就是钱钟书,同样是一位灵魂高洁之士。
终于把《民国清流》四卷本给看完了。

汪兆骞老先生这套书在民国诸多作品中应该属于最具诚意之作,在史料占有以及理解方面,如果不具备一定的基础和功力实难驾驭。这套书按照编年体架构,从民国元年开始各大清流大师一一亮相,随着时间的推移,社会环境的变化,各个人物逐一开始变得丰满起来,直到他们从您眼前走过,又看着他们的背影慢慢的走远,消失。虽然整套书只截取了区区34年的历史片段,然而这段时间恰是历史中华大地历史长河中发生变革、变故、灾难和曲折最多的岁月。读完这套书之后,除了明白了为什么大家对民国历史感兴趣,也让我对当下社会以及个体信仰和行为准则有了更多的思考。

民众对中国历史热有两个怪现象,爱宋朝和热民国。爱宋,简而言之是一种对中华文明曾经高潮的追忆,以及对所谓“崖山之后无中国”汉民族苦难的缅怀,这是一种虐恋。“民国热”,其实是一种对当下不满情绪影响下对故去的怀念,民国并不那么美好。哈宋和民国热现象有一个共同特点,那就是大师辈出,文人纵横捭阖,言论环境宽松。“悟以往之不谏,知来者之可追;实迷途其未远,觉今是而昨非”。我想这才是这两股热背后的真正原因。

这套书另外给我最大的收获是那些逝去大师们高山仰止的高尚品德给我的影响和营养。蔡元培、章太炎、胡适、陈寅恪等这些灿若星辰的大师,之前对我来说只是一些符号,当走近他们后,清流宿儒大师身上那股强大的人格魅力气场距百年而不衰,与国家和民族的大义,对同侪和朋友的无私,对后辈和弱者的提携与关系,真可以用厚德载物,静水流深来形容。从另外一个角度看,之所以给予我营养,正是当下世风之不古,民风之沦丧,信仰之缺失;一切官方和民间的准则模糊不清又似有似无;个体在公共活动中的缺席以及群体缺少共同目标和追求,从而游历于国家和民族之外,所以不得不上下而求索。
年初我对今年要看的书作了个[[初步规划|2017年读书回顾和2018年读书计划]],其中社科类要占30%,事实上上半年所看书籍中此类书籍寥寥无几。社科,在我的字典中不仅仅是指社会科学,还包括了部分自然科学部分。这也常使我纠结,例如哲学类书籍,我不知道是归类到那一类。在我有限的知识理解范围内,我会把哲学和科学(或自然科学)纳为一类。哲学是研究普遍的、根本的问题;科学是隐藏在现象背后的、通过逻辑推理才能知道的探究事实真相的方法论,是对自然现象的规律进行探索和总结,二者殊途同归。难怪罗素说:“哲学是某种介乎神学与科学之间的东西。一切确切的知识都属于科学;一切涉及超乎确切知识之外的教条都属于神学。但介乎神学与科学之间还有一片受到双方攻击的无人之域,这片无人之域就是哲学。”我的迷惑和纠结可能就是这中间区域的缺失吧。这个阅读主题也是我今年特别感兴趣的,特别是科技哲学。所以我在整理资料时尤其纠结,不知道该放入哲学的筐,还是纳入自然科学的篮。悬而未决,希望之后我能想清楚这个问题。

前些天身体小恙,让我对自己的身体产生了种种[[疏离和陌生感|2018年07月31日周二下午10:34:43]]。我有十几年没有进过医院的大门了,对于形影不离的我的肉身完全不了解,这种疏离和陌生感让我感觉到恐慌,甚至恐怖。信仰精神已匮乏,如果连我之皮囊都无所了解,我到底是谁?什么又是我那?

《认识身体》是列在我预备书目自然科学类中的其中一本,这几天出差闲暇就时不时拿出来读一读。

书的作者加文•弗朗西斯是英国一位全科医生。全科已经很难得了,更难得的是这位医生用十年时间做环球旅行,而且还是《伦敦书评》、《卫报》与《纽约书评》的撰稿人。所以看他的书完全没有福尔马林的味道和手术器械碰撞出的冷冰冰的金属声,而像是看一本田野笔记,从病人说起,到引起病因器官组织的科学认识,再到治疗方案的历史演变,中间还穿插着历史上与此病相关的名人轶事,偶尔作者还会有趣的八卦一下。

例如在关于耳朵的一章,作者提到患有耳疾的博尔赫斯:

<<<
博尔赫斯的父亲久闻瑞士日内瓦的眼科享誉全球,于是他带着当时只有十几岁的儿子来治疗眼疾。那时正值1914年,第一次世界大战波及整个欧洲,而博尔赫斯一家人也被困在此地。根据伯格作品回忆,年少的博尔赫斯逐渐爱上了这座城市,他曾经在与一位风尘女子交往的过程中失去了童贞(博尔赫斯怀疑他的父亲也是这位女子的熟客)。1986年,他选择重回日内瓦并在此与世长辞。作为博尔赫斯的新婚妻子,玛丽亚·儿玉(Maria Kodama)女士陪伴他走过了人生最后的旅程。她曾经作为助理挽着博尔赫斯的双臂,协助他穿梭于迷宫般的阿根廷国家图书馆。
<<<

作者把博尔赫斯患有遗传性耳疾说明白也就罢了,结尾还不忘八卦一下父子风流事。

<<<
博尔赫斯并不认同莎士比亚作品中对于盲人黑暗世界的描述:根据他自身的感受,失明所带来的不是暗夜,而是深陷发出神秘绿光的浓雾。与之相反,博尔赫斯对于弥尔顿(Milton)作品中的细节刻画更为认同:弥尔顿在伏案撰写反抗君主的檄文过程中失明,随后只能在“漫无边际的黑夜中”伸开双手小心翼翼地摸索前行。
<<<

才之所至!作者不仅把病例说的明明白白,把身体构件解释的清清楚楚,还从历史和文学作品中纵向钩沉横向索引,把原本索然无趣的自然科学写的像人文作品。

在“头部”一章,当解释是什么引起了面部表情的变化时,作者结构了达·芬奇的名画《最后的晚餐》:

<<<
(达达·芬奇)并且在15年后将这些心得体会用于绘制《最后的晚餐》。其中导致安德烈前额皮肤紧皱的额肌被标记为“恐惧之肌”。此外,巴多罗买、彼得与老雅各布在眉宇间均表现出愤怒的咆哮,而造成这种结果的上唇鼻翼提肌被标记为“愤怒之肌”。
<<<

达·芬奇本身不仅是个画家、科学家,他还是一个医生。作者也少不了对其在医学上的贡献说明一番。

高冷的自然科学一旦和人文科学深度结合,会产生出一些美妙的结果,就像混血儿看起来总是很美。
时代悠忽而变,甚至您都感觉不到转变的颤动,转化已经完成。支付,已经完全脱离了现金交易;读书,已经不再手握厚厚的书本。就阅读而言,我已经有许多年不再看杂志了,纸质书这几年也看的少了,阅读已经完全电子化,甚至阅读纸质书已经有点不习惯了(主要是纸质书没办法把标记转化并同步到笔记进行整理)。这种遽然的变革,总体上是一种进步。事物都有两面性,技术的进步虽然带来了便捷和便利,形而上 --- 载体和呈现形式--- 发生了巨大的改变,然而不可避免的形而下 --- 内容和方法 --- 也发生着改变。内容,变得肤浅而媚俗;读书方法,碎片化信息阅读等同于读书(文本阅读),这些形而下的变化,在传统的思维框架下我是完全不能接受和认可的,但是我也不敢枉然臆断它就是错的,因为未来也许它就是主流,它的缺陷或不足有可能技术为之补齐,技术的发展往往就是这种路径。所以,一切的预测在当下都显得过时。

言归正传,说说出差期间看的这套书吧。

《天涯》杂志精选的这套四册本套装合集,如果没错猜错,有点对过往繁华时代的追忆和祭奠的意思,把杂志几十年积累的压箱底货都翻出来了,诚意有余,可读性不足。诚意有余,四册书,每册一个主题,不乏一些大家的早期作品;可读性不足,第一、四册虽然自成体系,然,作品青涩拙朴,有点像课堂作文(这可能和七八十年代那波作家的底子有关,他们的早期作品难免有点范式化,如:一提到冬天,就这样写:西伯利亚的冷空气。。。。。)。可圈可点的是第二三册,一册盘点了五十到九十年代各个时代的思潮和特征(这也是我选择读这套书的原因,像梳理一下[[中国百年思潮迭代和探究]],待补);另一册是名家短篇,可读性很强。
把[[《民国清流》|民国清流:那些远去的大师们]]四卷本看完,再接着看这本民国大佬自传 - 《国士无双》(蒋廷黻回忆录),浑然天成,毫无违和感。这都拜《民国清流》作者编年纪事之功,把民国主要人、事梳理妥帖。

蒋廷黻在《民国清流》中着墨并不多,个中原因可能与其属国民党序列有关,又或许蒋后期从政已不属清流之列。然蒋廷黻之于民国,及其在民国名人谱中的地位,不能一言以代之。

看传记类书籍从历史的角度有“第一视角”的“在现场”之感,这是看传记类作品首要功效。例如蒋廷黻在书中提到“九一八事变”之前,日本外相曾经给民国相关人士提出暗示性信息和提醒 --- 将有大事发生。这让我很吃惊。

> 一九三一年冬,有一位朋友告诉我,币原于那年夏天就曾要求当时中国驻日公使汪荣宝,回南京向政府报告。“报告你们政府,”币原说,“一个大事变就要发生了。除非中日双方政府谨慎处理,双方均将被毁。尽速和我来解决。但,我一定要占一些便宜。如果你的政府不肯让步,我的政府必然会垮台,而后任将较我更甚,会要求无厌。”
> 
> 整个七、八两个月,币原一直都急于寻求谈判的机会,而南京和东北方面都尽量设法避免。明了对方所使用的策略后,我不禁感到我们的政府措置失当。而且也越发使我相信日本民政党的政府是急欲将“九一八事变”地方化的。

除之,作为国民党高阶官员的蒋廷黻在关于共产党“长征”的描述也颇有意味:

> 为中共从江西流窜到延安是“长征”。“长征”一词具有英雄气概。即使他们的逃窜有几分英雄色彩,但是西方作家却不该忽略了他们的“长征”乃是中央军追剿的结果。其流窜一事就政治观点说有两点值得注意。第一,中央政府因为追剿共军而扩大了控制和影响区域,包括中国的西南部。第二,以西南为根据地,使中央能够对日长期抗战。

这样的看法和观点之前我是没有接触到或想到的,也只有当事者,执牛耳者才有此种论述。

看传记类书籍另一功效是了解他人思想和处事哲学。作为晚清科举时代最后的童生,蒋廷黻幼时系统的接受了中国传统教育,少年时机遇巧合留学西洋,学成归国之后先是大学任教,后被蒋介石赏识成为其幕僚。在民国官场,相对于割据军阀来草莽英雄说,蒋廷黻不可不谓之一清流,蒋介石之得力资政(蒋廷黻自称为“冯妇”)。就其“九一八”之后对日是和、战问题的看法,放在当下依然颇具意义。

蒋廷黻认为,当外交危机发生时,当国家处于危难时,不计后果的抵抗并不是最理想的选择,而适当的妥协,不失尊严的妥协,可以为有力量抵抗赢得时间。蒋廷黻依然不认为日本会对中国构成永久性的威胁。他相信时间对中国有利。因此,在“九一八”之后,蒋廷黻的主要想法就是要为中国争取时间。然而,蒋廷黻这种理性分析,在二十世纪三十年代初期的中国,很难获得知识界的认同。

真理大部分时间掌握在少数人手中。

假以时日,换在当下环境,蒋廷黻的这种观点也一定(同样)会被很多人攻讦为汉奸投降派。这是中国人尤以中国文人几百年不自信的“敏感”所致。

> 严复五四时期所预感的那样,中国人至少从宋代开始,只能言战,不能言和,否则就是奸细,就是投降。传统士大夫没有办法解决这个问题,即便对世界有相当了解的林则徐,面对不可战不必战也无法战的英国,也无法建议朝廷缓和局势,用谈判而不是用战争解决争端。当最后琦善不得不出此和策时,依然被视为卖国,视为罪人。所以在近代中国很长一段历史上,但凡遇到外族,只有喊打喊杀一条路,如道光年间的禁烟,咸丰年间的英法联军,同光年间的中法越南战争,光绪年间的伊犁问题、甲午之战,以及义和团战争。对于这些中外冲突,中国士大夫无不慷慨陈词,主张一战,主和者噤若寒蝉,大胆反对如许景澄、袁昶等,均付出生命代价。

除此之外,蒋廷黻关于“权利政府”的论述,也颇有玩味,发人深省,助人思考。

<<<
中国近二十年来没有一个差强人意的政府,也没有一个恶贯满盈的政府。极好极坏的政府都只在地方实现过,没在中央实现过。因为中央就是有意作好,它没有能力来全作好;中央就有意作恶,它也没有能力来作极恶。这二十年,从袁世凯到蒋介石,各种党派,各种人物,都当过政,大致都是如此。照我个人看起来,就是北洋军阀如袁、段、吴、张,都是想做好的,但是无了不得的成绩可言。因为他们的力量都付在对付政敌上去了。在对付政敌的时候,他们就不得不牺牲建设来养军,不得不只顾成败,不择手段。问题不是人的问题,是环境的问题。在这个环境里,无论是谁都做不出大好事来。中国基本的形式是:政权不统一,政府不得好。
<<<


<$appear show="more {{$:/core/images/chevron-right}}" hide="{{$:/core/images/chevron-left}} less">

这些年看了不少关于民国方面的书,对民国的印象依然是粗线条的、模糊的,与当下现实对比的错觉和虚假臆想的。历史没有绝对的真相,只能趋于真相,在宏观的想象下,一些具象的事实才能够对比说明问题。也许看传记是一条微观历史之路吧。

//民国印象参考:''这就是民国''(陈丹青,张鸣,贾樟柯,钱理群,张大春,关于民国演讲)(需翻墙)//

<iframe width="560" height="315" src="https://www.youtube.com/embed/Y-PxNnwYzUQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

</$appear>
什么事情,只要不想做,总能找出许多充分的借口来欺骗自己。而突破的关键节点,就在这再坚持一下的一念。

已经又看完两本书了,一直压着没有写读书笔记。实在不该,惶恐如也。

这本具有地摊文学之名 --- 《邻人之妻》---大谈性事的书,着实让人侧目。我不知道此书在美国流行是否与之有关,而我读进去之后,收获颇多。

之前看了不少田野调查笔记类书籍,例如《[[东北游记]]》、《[[我在现场:性社会学田野调查笔记]]》、《[[鱼·翅与花椒]]》,而这些书无一能与《邻人之妻》相比。《邻人之妻》作者特立斯花费数年时间参与所叙之事,不仅是一个观察者,更是其中一份子。回过头来看国内同类书籍,如《我在现场:性社会学田野调查笔记》,真是隔靴挠痒,把臆想当事实。《邻人之妻》的田野调查的写法堪称经典,用教科书级来形容之也不为过。

> 他也许确实将非虚构写作的触角延伸到了通常小说才可以到达的领域——人物的心理世界、人物的私生活等,但是在他能够真正“在这里”、真正与人共情之前,他离真正的文学也确实仍有一个拥抱的距离。

> 它既是一本包罗万象的社会历史百科全书,所涉及的领域包括出版、法律、宗教、家庭、自发组织的俱乐部等;也是一部错综复杂的非虚构文学作品,以细腻的笔法串联起了若干精彩而真实的故事;它更是出色的深度新闻报道,其对“参与观察”这种研究方法的极致运用,甚至可以对社会科学学科有所启示。

就像上个月看的科普类小书《[[认识身体]]》,	“书完全没有福尔马林的味道和手术器械碰撞出的冷冰冰的金属声”,作者加文•弗朗西斯不仅是英国一位全科医生,还是《纽约书评》等报纸的撰稿人。《邻人之妻》作者特立斯是名资深记者,《邻人之妻》不仅写出了虚构小说方有的文本结构,还有引人入胜的故事情节。虽然《邻人之妻》内容以性为主线索,甚至涉及多人性交等淫乱场面,但读的过程中你完全引起不了身体的任何化学作用。

<<imageSlider  [[http://one.rizi.me/Photos/rizime/Hugh-Hefner-Playboy-founder-at-his-mansion-Chicago-1966.jpg]]    "《花花公子》老板海夫纳和他的玩伴们-1966">>

《邻人之妻》内容上有美国一些真人、真事组成,每一个人和事都可以独立成为一个故事叙述,然而每一个人、事又彼此有关联和影响。所以作者就把这些人事打散,以时间的推移融合叙述。里面涉及一夜暴富的《花花公子》创始人海夫纳、创办裸体性自由社区的夫妻芭芭拉和威廉森、美国色情调查委员会,以及一些文艺作品《查泰莱夫人的情人》、《洛丽塔》等在美国的命运演变。通过这些人、事在每个时代的发生(起)、美国社会的反应、民间与政府的博弈,展现出美国今社会性观念的历史脉络。除此之外,我在其中还嗅到一股自由的味道,这在中国是最稀缺,最珍贵的。
由于对西方艺术的茫然无知,而又不想在短暂的一生中错过这些人类几千年积累的人类文明的重要组成部分,所以最近几年有目的的读、写、甚至探索性研究了不少西方艺术和艺术史。而这本由世界两大拍卖行之一的苏富比资深拍卖师写就的启蒙读物,看之前由衷的充满了厚望和期待。就苏富比占世界艺术品拍卖市场中的份额,有理由想象着此书会有诸多艺术品背后的诸多信息,如艺术家轶事、作品流转历史或拍卖生涯中的故事等。如果这些是你期待看到的,那这本书会让您很失望。诚如《苏富比的早餐》的副标题:职业拍卖大师写给你的艺术启蒙A-Z,整书三个部分的各个小节,分别围绕一个个短语展开,如:性、居住地、色彩等等。也许我并不关注一幅作品的商业价值 --- 我也买不起,我更在乎苏富比拍卖师眼中艺术品与常人的不同之处,以及艺术品何以成为价值不菲的商品的决定性因素。至于此书的启蒙属性,实不如《[[艺术的故事]]》呈上的饕餮大餐。
<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201810]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>

<$transclude mode="block" tiddler=booklogsinfo/>只有周末才有精力对一些阅读进行梳理,平时也只能在[[Twitter|https://twitter.com/coze]]上啁[zhōu]啾[jiū]两声。

《[[琅嬛文集]]》这本小书看了蛮久。这类书 --- 如《[[说文解字]]》、《[[资治通鉴]]》、《[[古文观止]]》、《[[史记]]》等文言精品 --- 我都是以年为单位做阅读计划,文言阅读本身障碍就多 --- 需要查阅许多字词意思,要吃透精品之所以精品的内涵更需要反复品读,所以读此类书不可一撮而就,徐徐而津逮。(见列[[文言津逮系列]])

张岱的这本《琅嬛文集》涵盖内容多而杂,虽然没有《[[陶庵梦忆]]》有名,但里面不乏一些妙趣横生的小品,这是张岱作品的一大特点。

<<<
他最突出的特点还是写作上的才能,他的主要成就也正在这里。他的学问并不怎样了不起,就文化素养来说,大约也不过是封建社会中等文士的水平;不过他的兴趣是很广泛的,平时非常注意社会上的各种人物、动态、人民生活、风俗习惯,以至食物、蔬果等许多方面,而且有加以欣赏、纪录的兴趣与勇气。这许多,往往正是旧时代的正宗文士所不屑一顾的。
<<<

正如其几百年来被无数人传为佳话的《自为墓志铭》,足以彰显张岱之真性情。一个没有趣味的人,其文章再好,总是显得干巴巴的。可真性情非装装样子就可以做到的,是其骨子里汩汩冒出来的可爱。一个可爱的人是那么让人嫉妒和羡慕,可这是学不来的。

{{2017年11月14日 下午 08:52:39}}

书中一段关于朋友之谊的话,张岱真写出了“一佛出世,二佛升天”的感觉:

<<<
昌黎云,世之欲久居人间而阅人代谢者,诚何心也。仁人之言,最为沉痛。枚(袁枚)故以一炷香默祷真宰,''不求老体康强,不求子孙富贵,只求春风去而复来,友朋散而仍聚。如世兄昆季,四十年骨肉之交,倘能一旦重逢,交欢尽意,便是成佛升天,极乐世界,又何必一鸳鸯抱一枝花耶。''
<<<


待续。。[[]]

<$transclude mode="block" tiddler=bookkeywords/>
《胡适谈读书与做人》这本小册子是胡适的杂文集,里面的文章大多在其他地方都读过,无甚新意,聊作拾遗。然而这本小册子的名字起的有点不好,谈读书适宜;谈做人,未必是胡适的风格。读了不少关于胡适的作品,胡适在民国诸家中属清流之砥柱,博学谦逊,低调内敛。我想胡大博士如果活着,也未必会做这种大言不惭的教人做人之事。

书摘:

<<<
读书无捷径,是没有什么简便省力的方法可言的。读书的习惯可分为三点:一是勤,二是慎,三是谦。

宋儒张载说:“读书先要会疑。于不疑处有疑,方是进矣。”他又说:“在可疑而不疑者,不曾学,学则须疑。”又说:“学贵心悟,守旧无功。” 宋儒程颐说:“学原于思。”

疑古的态度,简要言之,就是“宁可疑而错,不可信而错”十个字。

《诗序》曰:“情动于中而形诸言。言之不足,故嗟叹之。嗟叹之不足,故咏歌之。咏歌之不足,不知手之舞之,足之蹈之也。”

<<<
我很喜欢小品文,适合现代生活节奏,又不失信息和意义的传达。当然,与长篇或大部头比,大部头有大部头的优势,如果说大部头是大餐饕餮,那么小品文算是冷拼或者糕点。各有滋味,各有派场。小品文这两年看了不少,古代的从清朝前推已经看到明代,向后推只看了民国时期的。而现代或者当代是一个小品文缺失的时代,这与社会有关,人们缺失一味个人情趣,自然产生不了伤花悲月;虽然大多人背井离乡,但记忆中的故乡已经消失,自然也无伤离别思故乡的情绪;科技再发达资讯再汹涌,自由言论的土壤仍是石板一块,何谈针砭时弊“像匕首投向敌人”的檄文。不要说那些微信公众号博客之类的文章,我不否认个中却有佳品,但都不足以让人平心静气品读。

而短篇(小说)和小品文又有不同。胡适说:

> 短篇小说是用最经济的文学手段,描写事实中最精彩的一段,或一方面,而能使人充分满意的文章.......“最经济的文学手段”。形容“经济”两个字,最好是借用宋玉的话:“增之一分则太长,减之一分则太短;着粉则太白,施朱则太赤。”......因此,凡可以拉长演作章回小说的短篇,不是真正“短篇小说”;凡叙事不能畅尽,写情不能饱满的短篇,也不是真正“短篇小说”。

博尔赫斯以短篇享誉文坛,在中国的名头也很大,尤其在八九十年代,与写《百年孤独》的马尔克斯可称为“南美洲双雄”(我说的)。然而我读《博尔赫斯短篇小说集》却读出了《故事会》的感觉。我不知道这是对博尔赫斯大名头的亵渎,还是因为《故事会》在中国过分的被世俗化了。也许一篇好的短篇小说本身就应该具有“故事会”的体质,再加上文学的外衣以及文学之外(言外之意)意义的延伸,方具短篇小说名篇的气质。
互联网时代和中国高铁大交通战略虽然从空间上拉近了人和人以及人和他乡的距离,副作用就是加剧了感情维度的疏离。加之中国城市化进程大跃进式的推进,几千年来沉淀的乡村文化几乎荡然无存,旧文人笔下的幽幽离乡怀愁,对当代几乎多半身处他乡的人来说,是夜深人静梦醒时分无处寄托的惆怅。故乡已经沦陷,乡愁成了一种文艺表现。叶落归根成了几乎不可能实现的旧式田园理想。

前些年每逢春节结束,返乡回城的人们都会以各种方式表达家乡的蜕变和消失,甚至成为每年年后的固定社会热点。近些年这种集体性感叹少了许多,正在沦陷的已经沦陷,部分沦陷的已经是谁人故乡不沦陷。下一代,也可能从90后一代已经开始,故乡、乡愁之于他们仅仅是一个名词,一种没有记忆和温度的强说愁。

《一个村庄里的中国》正是在此大背景下,社会知识分子   熊培云 --- 之所以我称之为社会知识分子是因为起创办的理想国 --- 以自己老家 --- 江西小堡村 --- 为原型,通过记述自己家乡的变化透视中国乡村在当代社会发展过程中受到的冲击、蜕变和消亡。此书不仅是一种田野笔记式描述,作者对三农问题还做了一些纵向历史梳理和横向国际对比,以点带面的折射出中国农村存在的大缺陷和小问题。虽然此书是一本社会性农村记述文本,但作者在字里行间埋藏着强烈的情绪,有温馨、甜美,有指责、声讨,有悲愤、无奈。也许只有像作者这代人 --- 70年代 --- 才会发出这种声音和表现出如此浓烈的感情;也只有像作者一样从农村走出来的孩子才会从书中读出强烈的认同感,勾连出埋在心底多年的乡愁和悲凉。

唯一不足的是现在读此书有点过时,当下农村与作者7年前写此书时的情况有了非常多的变化。
混乱和无序往往蕴涵着丰富的的萌动和巨大的张力,就像黑夜给予点点萤火无上光明的荣誉。

人的成长成熟和衰老,就是化繁为简,万物归一的回归和轮回。

世界万物总归一物。—— 《牧羊少年奇幻之旅》

也许最近事务繁多,或许是心理年龄成熟的预兆。最近对一些“小书”读的很是上瘾,一周多读了三本“故事会”:《牧羊少年奇幻之旅》、《小王子》和《兔子的一万种死法》。与之前读的所谓的高大上的社科人文、晦涩的哲学历史书籍相比,这些故事类小书给予我的收获不亚于前者。除了读时沉浸式乐而忘忧的快感之外,这些“小书”霎那间把人带入另一天地:纯真、自然、善良和美丽,让纷扰和混乱变得可控和有序,让忧郁和不安幻化为快乐和祥和。心,变得明亮、透彻。也许这就是成年童话的魅力,赋予读者可以在次元中自由穿梭的能力。

假如毛姆所说的“[[阅读是一座随身携带的避难所]]”成立,那么我希望随身携带的书中一定要有一本成年童话。

<<tiddlerSliderNoButton 故事二则>>(点击展开)


<<<
恰恰是实现梦想的可能性,才使生活变得有趣。

“天命就是你一直期望去做的事情。人一旦步入青年时期,就知道什么是自己的天命了。在人生的这个阶段,一切都那么明朗,没有做不到的事情。人们敢于梦想,期待完成他们一生中喜欢做的一切事情。但是,随着时光的流逝,一股神秘的力量开始企图证明,根本不可能实现天命。”

因为在这个星球上,存在一个伟大的真理:不论你是谁,不论你做什么,当你渴望得到某种东西时,最终一定能够得到,因为这愿望来自宇宙的灵魂。那就是你在世间的使命。”

“因为我既不生活在过去,也不生活在未来,我只有现在,它才是我感兴趣的。如果你能永远停留在现在,那你将是最幸福的人。你会发现沙漠里有生命,发现天空中有星星,发现士兵们打仗是因为战争是人类生活的一部分。生活就是一个节日,是一场盛大的庆典。因为生活永远是,也仅仅是我们现在经历的这一刻。”

当一个人在追寻自己的天命时,整个宇宙都会合力助他实现愿望。

“我靠给人家预测未来为生。”他说,“我熟悉掷签的门道,知道如何运用它探知一切均已写就的未来空间。在那里,我能够阅读过去,发现已被遗忘的东西,并理解当前的预兆。当人们来找我占卜的时候,我不是阅读未来,而是卜算未来。因为未来属于真主管辖,只有在特殊情况下,他才会揭示。我卜算未来的方式,是通过当前的预兆。秘密就在当前。如果关注现在,你就能改善它。如果改善了现在,那么,将来也会变得更好。忘掉未来吧,你要按照教义过好每一天,相信真主会护佑他的子民。每一天里都蕴含着永恒。”

害怕遭受痛苦比遭受痛苦本身还要糟糕。

没有任何一颗心在追求梦想的时候感到痛苦,因为追寻过程的每一刻,都与上帝和永恒同在。

“世上每个人都有一份等待他去发掘的宝藏。”他的心说道,“而我们心,往往很少提及那些财宝,因为人们已不再想要找到它们。我们只对孩子谈及财宝,然后让生命将每个人纳入其天命的轨道。然而,遗憾的是,很少有人沿着预定的道路,也就是通往天命之路,通往幸福之路前进。人们把世界看作一个威胁,正因如此,世界才变成了一个威胁。于是,我们心发出的声音越来越微弱,但我们绝不会住口。我们退让,不再让人们听到我们的话语,因为我们不愿让人们由于不服从心声而遭受痛苦。”

每个人的寻梦过程都是以‘新手的运气’为开端,又总是以‘对远征者的考验’收尾。”

夜色之浓,莫过于黎明前的黑暗。
<<<
<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201811]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



一个有趣的人一定是个博物学家,但博物学家不一定有趣。

之前我一直羡慕拥有一颗有趣灵魂的人,所以在选书的时候有意挑选了一些博物学书籍,加之平时尤爱植物,植物学书籍今年就成为我书架上的座上宾。此类优秀书籍并不多,国产尤甚。

您知道植物的命名法吗?
一株植物之所以叫此而非彼的缘由是什么?
植物名字背后的故事是什么?

《植物名字的故事》这本书就是回答此类问题的。作者刘夙,百度百科词条是这样写的:

<<<
2004年本科毕业于北京大学化学与分子工程学院。2007年毕业于北京大学历史学系,获硕士学位。现为中国科学院植物研究所博士研究生。研究方向为植物学文献和植物学史。
<<<

刘夙算是一位专业学者型业余科普作家,这和之前看的《[[认识身体]]》作者加文•弗朗西斯(他是一名全科医生)有点像,都是自然科学界专业人士,业余笔耕不辍。不过刘夙的文笔没有弗朗西斯有趣,视野也没有后者广博。这并不妨碍一名植物学业余爱好者读刘夙的这本书,虽然书的后半部分一些章节有凑数之嫌,而前半部分关于植物之命名与中国社会历史的结合论述还是很有意思的,见微知著,非专业人士而不能窥之探之。当然,书中也有部分生活植物学知识,如:


<<<
其实,哪怕是去一趟超市,我们也能看到被称作“蛇果”的苹果、称作“奇异果”的猕猴桃、称作“提子”的葡萄、称作“车厘子”的樱桃、称作“碧根果”的美国山核桃。当有些人一本正经地分辩说“提子不是葡萄”的时候,我们便再次看到给熟悉的事物另起陌生的名字所造成的巨大威力。

林奈对大多数植物都采用了“双名法”的命名方式。所谓“双名法”,就是用两个词来为植物命名,第一个词叫做“属名”,首字母要大写,可以视为植物的“姓”;第二个词叫做“种加词”,首字母通常都小写,可以视为植物的“名”。

荷花的地下根状茎叫“藕”,植株出水之后叫“芰(jì)荷”,叶柄叫“茄(jiā)”,叶片叫“葭(xiá)”,未开的花苞叫“菡萏(hàn dàn)”,已开的花又叫“芙蓉”或“芙蕖(qú)”,结的种子叫“莲”……
<<<
与时间赛跑。

赶在2019年到来前再读上几本书吧。

异域周末的阳光洒在酒店安逸的床下沙发上,一口气,准确的说是一气呵成的,消灭了两本书。当然,这两本书我都是以快读法速览—— 摘取自己感兴趣的部分,跳过看似无用的部分。

''《植物的记忆与藏书乐》''

我是被他的书名蛊惑而收入囊中的。由于最近对植物学感兴趣,所以书名中“植物的记忆”一下子击中了我,而植物的记忆与藏书又有何联系?当然,关于“书之书”这个主题我也是非常感兴趣的。
速览之后,方知《植物的记忆与藏书乐》是“书之书”。作者艾柯是一位享誉世界的意大利学者、中世纪学家、符号学家、作家与藏书家。艾柯个人藏书超过三万册,散布在各地的家中,其中有超过一千两百册珍本。本书即为艾柯关于爱书、藏书的演讲稿和短文集。我只读了前半部分 — — 书籍是人类的记忆和爱书、藏书区别,后大部分是关于西方一些稀有珍品书籍的收藏轶事 — — 我估计一辈子都不会碰一下这些西方中世纪书籍 — —所以都一一跳过了。 

至于书名为何为“植物的记忆”,作者诚恳的解释了非故弄玄虚,实为:

> 博尔赫斯笔下博闻强识的富内斯和部落老人篝火旁的娓娓道来,我们称之为肉身的记忆;石洞壁上的楔形文字和哥特教堂矗立的尖顶,我们称之为矿石的记忆;然而散发出最浓郁的知识芬芳和铭刻下最隽永的历史选择的却是纸张书籍上的文字,我们把这种最美好的形态称作植物的记忆。

书中艾柯对书籍文本的概念作了解释,什么是文本?什么是类文本?什么是内文本?什么是外文本?

> 用简单的话说,一本作为载体的书(就是由纸张作为材料制成的物质实体)上面出现的是文本,我们以《约婚夫妇》为例,它的开头是“科莫湖的一条支流”,最后一句话是“那请相信,这实在不是我们的本意”,那么类文本就是指文本之前、之后和周围的东西(通常情况下是印刷形式的,但是也不能排除其他表现方式——在今天可能是附带的光盘)。 内文本指的是与作为载体的书相关的所有物质实体,如扉页、版权页、引言、献辞、前言、后序、勒口、书籍装帧或者护封,等等;而外文本则是书籍之外但是又直接跟它相关的东西,比如新闻报道、预览、书评,还有——用英语能够更好地解释意大利语所无法区分的东西——既包括advertising(广告)也包括publicity(宣传),也就是出版社设法为本书营造的“轰动效应”,比如对于作者的访谈,其他作家的看法和争论,甚至是筹备作品发布会以及研讨会。

而在说明书籍之与人类的意义时,艾柯引用了不少典故和说出许多“金句”,蛮有启发意义。


<<<
但是正如最绝对的噪音与宁静之间只是一线之隔,信息的过于充实可能引起绝对的无知。//(我们现在这个信息时代就是这样,信息充斥,无知剧增。)//
<<<


<<<瓦伦蒂诺·蓬皮亚尼曾经以“一个阅读的人相当于两个人”来作为自己的出版口号。//(读书即为读者与作者的对话。)//
<<<

<<<书籍是为生命买的保险,是为得到永生的一小笔预付款。//(这句话真好,用时下的话说:读书是为信仰充值。)//
<<<

<<<那些破坏、监察、禁止书籍的人让人感到恐惧:因为他们想要破坏或者监察的是我们的记忆。当发觉书籍太多已经难以摧毁,植物记忆的威胁持续蔓延的时候,他们就转而消灭“动物记忆”,即人类的思维和身体。开始的时候总是从书籍下手,但紧接着毒气室的大门就打开了。//(虽然作者暗指纳粹行径,时下一些过分的出版和言论审查制度和行为何不是如此啊。我们单纯想到的是审查,实际上是为了干涉、破坏和摧毁我们的记忆,多么悲哀和恐怖!)//
<<<

<<<我们需要跟那些把书藏起来的人战斗,因为他们和蛀虫一样危险。我们不会使用齐克隆毒气,但是要动用适当的政治和文化手段。必须清楚他们是我们集体记忆的敌人。
<<<

<<<
维克托·雨果在他的《巴黎圣母院》中描绘了发生在副主教福罗诺和法国国王的御医之间的一个场景。 福罗诺 一面打开窗子,一面用手指着巨大的圣母院教堂,它那两座尖塔在满是星星的夜空衬托下,留下黑黑的轮廓,就好像是一个有两个脑袋的斯芬克斯坐在城市中央。副主教静静地观看了一会儿这座巨大的教堂,接着叹了口气,伸出右手指着那本在桌子上展开的印刷书籍,左手指着圣母院,他那忧郁的眼神从书本移到了教堂,说:“哎,这个将会杀死那个!”//(书籍出现时对既有知识延续体系和掌握者的冲击)//
<<<

最后,我用艾柯书中的一句话,与不爱看书的人共勉:

<<<如果读书的经历仍然让你们感到恐惧的话,不要害怕,开始在厕所里读书吧。你们会发现自己也有读书的热忱。
<<<
我有点厌烦了在年终这个点写什么回顾和展望。就像小时候邻居大哥家每年春节大门上年复一年不变的对联横批“又一年”,长大后我才体会到这三个字背后的无声叹息。

可我还是在岁末这最后一天打开了电脑,想写点什么,其实就是想单纯的留下点痕迹 --- 什么都可以,有点到此一游的恶习 --- 习惯了记录。只从进入了互联网时代,我把所有的文本表达都存了一个秘密的地方 --- 也许有一天会交给我的孩子。只言片语也好,长篇大论也罢,每个时间节点都可以回溯,虽然已经记不起了那时候都情绪,但是透过文字我可以拣回部分场景。看看去年今日吧:
<$vars tid="2017's Journal"> 
<$appear show="<$text text=<<tid>>/>" $state="tiddler-slider" mode="block">
<$transclude mode="block" tiddler=<<tid>>/>
</$appear>
</$vars> :

<$details summary="2017年的今天" state="$:/state/myDetailsStateTiddler_2##details-state">

{{2017年读书回顾和2018年读书计划}}

</$details>

如是,年年如斯。愿望和计划的大部分业已完成,这是常规人生 --- 活着,这不重要。<$details tiddler="2018读书目录">
{{2018读书目录}}
</$details>
<$details summary="2018年读书日志" tiddler="DetailsWidget" field="caption" class="notification" state="myTempState!!last-open">

{{2018年读书日志}}

</$details>

已读多少书不重要,重要的是那些未读之书。

同样,完成了那些计划不重要,重要的是未完成部分。未完成部分是顽疾,也是临界点;是撬动希望(也可能是欲望)的杠杆短的那一段。此越短,撬动的希望越大。

那么如何跨越这个临界点?

无它!

一,拓宽边界。如果计划已完成部分是个⭕️,已完成部分越多,未知边界越大。[[牧羊少年奇幻之旅]]里面有一句话:世间万物为一物。万物背后的规律事实都是一样的,或者说是相似想通的。未知边界的拓展,就是打通万物的唯一通道,虽多,但终究归一。

二,认清支点。什么时候万物归一,成就大智慧,决定于这个临界点,就是杠杆下面但支点 @@color:red;''▲''@@。那么这个支点是什么? 我还没有弄清楚,存照,待续。<<tag Task>>

如果说以上是对2019年的期待或者计划要解决的事项之一,那么2019年还有一些更重要的事情需要认真对待:对时间的掌控。

世间没有什么比时间更不值钱的了,也没有什么比时间更无价的了。有价和无价,就在于您怎么利用时间。之于我,分秒必争!

一,生活和工作剥离。我打个世俗比方,工作就像长河淘金,生活就像怀揣金子消费。如果工作和生活搅和在一起,一边在毒太阳下汗流浃背的筛沙淘金,一边听着音乐还喝着咖啡,那么工作和生活的质量都要打对折。所以,严格把生活和工作分开,工作时专心致志;生活时,闲情逸致。

二,生活和网络剥离。当下虽然离不开网络(互联网),但不要让互联网浸入生活,控制生活。网络是工具,不能耽物废志,用完即弃。

我计划2019年要读的第一本书是《[[黑天鹅]]》 --- 如何应对不可预知的未来?2018年已寒意逼人,渐显萧瑟。2019年有可能更加寒冷,低迷消沉。2019年不仅仅是黑天鹅<<ref "[1]">>,灰犀牛������<<ref "[2]">>也可能随时杀出,在这种充满未知而已寒意逼人的环境,如何活着并砥砺前行是需要更多的付出和智慧。但愿:

<<<
    待到秋来九月八,我花开后百花杀。

    冲天香阵透长安,满城尽带黄金甲。
<<<

如果用一句话寄语2019年,我想应该是:

<<<
Create like a god.

Command like a king.

Work like a slave.
<<<


-- -- --

@@color:gray;<i class="fa fa fa-info-circle fa-3x fa-pull-left "></i>@@ 
<<footnotes "[1]" "简而言之,“黑天鹅”指具有此三个特性的事件:稀有性、极大的冲击性和事后可预测。见 [[黑天鹅]] 。">>

<<footnotes "[2]" "灰犀牛是据古根海姆学者奖获得者米歇尔·渥克的《灰犀牛:如何应对大概率危机》一书,“黑天鹅”比喻小概率而影响巨大的事件,而“灰犀牛”则比喻大概率且影响巨大的潜在危机。">>
<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201812]]"> 


<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>

<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201801]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>




<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201802]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201803]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201804]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201805]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>


<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201806]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201807]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>
<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201808]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>

<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201809]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>


<<tabs "[[2018年12月日志]] [[2018年11月日志]] [[2018年10月日志]] [[2018年9月日志]] [[2018年8月日志]] [[2018年7月日志]] [[2018年6月日志]] [[2018年5月日志]] [[2018年4月日志]] [[2018年3月日志]] [[2018年2月日志]] [[2018年1月日志]] [[2018读书目录]]"default:"Most Recent Journal" class:"tc-vertical">>
"""
2019年1月2日 提前安排阅读这本书应景
1. 《[[黑天鹅]]》如何应对不可预知的未来@@color:green;^^★^^ @@

2019年1月3日 新年无新事
2.《[[卡夫卡小说全集]]》@@color:green;^^★^^ @@
3.《[[不成问题的问题]]》

2019年1月14日 错把异乡当故乡
4. 《[[对赌]]》

2019年1月18日 回京
5. 《[[控制论与科学方法论]]》

2019年1月26日 放假
6.《[[香水]]》@@color:green;^^★^^ @@

2019年1月29日 春节囤书
7.《[[尼采的锤子]]》
8.《[[我读:温一壶月光下酒]]》(1-7本)

2019年2月2日 腊月二十八
14.《[[混乱:如何成为失控时代的掌控者]]》
15.《[[红书]]》

2019年2月4日 年三十
16.《[[寻圣光的人]]》

2019年2月5日 大年初一
17.《[[杂草的故事]]》

2019年2月6日 大年初二
18.《[[耕种 食物 爱情]]》

2019年2月8日 大年初四
19.《[[为生命而阅读]]》

2019年2月9日 大年初五
20.《[[名著之前言与序言]]》@@color:green;^^★^^ @@

2019年2月10日 大年初六 “且借纸遁”生活结束
21.《[[且借纸遁]]》(下)

2019年3月26日 一波三折
22.《[[植物学通信]]》 

2019年4月5日 清明艳阳天
23. 《[[50:伟大的短篇小说们]]》@@color:green;^^★^^ @@

2019年4月11日 要变天
24. 《[[清官册]]》高阳

2019年5月1日 节日恐惧症
25. 《[[毒木圣经]]》
26. 《[[白鲸]]》@@color:green;^^★^^ @@

2019年5月3日 房间里的旅行
27. 《[[大自然的社交网络]]》@@color:green;^^★^^ @@

2019年5月5日 孤单的房间
28. 《[[世界顶级思维]]》
~~29. 《[[地理学与生活]]》~~

2019年5月9日 煎熬
30. 《[[博物人生]]》

2019年5月15日 等待的日子很煎熬
31. 《[[笑林广记]]》再读

2019年5月21日 茫然
32. 《[[修改过程]]》

2019年5月23日 茫然
33. 《[[我书架上的神明续编]]》再读

2019年5月25日 茫然
34. 《[[正念的奇迹]]》五台山前夜

2019年5月29日 消失在无形中
35. 《[[蝇王]]》

2019年6月6日 煎熬
36. 《[[次第花开]]》

2019年6月7日 又到假期
37. 《[[那些书和那些人]]》

2019年6月8日 假期
38. 《[[荣枯鉴]]》

2019年6月18日 Nothing
39. 《[[艽野尘梦]]》@@color:green;^^★^^ @@

2019年6月23日 Nothing 酷暑
40. 《[[两般秋雨盦随笔]]》
41. 《[[青楼集]]》

2019年6月28日 Nothing 酷暑
42. 《[[幽梦影]]》

2019年7月1日 Nothing 下半年
43. 《[[萤窗异草]]》

2019年7月3日 Nothing 
44. 《[[念楼学短]]》@@color:green;^^★^^ @@
45. 《读库》1703

2019年7月7日 Nothing 
46. 《我读》3-7

2019年7月9日 Nothing 
47. 《[[七十年代]]》@@color:green;^^★^^ @@
43.《[[萤窗清玩]]》

2019年7月14日 Nothing 
44. 《[[快速阅读]]》

2019年7月16日 Nothing 
45. 《[[古今传记文学精粹-金元明篇]]》

2019年7月17日 Nothing 
46. 《[[5G时代]]》

2019年7月21日 Nothing 
47. 《[[好色的哈姆莱特]]》 @@color:green;^^★^^ @@

2019年7月27日 Nothing 
48. 《[[船山遗书]]》 

2019年7月30日 Nothing 
49. 《[[古今名家文集-宋代]]》 (宋代篇)上

2019年8月7日 Nothing 
50. 《[[宫女谈往录]]》
51. 《[[洛阳伽蓝记]]》@@color:green;^^★^^ @@

2019年8月8日 Nothing 
52. 《[[太监谈往录]]》

2019年8月11日 入秋 
53. 《[[色情]]》

2019年8月14日  
54. 《[[明清社会性爱风气]]》

2019年8月16日 
55. 《[[容忍与自由]]》

2019年8月17日 
56. 《[[雪晴集]]》

2019年8月20日 
57. 《[[中国哲学史大纲]]》

2019年8月30日 
58. 《[[八十年代访谈录]]》@@color:green;^^★^^ @@

2019年9月2日 
59. 《[[森林的奇妙旅行]]》

2019年9月10日  
60. 《[[社会工程:安全体系中的人性漏洞]]》

2019年9月14日  中秋
61. 《[[社会工程:解读肢体语言]]》

2019年9月19日  
62. 《[[脑与阅读]]》

2019年9月23日  
63. 《[[无父无夫的国度?]]》

2019年9月25日  
64. 《[[朱元璋传]]》

2019年9月27日  
65. 《[[王氏之死]]》

2019年9月28日  
66. 《[[泥土:文明的侵蚀]]》

2019年9月30日  国庆小长假
67. 《[[局外人]]》@@color:green;^^★^^ @@

2019年10月1日  
68. 《[[植物知道生命的答案]]》@@color:green;^^★^^ @@

2019年10月3日  
69. 《[[种子的胜利]]》

2019年10月4日  
70. 《[[荒原狼]]》 @@color:green;^^★^^ @@

2019年10月5日  
~~71. 《[[瓮葬]]》~~

2019年10月6日  
72. 《[[悉达多]]》 @@color:green;^^★^^ @@

2019年10月7日  国庆小长假
73. 《[[带着鲑鱼去旅行]]》

2019年10月9日 
74. 《[[拙匠随笔]]》

2019年10月19日 
75. 《[[小黑书第二辑]]》@@color:green;^^★^^@@

2019年10月22日 
76. 《[[向死而生]]》

2019年10月25日 
77. 《[[枕边书]]》

2019年10月28日 
78. 《[[白牙]]》@@color:green;^^★^^ @@

2019年11月3日 
79. 《[[昆虫记]]》@@color:green;^^★^^ @@
80. 《[[法布尔植物记]]》

2019年11月6日 
81. 《[[怪谈·奇谭]]》

2019年11月7日 
82. 《[[高效人士的七个习惯]]》

2019年11月11日 
83. 《[[野性的呼唤]]》

2019年11月15日 
~~84. 《[[卡瓦利与克雷的神奇冒险]]》~~

2019年11月16日 
85. 《[[被讨厌的勇气]]》@@color:green;^^★^^ @@

2019年11月20日 
86. 《[[你当像鸟飞往你的山]]》(Educated)@@color:green;^^★^^ @@

2019年11月26日 
87. 《[[永久记录]]》

2019年11月30日 
88. 《[[那些完美的读书地方]]》

2019年12月2日 
89. 《[[植物学]]》
90. 《[[我在底层生活]]》

2019年12月10日 
91. 《[[基列家书]]》

2019年12月13日 
92. 《[[易经杂说]]》

2019年12月17日 
93. 《[[发现的乐趣]]》

2019年12月19日 
94. 《[[大灭绝时代]]》

2019年12月21日 
95. 《[[消失的微生物]]》

2019年12月22日 
96. 《[[老味道]]》

2019年12月24日 
97. 《[[纳博科夫短篇小说全集]]》

2019年12月27日 
98. 《[[读书指南]]》

2019年12月29日 
99. 《[[如是我读]]》

2019年12月30日 
100. 《[[访古寻城]]》 

2019年12月13日 
101. 《[[为人民服务]]》 阎连科

2019年12月16日 
102. 《[[水的密码]]》  

2019年12月20日 
103. 《[[民国语文]]》 

2019年12月22日 
104. 《[[如何记忆]]》 

2019年12月26日 
105. 《[[书店]]》

2019年12月28日 
106. 《[[园圃之乐]]》

2019年12月29日 
107. 《[[如何阅读世界经典]]》

2019年12月30日 
108. 《[[野果]]》

"""
--

[[正读]] | [[想读]] | [[2021读书目录]]  | [[2020读书目录]] |  [[2018读书目录]] | [[2017读书目录]] | [[2016读书目录]] | [[图书检索|Book List]] | [[读书日志|Reading Logs]] |[[Λ-Reading]]

//注: 标 @@color:green;^^★^^ @@符号的为推荐阅读书目//

<$button message="tm-close-tiddler">Close Me!</$button>
去年看了两本关于二战时期迫害犹太人的书,《偷书贼》和《[[奥斯维辛的小图书馆员]]》。《偷书贼》属于虚构类小说,《[[奥斯维辛的小图书馆员]]》是非虚构类小说,两本书都和童年以及书籍有关,但书写视角完全不同。《[[奥斯维辛的小图书馆员]]》记述了奥斯维辛集中营中犹太小女孩保护书籍的故事;《偷书贼》描写的确是纳粹德国一名小女孩藏匿并保护犹太人的故事。两本书都以书籍为线,把人、事、物串起来,然后又以书为载体记录下二战高压环境下人类的善恶。虽然《偷书贼》名气比较大,但是我建议把这两本书当作姊妹篇来读。

书之于童年的意义是打开了一扇通向世界的门,插上一对想象的翅膀。

书之于战争时代童年的意义是一座避难所。

《偷书贼》里的小女孩总共有14本书 --- 比《[[奥斯维辛的小图书馆员]]》里的小女孩多6本。她的第一本书确是在埋葬死去的弟弟时候在墓地里捡到的 ---《掘墓人手册》 --- 墓地挖墓人操作指南。正是由于这本书,小女孩在养父的帮助下逐渐开始了识字,通过不断的“窃书”,叩响了阅读的门。

<<<
她偷了第一本书后,又隔了一段时间才偷第二本书。需要指出的第二点是:第一本书是从雪地里偷来的,而第二本书是从火里偷出来的。还有一点不可否认,有些书是别人送给她的。她总共有十四本书,不过在她看来,她的写作主要是受到其中十本书的影响。这十本书里有六本是偷来的。另外四本中,一本是在厨房餐桌上捡到的,两本是躲在她家的犹太人给她写的,还有一本是在一个阳光普照、温暖宜人的下午来到她手上的。
<<<

其中一段描写小女孩溜进镇长家书房偷书看的情节让我印象深刻。没有见过几本书的孩子一下子看那么多书,好像进入了一座梦幻的美丽宫殿,欣喜,而又不知所措。

<<<
这间屋子不断缩小,小到偷书贼能够触摸得到离她几步之遥的书架。她用手背触碰着第一个书架,聆听着指甲划过每本书的书脊的声音,听上去就像一件乐器在演奏,或是一阵奔跑的脚步声。她的两只手都派上了用场,不停地抚摸着书架,一个接着一个。她笑起来,笑声远远地传了出去。最后,她停下来,站在屋子中央,一会儿看看书架,一会儿又瞧瞧自己的手指。 她摸到了多少本书呢? 她感受到了多少本书呢? 她来来回回走动着,重复着刚才的举动。这一次要更慢一些,而且她把手向前伸,用手掌心抚摸着每本书的书脊,那种感觉很不真实,是魔术,是梦幻,是枝形吊灯上洒下的点点光芒。有几次她差点抽一本书出来,可她还是不敢打扰它们,它们真是太完美了。
<<<

书的最后一句话:

<<<
人类真是不可捉摸!
<<<

//相关阅读://

<$details summary="《奥斯维辛的小图书馆员》" field="text" class="notification">

{{奥斯维辛的小图书馆员}}

</$details>
《白鲸》讲的是一位捕鲸船的船长,因为他年轻出海时,被一条巨大的白鲸咬掉了一条腿,为了复仇,所以他航遍世界各大洋,只为寻找这条叫做摩比·迪克(Moby Dick)的巨鲸。而且他一口咬定这只巨鲸是恶魔的化身,是人类最大的敌人,必须除之而后快。因此他用这种说法,鼓动他的船员们和他一起猎杀这条白鲸。可以说,船长有一股奇特的魅力,才能说服其他人来帮助他。 不知大家是否想过,人类是活在陆地上的,而白鲸生存于大海中。船长是人,只要他好好地待在陆地上,白鲸又如何能够加害于他呢?也就是说,如果人类没有妄想征服大海或掌控自然,如果不是对大自然如此不尊重和不懂得谦卑,又怎会遭受严重的反击。可是这船长却偏要四处寻找这条白鲸,他把白鲸形容为恶魔也是故意的,只是要制造假想敌,目的就是在号召其他人,让所有的人都相信他的话,来为他卖命。 到最后,他的船因为和白鲸对抗,沉没了,所有跟随他的船员们也跟着一起葬身海底,船长本人当然死了,只剩下一个人存活下来,因为有最后的幸存者,才说出了这件事发生的始末。船长是为了复仇,但那些跟随船长去杀白鲸的水手,又是为了什么呢?恐怕他们自己也不太明白。
影像阅读和文本阅读的不同是后者多了一个思维想象延伸的维度,当然从技术层面讲,影像本身属于二度传播,信息筛选和传递衰减是难免的,加之影像技术本身的局限和使用者手法的拙劣,都是文本阅读不可替代。

电影《香水》几年前已经看过,印象深刻。近日再看文本版《香水》,震撼有加。聚斯金德创作《香水》的灵感来之于法国图尔大学教授阿兰·科尔班的历史著作《致命的气体与花的芳香——气味的历史》,其把法国的历史说成是无法形容的臭气史,把十八、十九世纪的巴黎视为欧洲各种污秽的都会,这就是《小说》主人公 --- 格雷诺耶 --- 诞生的大背景。就《香水》作品本身而言,写作方式并无新奇,甚至可以说有点朴素或呆板,深究之,方知乃是被一些写作者抛弃的传统的现实主义叙述手法。但这并不碍于作品的伟大,相反这种大巧若拙的写法更彰显了作品故事的流畅和魔幻色彩。就像《香水》一开始就紧紧抓住读者的注意力一样:

> 十八世纪,在法国曾出现过一个人。那时代人才辈出,也不乏天才和残暴的人物。此人便是最有天才和最残暴的人物之一。这儿要讲的就是这个人的故事。他名叫让–巴蒂斯特·格雷诺耶。

而第三人称的故事叙事方法,恰像上帝的视角,一览无余的展现了主人公的卑微和“伟大”。

> 畸形,使他走起路来拖拖沓沓,可是他活着。他像有抵抗力的细菌那样顽强,像只扁虱那样易于满足,它安静地停在树上,靠着它在几年前获得的一小滴血维持生活。
> 
> 他的灵魂不需要任何东西。受人庇护、关照和抚爱——或者说一个小孩所需要的全部东西——对于童年的格雷诺耶来说,是完全不需要的。更确切地说,我们觉得,他之所以一开始就养成不需要这些东西,其目的是为了生存下去。

文本阅读超越影像阅读的伟大之处除了读者的想象空间之外,读者可以超越文本和故事看到故事之外作者传达的深意。整个《香水》故事里的人物,无不处在宿命论的结局,甚至整个故事变成了宿命论的一个注脚。从主人公多次堕胎夭折的母亲被处于绞刑,孤儿院院长悲哀一生而绝望的死,皮革工厂老板乐极生悲醉酒溺水而亡,香水制造商得意忘形与屋俱毁,市政要员走火入魔的消失,监邢主教及民众意乱情迷,到主人公卑微的生自我毁灭性的死,人物递次在上演宿命的悲剧。

无论是文本还是影像,结尾处的高潮部分,都是那么的震撼,也充满了人性的悲哀。在这里你可以看到鲁迅笔下的“人血馒头”场面,也可以读出狄更斯写给《泰晤士报》的信中对绞刑架旁无情看客的歇斯底里的愤怒。[[见此|https://zhuanlan.zhihu.com/p/55412842]]

> 在此期间,行刑地点林阴大道已经准备就绪。木匠造了个断头台,三米见方,两米高,有栏杆和一道牢固的梯子——在格拉斯,人们还没有见过这么漂亮的断头台。另外还用木头搭了看台供绅士们使用,有一道栅栏可以把他们同普通老百姓隔开。林阴大道门左右两侧房屋和警卫楼里的靠窗位置早就以高昂的价钱租出了。甚至在位置稍偏的医院里,行刑官的助手已经从病人那里租到房间,然后再高价转租给看客。果汁汽水销售商配制了一桶桶甘草水作为储备,铜版雕刻家印制了成百上千张他在牢里画的并经过幻想加工更有吸引力的凶手画像,流动商贩成群结队流入城市,面包师傅烘制了纪念性的糕点。
> 
> 市民们像准备盛大节日一样做了准备。行刑当天,人们用不着干活,这是不言而喻的。妇女们熨平节日的衣服,男人们刷干净自己的外衣,让人把靴子擦得亮亮的。谁有军衔或官衔,谁是行会头头、律师、公证人、兄弟会头头或是其他重要人物,他就穿上制服或官服,佩带勋章、绶带、金链,头上戴着扑了白粉的假发。教徒们打算事后聚集起来举行礼拜,信鬼的人准备举行恶毒的祭鬼弥撒,有教养的贵族打算在“卡布里什饭店”、“维尔纳夫饭店”和“丰米歇尔饭店”里举行别开生面的集会。厨房里已经在烘呀烤的,人们从地窖里取出葡萄酒,从市场上买来鲜花。在大教堂里,管风琴师和教堂唱诗班在排练。
> 
> 四点,看台上挤满了人。台上有许多上流人物,有带着仆从、仪态高雅的富翁,有漂亮的女士,大礼帽和闪亮的衣服令人赞叹。城乡贵族全都来了。参议院的老爷们由两个参议领头,排成一列来了。里希斯穿着黑色衣服、黑色袜子,戴着黑色礼帽。跟在参议后面的,是在法院院长率领下的市政府官员。最后来到的是坐在敞篷轿子里的主教,他穿着闪闪发光的紫色法衣,戴着一顶小礼帽。谁头上还戴着帽子,这时赶紧把帽子脱下来。气氛庄严肃穆。
> 
> 所有人都认为那个穿着蓝色外衣的男子是他们所能想象的最美丽、最迷人和最完美的人:修女们觉得他是救世主的化身,魔王的信徒把他看成是冥界的放射光芒之神,开明人士认为他是最高的主宰,少女们相信他就是童话中的王子,而男人们以为他就是自己的理想的映象。
> 
> 处决那个时代的最可恶的罪犯的计划变成了盛大的酒神节,其盛况是自从公元前二世纪以来世上绝无仅有的:品行端庄的妇女们撕开自己的胸衣,在歇斯底里的叫喊声中裸露她们的乳房,裙子向上提起,倒在地上。男人们带着迷惘的目光,跌跌撞撞地在躺着裸露肉体的地面上行走。他们用颤抖的手指把他们像被无形的霜冻僵的生殖器从裤子里掏出来,唉声叹气地倒向某处,以极为罕见的姿势和配对方式交媾,老头和少女、雇工和律师夫人、学徒和修女、耶稣会会员和共济会女会员,情况乱七八糟,空气中弥漫着沉重的情欲的甜蜜气味,充满着一万个兽人高声的叫喊、嘟哝和叹息,简直和地狱一样。

相关:[[电影《香水》在线观看|http://ddrk.me/perfume-2006/]]



最近看的多,写的少。大脑已经进入了春天,而身体似乎还在冬眠。这和身体的记忆规律正好相反 — 身体的懒惰直接影响大脑神经的活跃。

《且借纸遁》去年看了一部分,最近把剩下的部分看完了。这本书在我的书库分类里的属性是“书的书”,也就是关于阅读的书籍,包括读书笔记、读书方法以及书评等。我对这类书很痴迷,一是因为爱书;二是因为有些书可能自己一辈子都不可能去翻阅 ,借此可以管中窥豹。这一点最重要,因为:@@color:red;“读过的书远远不如未读的书有价值”@@,也就是人应该知道自己的不知道,知道自己的边界在哪里;三是按图索骥,可以发现更多优秀的书籍。《且借纸遁》是葛兆光教授在1994-2011年间的读书笔记,涉及大概上百本书(其中大部分书籍是在大陆没办法阅读到的),不过这些书作为民间读书人 — 非学者 — 估计一辈子都不会去翻看的,例如《世界宗教史》、《中国战时学术》、《东亚史论薮》等,如果想拓宽自己的边界,看别人的读书笔记应该是一条途径 --- 直取精华。葛兆光的读书笔记似乎非常随意,不过也在情理之中,读书笔记本身就写给自是碎片化信息文本,加之思想的点滴记录和点评以及精彩语句的摘录,实用性高于组织性。相比之下,回顾自己这些年写的读书笔记,从形式上有过之而无不及,深度和广度上远不能及。再接再厉!

另外,我对这本书的书名很喜欢,比毛姆那句[[阅读是一座随身携带的避难所]]尤佳。

> 浏览的杂书成了眺望的窗户,本该坐冷板凳的人,也像《封神榜》上说的“土遁”或“水遁”一样,借了这些印刷的纸张,溜出去长长地透一口气。想到这里,便瞎取了一个书名,叫做“且借纸遁”。

下面的一些语句就是《且借纸遁》对一些书的相应点评或精华攫取。

!!! 翁同龢:《翁同龢日记》

> 士大夫官员则除了官场公务之外,依然是沉湎在三件雅人逸事之中,一是游山玩水访僧问道,三是吟诗作画校书读帖,三是搜集字画古书兼及会客应酬,偶尔把头伸出窗外,才吃了一惊,但是不久又缩头回去,照旧心安理得地过着旧时生活。

中国知识分子(士大夫阶层即古代的知识分子)这点德行似乎能找到历史渊源了。知识分子应该具有什么样的德行?见下一篇[[极权主义与知识分子]]。

!!!詹京斯:《历史的再思考》

> “历史”是由认识论、方法论和意识形态构成的,是“一种移动的有问题的论述”。首先,过去存在过的历史与现在书写或思想出来的“历史”之间的“空隙是实体性的”;其次,方法常常是最近的和最新的观念下支配或推演出来的,这些方法实际上是“自传性地对过去作解释的”,“取悦于他们自己”的,由权力支持而形成的建构;再次,理论与解释是意识形态性的,意识形态不过是说服、强迫、暗示,背后则是利害关系;最后,当“历史”被写出来的时候,它已经承受了来自家庭、学校、单位的压力,出版商与读者(字数、形式、市场、截稿日期、文体、审查者、重写的愿望)的制约,而“历史”被阅读的时候,又面临着“差异的世界”而无法使阅读固定。 

这也一直怀疑历史的真实性和价值,以及历史的真正作用是什么?这种意识流的信息(我其实不认为它是一种知识)最容易变形和被干扰和污染。

//待续//

<$transclude mode="block" tiddler=bookkeywords/>
我是被荣格(C.G.Jung)在心理学和认知科学界的名头(和同时代的佛洛依德一样伟大,且被容格鄙视。)以及这本书的名字吸引来的(又叫《新书》)可是春节到现在,我并没有读懂这本书,我不得不怀疑自己的理解能力以及这本书的时代性 --- 我不可能怀疑荣格的专业性。

《红书》在豆瓣上的评分蛮高,说明许多人以及读了,且懂。我也读了,却无从深入,亦五甚收获。我讨厌作者絮絮叨叨的写作方式,以及书籍结构的凌乱 (他不断地交替使用不同风格的语言模式,在记录和分析时使用的语言形式各异........三种语言风格代表三种思维模式,即报告式、反思式和浪漫式的语体风格交替出现,相互呼应,但绝非荣格刻意而为,而是他丰厚的文化知识底蕴的自发呈现.......
所有这三种文学语体都为心灵的提升服务),包括作者思维的支离破碎 --- 这样说也许不对,这本书本来就是作者的自我实验(《红书》被视为荣格的私人日记,在荣格去世48年之后,由资深荣格学者索努·沙姆达萨尼教授经过大约13年的精心编译,最终在2009年得以出版。
) --- 深度思维的记录 --- 换句话说就是内在自我对话和思维的文字世界,包括与神及想象的对话 --- 走入一个人的世界是何其难,所以看不懂应该是正常状态 --- 可我自认为在认知科学还是颇有积累的。

如:

<<<
1925年他回忆到:“那时候,我看起来就好像生活在我创造的精神病院里,游走于各种幻想的形象之间:人马座、仙女、萨提尔、神和女神,他们仿佛都是病人,我正在为他们做分析。每当我读到一篇希腊或黑人神话时,感觉就好像一个疯子在跟我讲述他的历史。”
<<<

虽然我暂时放弃了继续读下去 --- 我可能在某一天还会再看一下,但是还是有些收获。我从中了解到了深度思维的重要性,最近也在琢磨,是不是自己也来个思维实验:把自己的深度思维记录下来,然后回视、分析和整理,找出自己思维的逻辑、bug以及主宰自己的神。如容格所说:

<<<
我现在必须接受我之前所称作的灵魂实际上根本不是我的灵魂,而是一套死气沉沉的系统。因此,我必须把灵魂当作一个遥远且未知的事物与之交谈,他并不是通过我存在,但我是通过他存在。

一个人的欲望摆脱掉其他外部的事物之后,他才到达灵魂所在的地方。
<<<

这可能是自我治疗的最有效的手段  --- 不是有病才需要治疗,而是需要思想升华,因为“意象的世界是整个世界的一半”
。正如容格的劝诫“我的朋友,更明智的做法是滋养灵魂,否则你就会在自己的心中养育出恶龙和魔鬼。”除此之外,容格的一些观点应该记录下来 (部分内容):

荣格认为古代人缺乏定向思维的能力,而定向思维是一种现代习得的能力。当幻想思维停止的时候,定向思维便开始出现。


<<<
魔鬼如是说:要鄙视所有的理性和科学,因为它们是人类至高无上的权柄。

终极意义并非意义,也非荒谬,它是意象和力量的合一,将堂皇和力量糅合在一起。 终极意义既是开始,又是结束。它是跨越和应验之间的桥梁。

深度精神甚至还教导我把自己的行动和决定都视作依赖于我的梦。梦为生命开路,即使你无法理解梦的语言。(我总觉得这有点扯,可能是作者时代局限性造成的。)

心的知识能够产生更深的洞察。(注意是:心的知识)

但是我如何获得心的知识呢?你只有通过活出自己生命的全部,才能获得这种知识。

灵魂所在的地方,学术知识是无法到达的。

我必须认识到自己仅仅是灵魂的表现和象征。从深度精神的意义上看,我是自己的灵魂在这个有形世界上的一个象征,我完全就是一个奴隶,彻底被征服,绝对服从。

只要我接近自己的灵魂一步,都会引起我的魔鬼、嚼舌根的小人和搬弄是非之人轻蔑的嘲笑。他们嘲笑我的原因很简单,因为我在做奇怪的事情。

混乱和无意义是秩序和意义之母,意义是那些已经成形且不会再形成的东西。

如果你将秩序和混乱结合在一起生出圣童,也即是超越意义和无意义的终极意义。

灵魂拥有自己的独特世界,只有原我能够进入到这里,或者完全成为自己的原我之人才能够进入到这里,这样的人既不在世事中,也不在常人中,更不在自己的思想中。(我觉得把“原我”翻译为“本我”更好。)

我们把自己绑定到目的上,却没有注意到,实际上,目的就是局限,是的,它是对生命的排斥。

你越聪明,你的单纯就越愚蠢。在单纯方面,绝对的聪明就是绝对的愚蠢。聪明能够征服世界,但是单纯征服的是灵魂。所以,若想和灵魂在一起,请坚守精神贫穷的誓言。(这句话说的真好。)
<<<

PS.整理完这些内容,我又想继续看下去了。������

<<<
整个故事充满触人灵魂的哲思,主要讲述了少年“卡尔文”的寻圣之旅,因为与现实生活格格不入、脑海中充满着奇思异想,这个在常人眼中与众不同的少年,用自己的方式,展开了自己的“朝圣之旅”,开始了自我心灵的成长与进化,最终在追寻的路途上,达成了与自我、与世界的和解。
<<<


这本书是春节期间一气呵成看完的,迟迟没有写下点什么。不过这样也好,过一点时间再回忆一下,可以真正检验书之心迹深浅。

《寻圣光的人》和之前读的《[[牧羊少年奇幻之旅]]》、《[[柳林风声]]》是一类书:简单而又意味深长、纯净而又充满幻想。我喜欢读这样的书,可以在纷杂的生活中寻得片刻安静,就像在潺潺小溪旁恬静的小憩;可以在烦闷的世俗中得以净化,就像梦中童年肆无忌惮的奔跑和欢笑。读这类书是一种最佳休息方式,因为可以带入一种轻松梦境。

书中故事的主人公 --- 患有精神分裂症的少年卡尔文 --- 最终与自己和世界和解,寻得圣光,回到真实世界。我们自己何尝不是每日都在挣扎在自己与社会相互和解和妥协的边缘,自己战胜自己则和解,自己被被自己打垮轻则分裂,重则行尸走肉;自己和世界和解则阳光明媚;自己被世界征服则得过且过。和解或妥协与否的关键是寻得自己的圣光,正如书中主人公的自我救赎之旅,我们需要在生活中不断砥砺前行中寻求自我救赎,方可瞥见圣光。


<<<
你是我的拯救者——在辽阔而孤寂的人生,你就是撕开我人生黯淡天幕的那道“圣光”。

霍布斯(卡尔文寻找的人):记住,卡尔文,''你要胸中有虎!比尔并不是你生命中的“圣光”,只有你自己才是!''
<<<

<$transclude mode="block" tiddler=booklogsinfo/>

<<<
《为生命而阅读》(不输《岛上书店》的初心与能量,口碑媲美《活出生命的意义》) 献给每一个在生命旅程里默默前行的你:阅读让生命充盈,让我们勇敢有力。
<<<

上面是《[[为生命而阅读]]》前言中的介绍,溢美之词有点言过其实。且不说作者的读书品味如何 --- 读书其实没什么品味,自己喜欢就好,推荐的书稍作了解即可。不过我喜欢这类书,在我的书架上特设“书的书”专区,是快速了解一本书并找到好书的一种途径。

作者在《为生命而阅读》中共推荐/介绍了26本书,有几本书我已经读过,如林语堂的《生活的艺术》、村上春树的《当我谈跑步时我谈些什么》、安托万·德·圣·埃克苏佩里的《[[小王子]]》、以及威尔式的(Orwellian)《1984》。也在书中选出几本想读的书:《[[乔凡尼的房间]]》、《[[所罗门之歌]]》和《[[箭术与禅心]]》。其中《箭术与禅心》应该与《[[禅与摩托车维修艺术]]》类似,讲生活与哲学。<<footnote "①"罗伯特·M.波西1974年的经典之作《禅与摩托车维修艺术》,一个关于父子两人穿越大半个美国的骑行之旅。所以我错误地以为箭术是写在摩托车之后的,但事实正相反:关于箭术的这本书是1948年出版的,正是波西格古怪而又奇妙的书名的灵感来源。
">>


比较有意思的是,作者威尔·施瓦尔贝比较推崇林语堂,不仅把林之《生活的艺术》位列首推,还在其他章节中多次提及。作者是喜欢林语堂倡导的那种慢生活。我想作者还是不了解民国时期中国的社会环境,也只有像作者这样的美国中产阶级才会喜欢民国时期林语堂的那种“精致文人慢生活”吧。

下面是一些书摘:

<<<
不管什么时候读书,我都时刻提醒自己注意这些回响、联系和希望。这本书是怎么完成的呢?这本书和哪些书有相似之处呢?它让人想起了哪些书呢?

读书和小睡,人生中最让人愉悦的这两件事,相处得相当融洽。阅读被小睡打断的最大收获就是,我经常能够被潜意识带入书中的场景,这极大丰富了读书的感受。

无论何时,只要有可能,都选择未知而不选择熟悉,因为“正是未知,和它所裹挟的所有的失望与惊喜,才是最有价值的”。

“假装成功,直到真正成功”(Fake it till you make it)

该书作者悲惨的结局让这个故事更添深度:安托万·德·圣·埃克苏佩里是一位著名作家,也是一名勇敢的法国飞行员,他在二战期间执行某次侦察任务时失踪。他的飞机跌落在地中海某处,那时他正从科西嘉(Corsica)飞往纳粹占领的法国。事故发生在《小王子》一书出版的一年零几个月之后。

在奥威尔的论调里,就被称作自由。使你自由之物即是限制你之物。

大哥和他的口号笼罩:战争就是和平、自由就是奴役、无知就是力量

张潮关于人生不同阶段读书的感悟:''“少年读书,如隙中窥月;中年读书,如庭中望月;老年读书,如台上玩月。皆以阅历之浅深,为所得之浅深耳。”''

<<<

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>
我们将事物发展变化中面临的各种可能性集合称为这个事物的''可能性空间'',它是控制论中最基本的概念。控制,归根结底是一个在事物可能性空间中进行有方向的选择的过程。

改造世界,即通过选择来完成 --- 选择可能性空间。

控制的量化,即控制能力:

<<<
如果某一事物的可能性空间为M,实行控制后,可能性空间缩小为m,那么控制能力就是M/m。
<<<

一切控制过程,实际都是由三个基本环节构成的:

# 了解事物面临的可能性空间是什么。如一个人得了病,他可能好转、恶化、死亡。
# 在可能性空间中选择某一些状态为目标。如治病的目标是使病情好转。
# 控制条件,使事物向既定的目标转化。

控制的方法论称为控制艺术,如随机控制、有记忆的控制、共扼<<footnote "①"诸多学科中的“共轭”一词,都来源于英语单词“conjugation”。“com”即“共”,“iugāre”即“轭”。因此共轭这个词实际是一个外来词。而两头牛背上的架子称为轭,轭使两头牛同步行走,共轭即为按一定的规律相配的一对。
">>控制、负反馈控制等。它们是一切复杂控制方法的基础。

<$transclude mode="block" tiddler=bookkeywords/>
@@.note
''Keywords:'' {{!!description}}
@@

我读韩少功的书少。最近看一些公众号在推其新作《修改过程》,介绍此书内容主要聚焦八十年代的人和事 --- 我因为对当代文化传承和思想潮流和变革感兴趣(见[[中国百年思潮迭代和探究]]),由此连夜找来看。

昨晚睡前看了百分之十,今天接着读了一部分,就果断束之高阁了。虽然书的故事和人物都锚定在八十年代,一波下乡知青高考后随着经济改革而发生蜕变的故事,然则作品与作者的光环是不相匹。韩少功属于老三届,下乡知青作者群中名头比较大的,尤其让我注目的其还是昆德拉《生命中不能承受之轻》的译者。可是《修改过程》这本书实难下咽,读起来犹如白开水,寡而无味,甚而还不如《故事会》。说其无味,全书基本上全用平铺直叙的白描写法,毫无环境渲染、心理活动等描写,甚至连比喻都没有。之所以有这种强烈的感受,可能我最近读了《[[白鲸]]》、《[[茨威格文集]]》和《[[名著之前言与序言]]》的原因。麦尔维尔在《白鲸》中大量引用《圣经》故事和欧洲历史以及希腊神话典故,让故事丰满而又有层次感;茨威格的写作又肆无忌惮的运用[[让人炫目的心理描写|让人炫目的茨威格]];《名著之前言与序言》读起来虽然晦涩难懂,但其夸张的排比以及让人上气不接下气的长居,让人叹为观止。这都让韩少功的《修改过程》羞难忝列。而就其作品的立意和主题而言,又少了路遥《[[人生]]》的磅礴,少了[[张贤亮作品|张贤亮文集]]中的锐利。

"""
昨晚看了一部日本电影[[《亿男》|https://t.me/platoer/6248]]。电影讲的是一个被家庭和债务压的喘不过气来的男人,无意中了2个亿的大奖,于是向好朋友寻求怎么用好这笔钱,而钱又和好朋友突然不翼而飞,从而开始追寻朋友和钱的下落。电影的结尾当然是钱被追回来了,主人公也在追寻的过程中找到了钱的真正价值和怎么使用好这笔钱。

金钱价值的大小,不在于金钱数额的多寡,而在于使用者。有些人一掷千金,千金之于他如敝履。一些人节衣缩食,金钱之余他远超金钱本书的价值。而怎么对待金钱?“金钱本是身外之物”这话实在有点飘渺。换一句话来说吧,不要役于钱,也就是不要做了金钱的奴隶,被金钱牵着鼻子走。这样的金钱观不仅赚不到钱,反而失去了生活本身的意义。而要役钱,把金钱做外身外之物的工具,让他来,让他去。《荀子》说的“君子役物,小人役于物”,也是这么个道理。 

上面的金钱观与几日前[[对生活的感悟|等值人生]]殊途同归:超越(跳出)目的,享受过程,方达极乐。
"""
@@.note
''Keywords:'' {{!!description}}
@@

之前读过几部高阳的作品,如《清朝的皇帝》
、《慈溪全传》、《乾隆韵事》和《胡雪岩传》。我对高阳作品一直情有独钟,个中原因之前提到过一些:<$details>

{{2017年12月01日 下午 10:43:46}}
</$details>
总结起来,大致有二:写清史小说无人出其右;作品古韵与金庸伯仲之间。

当然,这里提起金庸,单指二人的古文造诣。至于二人的作品并不能相提并论,高阳作品与金庸的作品至少有一个台湾海峡的距离。据说高阳是高产作家,一年能可以出数部之多。这样量产出的作品难免故事结构简单,甚至读起来还有疲于应付之嫌。我不知道高阳为什么这样做,也许其中必有个中原因吧。

所以,读高阳的作品权作娱乐,就像看肥皂剧一样。最近看的这部高阳作品《清官册》,也如古装剧一样,一夜刷完。只不过比刷垃圾剧“高级一点”,从文字学上会有些收获的。

下面视频中谈及高阳的高产轶事(需土番墙):

<iframe width="620" height="315" src="https://www.youtube.com/embed/h507X2EsTOM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
@@.note
''Keywords:'' {{!!description}}
@@

看《笑林广记》纯为娱乐,随意翻阅,会心一笑,心旷神怡。摘几则大俗大雅的段子聊以自慰。

''同僚:''有妻妾各居者,一日,妾欲谒妻,谋之于夫:“当如何写帖?”夫曰:“该用‘寅弟’二字。”妾问:“其义何居?”夫曰:“同僚写帖,皆用此称呼,做官府之例耳。”妾曰:“我辈并无官职,如何亦写此帖?”夫曰:“官职虽无,同僚(屪)<<footnote "①"屪:男性外生殖器">>总是一样。” 

''打丁: ''一人往妓馆打丁<<footnote "②"打丁:嫖娼。">>毕,妓牵之索谢,答曰:“我生员<<footnote "③"科举制时代,在太学等处学习的人。">>也,奉祖制免丁。”俄焉又一人至,亦如之。妓曰:“为何?”答曰:“我监生也。”妓曰:“监生便怎么?”其人曰:“岂不知监生从来是白丁?”

''洞房佳偶:''一佳人新嫁,合卺之夜,佳人以对挑之曰:“君乃读书之辈,奴出一对,请君对之。如答得来,方许云雨,不然则不从也。”新郎曰:“愿闻。”女曰:“柳色黄金嫩,梨花白雪香,你爱不爱?”新郎对曰:“洞里乾坤大,壶中日月长,你怕不怕?”

@@.note
''Keywords:'' {{!!description}}
@@

我很少看中国科幻或者玄幻小说,当然除了大名鼎鼎的刘慈欣的《三体》(事实上我还么有看完)。原因之一是个人偏见,认为此类型文本不算正统作品,就不要在上面浪费时间了,不如看此类电影来的猛爽;原因之二是大环境,中国人的教育观念和中国教育环境是人类幻想因子的罪魁祸首,这就决定来此类型作品千篇一律,难有佳作。这些也许是一家之言,确决定了我的书单上科学/玄幻/魔幻类作品的缺位。

朱岳这本小说《说部之乱》之所以成为我的“座上宾”,实乃是作者个人原因导致的。作者与网上大多网络小说作者不一样,朱岳作品的文学色彩大于文本主题内容,而非大多数科幻小说天马行空胡编乱造。如果用科幻小说的解释框架来说明这个类型小说的话,可以叫作“文学幻想小说”,在这里,文学之于小说,就像在“科学幻想小说”那里科学之于小说。文学幻想不同于幻想文学,前者包含于后者。这与作者爱好哲学有极大的关系。


《说部之乱》最大的亮点是作者的立意非常新颖,正如书目介绍的这样:

<<<
文学阅读可以转化为战斗力;词语之间的战争与玄秘境界;迷宫制造大师之间的疯狂竞争……小说以独特的风格,丰沛的想象力,创造出—个个怪诞而富有诗意的世界。
<<<

在书中的蛮荒世界,阅读文学作品的多寡决定着您的战斗力的点数。我忘记了一部世界名著能为战斗力加乘多少,一部金庸作品又为多少,刘慈欣的《三体》又为多少。不过书中认为漫画作品并非文学作品,不值钱。

<<<
“这些是漫画,你看,这是《超人》漫画,这是《丁丁历险记》,它们不是文学,是伪币,你被耍了。”你说。 “怎么可能?!”女孩伸出双手摸索着她的书页。 “哦,还好,里面还有一些诗集的散页,这还有点价值,不过它们只能当邮票用,四行诗剪下来是一张邮票,这个你懂吗?你可以给很多人寄信,你有不少诗。”
<<<

爱尔兰作家詹姆斯·乔伊斯的《尤利西斯》似乎一页难求。我想作者是读过《尤利西斯》的,知道其多么的艰涩难啃。

<<<
“你追踪的目标,起码读过《尤利西斯》前十章的内容,他还熟悉荷马史诗、托尔斯泰、陀思妥耶夫斯基、卡夫卡、穆齐尔、托马斯·曼、苔菲、彼得鲁舍夫斯卡娅以及,挺奇怪,紫式部的作品。他是个强大的对手,非常强大。”
<<<

书中书与书似乎还可以对飚

<<<
接着,他又蹲伏在2号尸体边,“啊……这是《芬尼根的守灵》,那本传说中的书,需要一千个小时才能读完,需要巫师们忙活三百年才能彻底破解。看啊,他用刀把他对这部奇书的理解写在了对手身上。”巫师指点着那一处处伤口,“除非你对《追忆似水年华》了如指掌,否则你无法与之匹敌!”他转过头对你喊。
<<<

如果按照这个路子继续写下去,不仅是一部“书中书”的书籍导读,还是一部不错的讽刺小说。如果把涉及到的书目能够简要的介绍一番那就更好了。可惜作者没有按照这个路子来写。不过,要按照我的想法来写,非有过人的文才、学富五车的阅读量,而不能为之。
<$transclude mode="block" tiddler=booklogsinfo/>

这些年我一直在看 --- 说研究有点言过其实 --- [[认知科学|Thought Framework]]方面对书。无他,唯求更加接触到实物到本质或真相,找到解决问题的最佳路径。结果如何那?事与愿违。

认知科学通过实验归纳总结,然后通过还原论再加以还原唯科学解释。看似非常科学。但在日常生活中,这些理论往往抛开了情景,或者说当事者所处环境,在此种情况下主观意识 --- 也可以说主观情感 ---- 通常是超越于现实客观,在一些极端情况下,甚而还会抛开个人安全/安危 --- 个人安全是自然环境一切生物的原始性需求,在这种环境下一切认知哲学无济于事。现代人所遇这种环境并不鲜见,特别是中国人(因为没有信仰)如悲伤、忧郁、喜而忘形等。如此,何为?

何为?有何可为?我一直在寻找这样一种认知框架,突破“牢笼困境”或“囚徒困境”。

在极端情况下,或者在情绪波动强烈的出境,之所以一切认知哲学都失去作用,用丹尼尔《[[思考快与慢]]》的观点,是因为人在这种状态自身消耗能力(血糖,血液中的葡萄糖)增大,故而对其它消耗能力的思考能屏蔽就屏蔽,能不启动就不启动。心理学家罗伊·鲍麦斯特(Roy Baumeister)《Willpower》(中译本书名《意志力》)中所说的“意志力薄弱”也是这样的原因(罗伊·鲍麦斯特是最早提出思维[[“系统1”和“系统2”理论|思考快与慢的两个思维系统]])。我所说的“牢笼困境”或“囚徒困境”和罗伊·鲍麦斯特的“意志力薄弱”殊途同归,是一回事。如果以上“能量消耗论”成立,那么在“牢笼困境”或“囚徒困境”,增强“意志力”,从物理层面就有办法解决:补充能量 --- 摄入糖分。

来看几个实验:

''实验1:''两组被试,一组从事轻松的脑力任务,另一组从事复杂的脑力任务。任务完成后,让他们自选免费点心,从事【复杂任务】那组人,有【更高比例】选择了“甜食”,并且他们的血糖水平也比另一组【更低】。 

''实验2:''两组被试,一组是饥饿状态,一组正常状态。从事【同样的】复杂脑力任务。饥饿组的平均成绩显著【低于】正常组。  

''实验3:''两组被试,一组是饥饿状态,一组正常状态。从事一项【不可能完成】的任务,然后测量他们坚持了多久才放弃。饥饿组的平均时长显著【低于】正常组。


由此可以说明,从物理(身体)层面可以有效缓解“牢笼困境”或“囚徒困境”所造成的负面效应。

从思维框架方面是否有进一步的解决方案那?

<$transclude mode="block" tiddler=bookkeywords/>
@@.note
''Keywords:'' {{!!description}}
@@

我很难用一种感觉来说明我对《[[白鲸]]》的读后感,因为他给我的不止一种,是有若干种,就像进入一个花园,迎面而来的气味可能有玫瑰、芍药、青草,甚至还有农药以及潮湿的气息。它们既有层次感,有的浓厚醇香,有的细若游丝飘忽不定,然而它们又混杂在一起,混沌而又说不清。


<<<
一个人如果把这整个宇宙看做个大恶作剧,那么,在我们称之为生活的这种希奇古怪、五花八门的东西中,就会有一些可疑的时刻和事情了,虽则他对这种恶作剧的理解很模糊,但也深为怀疑地认为,这种恶作剧只是害己不害人。可是,他却觉得没有什么值得气馁,似乎也没有什么值得抗辩。他会囫囵吞下一切结果,一切信条,一切信念和劝说,一切有形无形的困难,不管多么疙瘩烦难的东西,就像一只消化力很强的鸵鸟把子弹、铅丸都吞了下去。至于一切的小困难,小麻烦,前途会突然发生不幸,有丧命失肢的危险,所有这一切,以及死亡本身,在他看来,似乎都不过是那个看不见又不可理解的老恶作剧家所赐予的顽皮而温厚的打击,腰眼挨到有趣的一拳而已。不过,我所说的这种奇特的刚愎心情,只是发生在一个人有时碰到极度苦难,又正是在他最热切的时候,所以也许他以前认为最重大的事,如今看来,就不过是大恶作剧的一部分而已。再没有像捕鲸业所遭到的种种危险更易于滋长这种自由的、爽快的、无赖的人生观了;我这里对于以大白鲸为目标的这艘“裴廓德号”的整个航程,就是这般看法。
<<<

《白鲸》的故事相当简单,如上所述,见此 <$appear>{{2019年02月02日周六下午09:27:28}} </$appear>。然而简单的复仇故事确蕴含着巨大的力量,这是让我着迷的地方,这至少在浑厚的读后感里面第一层。第一种力量来自人 --- 向一条白鲸复仇的船长。这个一条腿的老头,驾驭者一条老船,经年累月地在海洋上寻找那条曾经咬断他腿的白鲸。这里面没有正义和邪恶,或者也可以说这里的正义亦邪恶,邪恶里充满正义,仅仅只是船长的一个信念,一个复仇的信念,一个虚妄的信念。这个复仇的信念确迸发的力量可以让一个残疾老头下五洋捉鳖,上九天揽月。如果要给“疯狂”一词下一个注脚,这个船长的行为足可以诠释。任何足够伟大和邪恶的、无边无际和虚妄的、神秘和疯狂的意志力可以传染的,只要一声够大的声音足以引起群犬吠日。疯狂的老头也把复仇转变为所有船员的集体信念。这是人类的悲哀还是伟大?这个世界就是一个用信念驱动的世界,信念足够坚强可以“天堑变通途” <<footnote "①"出自毛泽东诗词水调歌头">>,信念足够疯狂也足可以像希特勒一样灭绝人类。


<<<
这个白发苍苍、不畏鬼神的老人便在这里带着一群水手,满怀愤恨地要走遍天下、去追逐一条约伯的大鲸,而这些个水手,也主要是由一伙混血的背教者、光棍和生番组成的——也是道德薄弱的一群,加上一个力不胜任,只有无济于事的美德或者公正观念的斯达巴克,一个卤莽而漠不关心的,镇天嘻嘻哈哈的斯塔布,和一个非常平庸的弗拉斯克。这样一群水手,这样配备的头目,似乎就是劫数难逃的天意特为帮助他完成他那偏热症的复仇而挑拣出来的一群出类拔萃的人物。
<<<

如果说人 --- 人的信念 --- 具有无穷尽的力量,与之匹敌对怼的唯有大自然。这是《白鲸》里第二种力量:大自然的力量。白鲸的作者在文章开头说:

<<<
几年前——别管它究竟是多少年——我的荷包里只有一点点、也可以说是没有钱,岸上也没有什么特别教我留恋的事情,我想我还是出去航行一番,去见识见识这个世界的海洋部分吧。这就是我用来驱除肝火,调剂血液循环的方法。每当我觉得嘴角变得狰狞,我的心情像是潮湿、阴雨的11月天的时候;每当我发觉自己不由自主地在棺材店门前停下步来,而且每逢人家出丧就尾着他们走去的时候;尤其是每当我的忧郁症到了不可收拾的地步,以致需要一种有力的道德律来规范我,免得我故意闯到街上,把人们的帽子一顶一顶地撞掉的那个时候——那么,我便认为我非赶快出海不可了。这就是我的手枪和子弹的代替品。
<<<




到海洋去。这句话像神之召唤,令我着迷,也想冲出陆地,到海洋去。我只有一次站在海洋上到经历,站在船头,我唯有沉静。我知道这沉静里,包含有不着边际的无助、波涛汹涌的恐慌、荡涤一切力量的虚弱、包含天地带来的自我渺小甚至虚无。作者把“到海洋去”看作一场自我疗伤之旅,把海洋当作一碗鸡汤,把恐慌转化为力量。哦,这又是人的意志的力量。但是千万别认为人是世间万物的主宰,这是人类自大而愚蠢的表现,是未经世面之人的愚见。在海上,再狰狞邪恶的水手当遇到狂风暴雨也会心里默默祈祷,这是人类虚弱的表现,是向大自然举起了白旗帜。不然,就像疯狂的船长一样葬身鱼腹海底。
@@.note
''Keywords:'' {{!!description}}
@@

我不得不说,今年书看的多,想写点什么的欲望越来越低了,从而欠下许多旧账,在<<tag Task>> 下待完成任务已经“债台高筑”。这本《杂草的故事》是春节期间看的,是促使我爱好植物学的一块敲门砖。

“什么是杂草?”我之前从来没有想过这个问题。杂草司空见惯熟视无睹,对它是即熟悉而又陌生。平时遇到一株野草,我们统统以杂草以一冠之,殊不知我们这种见惯不怪的称呼包含着以人类中心的傲慢和偏见,甚至是一种歧视称呼。用本书作者的定义,杂草乃“‘出现在错误地点的植物’,也就是说杂草长在了你本希望长出其他植物或者根本不希望长出植物的地方。”用人类来形容,是“不该来的来来”,是不受欢迎的。如果说作者的杂草定义为“环境论”,另外一位叫作拉尔夫·沃尔多·爱默生对杂草对定义为“作用论”:“优点还未被发现的植物”皆为杂草。这些定义都有失公允,是以人类为核心思想的产物,要知道地球是先有植物后有了人类。人类的悲哀往往就是自以为是。

然而什么是该和不该,什么是杂而非不杂,似乎都具有辩证性。据为己享的小麦、玉米、大豆等农作物,本为杂草,只不过因人类口腹之欲的需求而在植物界受宠而尊贵。这一切又是相对的,我看过一部日本电影《神奇的苹果》,一个农民因为妻子对农药过敏而要把自己的苹果园变为天然无农药苹果,然而苹果是被人类改造最严重的植物之一,从而在漫长的被人类干预的进化过程中失去了野生苹果(最初苹果树)本身对病虫害的抵抗能力。这个日本人经过数十年实验,在最终崩溃 --- 生命的代价
 --- 时刻发现了唯有野草可以达到自己的目的。为了苹果树独享土地的养分,苹果园的野草都被刈除,这就破坏了苹果园本身的微自然环境,吃掉苹果树的虫子天地自无法生长。在这个苹果园,杂草成了座上宾。

@@.note
''Keywords:'' {{!!description}}
@@

接[[上|2019年06月07日周五下午09:09:47]]:

文学作品中常用草来比喻人类:人如草芥。这句话真实不虚。人从幼少中青走到泥土中化为无形,如草之春发夏长秋实冬亡,人与草殊途同归。人如草芥,这个草芥指的就是杂草,一定不是那些温室里的名贵花卉和居室里“上得了台面”的妆点植物;这里的人亦不是王孙贵胄名门望族,是那生死由命的芸芸众生。如此,人又据何而贵,敢藐视杂草那。

<<<
这本书在某种程度上是一种辩解,建议我们应该更冷静地看待这些桀骜不驯的植物,去了解它们是什么,它们如何生长,以及我们讨厌它们的原因。从另一个角度来说,这也是一个关于人类的故事。
<<<

“离离原上草,一岁一枯荣。 野火烧不尽,春风吹又生”。这是描述草之生命不息,亦可看作草之生命的力量。在读这本书之前,我对此一无所知。直到看到深埋地底下的种子沉潜上万年伺机而动,一朝环境成熟重见天日而又欣欣向荣的自然奇观,为此错愕。千年前自视无比伟大而神圣的秦始皇雄姿勃发的修建千年寝宫,祈求来世幸福。如今秦陵一柸黄土在,草芥一枯荣,不见秦皇笑,只见草儿摇。千年一帝实不如一无名草芥世间轮回来的逍遥自在。
@@.note
''Keywords:'' {{!!description}}
@@

继续:杂草的故事

看书的乐趣之一,就是你总能在一些书中看到另外一本书的影子。它们是如此的恰如其分、相映成趣。在《杂草的故事》中作者提到,伴随着欧洲殖民大跃进,杂草也随之入侵到世界各地,给当地植物生长带来很大的威胁:

<<<
1977年汇编的“世界上危害最大的杂草”前十八位名单中,只有三种欧洲植物——藜、田旋花和野燕麦。剩下的大部分是来自热带的凶猛杂草,包括排名第七的丝茅和排名第一的香附,而香附更是被公认为“世界上危害最大的杂草”。
<<<

就田旋花而言,我在《[[耕种 食物 爱情]]》中看到了它给一对年轻农人带来的痛苦:

<<imageSlider  [[https://i.postimg.cc/k5KVHbSV/tianxuanhua.jpg]]    "生如夏花-田旋花">>

<<<
旋花一开始看似无害、苍白、多汁,看似脆弱的触手很快就会长出小小的心形叶子。它一开始生长缓慢,之后呈爆炸式增长,每天都会长出几寸藤蔓,缠绕着幼小的秧苗,企图让其窒息而死。中耕机的铲刀在清除其他一年生杂草方面十分有效,但对旋花却无计可施。连根拔起或者埋在土里都无法扼杀旋花。有的藤蔓在铲刀上缠绕,被拔出地面,但如果它也缠住了农作物,作物也会被拔出来,然后就会在太阳中枯萎死去,而旋花会依靠自身湿润的茎叶,重新扎根,继续生长。旋花节节胜利,藤蔓变成繁茂的地毯覆盖在田间。而且中耕机刚刚前进几尺,工作部件就被藤蔓紧紧缠绕,铲刀变得毫无用处,在地上掘出高低不平的沟渠,马儿累得汗流浃背。对付旋花的唯一办法,就是拿着桶沿着垄沟爬行,用手一棵棵拔出来,从田里运出去,扔到垃圾堆里。然后冲着它们吐唾沫,以发泄我们的满腔怒火。我们花了一天的时间拔除“小欢乐”田里的旋花,一天结束的时候,新一批的多汁嫩芽又破土而出。
<<<

在都市生活的人初见田旋花,可能误以为是牵牛花,生如夏花,清新不妖。可是别小看了这普通的小花,其生命力之旺盛让人侧目。不仅其茎叶如上面农人所述沾湿即活,其种子的活力也足以让人类汗颜。

<<<
索尔兹伯里的两个同事做了一个实验,测试人为掩埋长达39年的种子的萌发情况,曼陀罗、龙葵和旋花的萌发率分别为91%、83%和53%。
<<<

我想假以更长的实验时日,田旋花的种子发芽率可能更长。事实已经有更多的证明,人类在植物种子活力面前是如此的渺小而又自以为是:

<<<
这些等待几十年而后复兴的植物,与人类记载中曾蛰伏几个世纪的杂草种子相比就是小巫见大巫了。酸模的种子历经60年依旧可以萌芽。从一处具有1700年历史的考古遗址中挖出的藜的种子,也能够破土发芽。不过这些在黄木犀草面前都不够瞧,这种植物的种子在赛伦塞斯特镇一处有近2000年历史的罗马遗址出土后安然无恙。
<<<

种子的休眠是一种保险措施,就像人们把钱存起来以备不时之需一样。如果你是一种以不断演化来应付复杂多变环境的植物,能够帮助你生存的策略之一就是保留一部分种子先不发芽,让它们等上个2年、3年、30年,甚至300年,以防恶劣的地面环境长期未能改善,或是第一代幼苗全部阵亡。这和人类的冻卵无甚两样。植物只是不会说话(植物与植物之间是可以通信的,甚至可以达成一致协议,如一起此年罢工而不开花,从而饿死侵害其生存的害虫。见《[[大自然的社交网络]]》),或者说人类尚不了解植物的语言,如果植物能够说人话,这些见证和守护人类的大自然同居者一定会对人类的愚蠢加以耻笑和鄙视。尽管人类的科技已经进入到可以干涉生物进化的程度,可惜对种子的休眠机理还是一知半解。

<<<
有些植物为种子罩上了厚度不一的外壳,有些植物的种子里含有可以抑制萌发的水溶性物质,这样一旦土壤中的水分将抑制物质溶去,抑制作用便会解除。另一些植物的种子萌发似乎与温度有关,只有当它们处在最表层土壤中时才会发芽。有几种植物仿佛有一个内置生物钟,可以进行长时间的倒计时。
<<<

不仅植物种子的活力可以与时间赛跑,其孕育的数量也从空间上傲视自然界。就以虞美人为例:

<<imageSlider  [[https://i.postimg.cc/26YqNSd0/yumeiren.jpg]]    "土地的女儿-虞美人">>

<<<
一颗虞美人果实中有1000粒种子,一个植株可以结出多达50颗果实。果实成熟后会干裂,顶部升高,边缘一圈出现一排小洞。与此同时茎部也逐渐变干,被种子的重量压弯垂下,只要一有风吹过,种子就会四散落下,传播的距离可以达到原植株3英尺(约合0.9米)以外。比方说一共产生了2万粒种子,如果条件适合,大约85%即1.7万粒种子第一年就会萌发。第二年可能再萌发1000粒,第三年500粒……还没有人做过足够长的连续实验,以观察虞美人种子休眠的最长年限。但据估计,在化学性除草剂出现以前,一英亩(约合4047平方米)农田中可能含有1亿粒休眠的种子。休耕、除草甚或是土地被短暂地征作他用,都完全干扰不到这些种子。等到下一次耕种开始,或下一场战争来临时,无数伺机而动的种子会瞅准机会,发芽、开花、结果,然后再把成百倍的种子播回泥土中。虞美人作为小麦形影不离的伴侣,一定是土壤中无比顽强的一员。
<<<

怪不得亚述人把虞美人叫作“土地的女儿”。罗马人认为虞美人是他们的谷物女神刻瑞斯的圣物。献给刻瑞斯的花环就是由虞美人和麦秸编织而成的,虞美人的种子还是祭奠仪式中的祭品,用以保证来年谷物丰收。

再回到上面提到的田旋花。事实上我们很少在荒山野地里看到这种植物,田旋花一般都出现在田地里。我用人类的思维来理解这一大自然的行为,这就是一种对人类对嘲讽。杂草完全是人类行为的产物,无论是概念还是行为。杂草本来就是实实在在的存在,是后来人类创造了花园和田地的概念,而遭到驱逐。然而这并没有阻碍杂草的进化,它甚至巧妙地避开了(我甚而认为是减速了)演化过程,直接、完美、强大地从土豆田里长出来了。“没有我们它们活不下去,”植物学作家迈克尔·波伦坚持道,“没有人类来创造农田、草地和空地,大部分杂草都会很快消亡。田旋花在田地和花园里看起来凶猛无比,可在别的地方根本没法生长。”这就可以解释《[[耕种 食物 爱情]]》里的小夫妻在夏季是何等辛苦地与田旋花在时间和空间上赛跑。


<<<
盛夏是马克曾经告诫过我的疯狂赛跑的时节,各种事情迫在眉睫,进行时间与速度的比拼。干草!篱笆!收获!杂草!我们全速奔跑,种下晚熟的胡萝卜和甜菜。我们虐待卷心菜秧苗,拿着浅盘一路小跑,将它们扔在地里,然后用膝盖爬行,将每一株幼苗塞到土中,一点也不怜香惜玉。新的一天从凌晨三点四十五分就开始了。黎明之前干杂活儿,太阳完全升起之前就带着役马下田劳作,然后是干活儿,干活儿,干活儿,与天气赛跑,与杂草赛跑,与季节赛跑。一天下午,我坐在中耕机上,在垄沟末端睡着了,梦见自己坐在一条小船上。晚上挤奶从下午四点半开始,清扫和杂活儿要到七点才能结束,但是鸡要到九点才会歇息,我们要在那时候把它们关进鸡笼,防止被猫头鹰吃掉。没过几个小时,这样的一天再次上演。---《[[耕种 食物 爱情]]》
<<<

<<<
雨下得不是时候,我们无法到田里干活儿,杂草占据了优势地位。当它们超越了白丝阶段,整片田地都沦陷了,必须用手拔除。我们冒着雨在田里进行紧急抢救,决定牺牲欧洲萝卜的幼苗和最近种植的卷心菜。杂草已经泛滥成灾,需要大量时间抢救田地,而且杂草就快要撒种了。一棵苋菜竟然能够产生二十万颗种子,这些种子会在土壤中潜伏几十年,等待机会生根发芽。如果我们任其发展,就是在播种未来的麻烦。雨停了以后,我把所有的垄条都耙到地里,杂草和我们的作物同归于尽,后来我如释重负,就像一个叛徒做完坏事的那种解脱感。
---《[[耕种 食物 爱情]]》
<<<

农夫辛勤劳作,大自然笑里藏刀,农夫潸然泪下。如果说杂草毫无用处 --- 对人类而言,用
维吉尔《农事诗》中朱庇特创造杂草的情节解释:“如果它们虽无其他用处,却能让人类在除草中受到磨炼,那它们就并非毫无用处,须知倘若人类无需斗争,他们身体里的灵魂之火会熄灭一半。”看似这是个政治正确的理由,生存即需奋斗。
@@.note
''Keywords:'' {{!!description}}
@@

<<<
“有些人死在退潮里;有些人死在浅水滩里;有些人却死在洪水里;——
<<<
这是《白鲸》里水手们的生死观,也是其宿命。这就像战士死在战场才为死得其所,水手们也希望海洋是荣归的目的。

<<<
那种求死而内心里还是不肯自杀的人,眼睛看到的是,那个慷慨豪爽与虚怀若谷的海洋已在诱人地展开它整个不可想象的景致,加上从那无垠的太平洋的中间,无数的人鱼都在对他们叫喊——“到这里来,伤心的人们呀;这里是不会有犯死罪的另一种生活;这里是超自然的奇迹,是永生的。到这边来吧!与其死在你那同样使人憎厌、还在憎厌着的岸上,不如遁迹到忘却中的生活里来,到这边来吧!收拾起你那在教堂墓地里的墓石,到这边来吧,我们要跟你成亲咧!”他们就都去作恐怖、奇妙和新生活的冒险了。
<<<

经历日月和海洋搏击的渔船是其墓志铭,上面铭刻着孤寂、悲伤和光荣。

<<<
指向北极星的船头,——虽死犹荣的船呀!难道你就这样撇掉了我而毁灭吗?难道我连最起码的破船船长的英名也捞不到吗?啊,孤寂的生和孤寂的死!啊,现在我觉得我的至高的伟大就寓于我的至高的悲伤中。
<<<
而悲伤和光荣的魅力在于疯狂,正如船长最后的竭斯底里和无畏。

<<<
孤寂的生和孤寂的死!啊,现在我觉得我的至高的伟大就寓于我的至高的悲伤中。嗬,嗬!我整整一生所经历过的勇敢的波涛呀,你现在尽管打四面八方排山倒海地来,在我的垂死的浪潮上再加上一层吧!我要滚到你那边去了,你这杀人不眨眼而又无法征服的大鲸;我要跟你扭斗到底;到了地狱,我还是要跟你拚一拚;为了泄恨,我要朝你啐最后一口唾沫。让所有的棺材和棺架都沉在一口大水塘里吧!既然什么都不可能是我的,那么,我就把什么都拖得粉碎吧,虽然我给捆在你身上,我还是在追击你,你这该死的大鲸!这样,我不使捕鲸枪了!”
<<<
<$transclude mode="block" tiddler=booklogsinfo/>

''天下学问,惟夜航船中最难对付。'' -《[[夜航船]]》

<<<
杨柳 隋炀帝开河成,虞世基请于堤上栽柳,一则树根四出,鞠护河堤;一则牵舟之女护其阴樾;三则牵舟之羊食其枝叶。上大喜,诏民间进柳一株,赐一缣;百姓竞献之。帝自种一株,群臣次第种之。栽毕,上御笔赐垂柳姓杨,曰杨柳。

荔奴 龙眼似荔枝,而叶微小,凌冬不凋,七月而实成,壳青黄色,文作鳞甲,形圆似弹丸,肉白有浆,甚甘美。其实极繁,一朵五六十颗,作穗如葡萄然。荔枝才过,龙眼即熟。南人目为荔奴。 

<<<

<$transclude mode="block" tiddler=bookkeywords/>
<div class="tc-subtitle">最後更新於<$view field="modified" format="relativedate"/>
<p>''关键词:'' {{!!description}}  |  ''相关:''  {{!!relation}} </p></div>

最近把《萤窗异草》彻底看完了(之前兴趣使然,选部分篇章来看)。古之怪力乱神作品不少,有名的当如《子不语》、《阅微草堂笔记》、《聊斋志异》等。从趣味性角度来看,此类作品当推《聊斋》,从文采角度来看属《聊斋》和《萤窗异草》。纪晓岚之《阅微草堂笔记》不可谓不好,然可归为游记及见闻录。而署名长白浩歌子的《萤窗异草》,虽步《聊斋》后尘,然并未有狗尾续貂之嫌,其文采飞扬,趣味盎然,尤其中一些“小黄文”更让人捧腹。唯有不足,篇幅太短,故事类型单一。


<<<
其书大旨,酷摹《聊斋》,新颖处骎骎 ^^qīn^^ 乎升堂入室。 --《萤窗异草》序
<<<

古代文人怪力乱神作品故事类型大都包含这几个关键词:秀才、貌若潘安、才华横溢、落魄、狐妖、纵欲、金玉满堂、蟾宫折桂、来世安好........这些关键词就是此类作品的写作框架和套路。从中不难看出这些失意文人 --- 至少不是仕途精英 --- 意淫的报复,以及对当局和社会不满的诉求。不过也情有可原,中国文化向来以才子及第、郎才女貌为人生得意圆满的大众期盼为核心,现实中缺失的,自然要在草堂春卧中找吧回来。
<$transclude mode="block" tiddler=booklogsinfo/>


看《史记》,有意把有关项羽和刘邦的章节抄录了下来,以便对比分析一下。其它文学作品关于二者人物的描写多为演绎,唯正史为正本清源稍为公允。

!! 项羽

* 项羽不肯竟学 

<<<
项籍少时,学书不成,去,学剑,又不成。项梁怒之。籍曰:“书,足以记名姓而已。剑,一人敌,不足学,学万人敌。”于是项梁乃教籍兵法。籍大喜,略知其意,又不肯竟学。(节选自《史记》)
<<<

从历史的角度来看,项羽的悲剧从少时已经种下。学什么都不成,只有一把蛮力,然而又“命比天高”。

*取而代之 

<<<
秦始皇帝游会稽,渡浙江,梁与籍俱观。籍曰:“彼可取而代也。”梁掩其口,曰:“毋妄言,族矣!”梁以此奇籍。籍长八尺余,力能扛鼎,虽吴中子弟皆已惮籍矣。(节选自《史记》)
<<<

除了“命比天高”,项羽尚有一“大胆”。这是其之所以能步入史册的第一因素吧。当然,还有其出身名门望族,赢在起跑线。我之前总结过现代“成功”人士的四个要素:一、占有一定数量的社会资源(政治资源、物质资源等);二、天资聪明(非智慧,这是天资);三、过人的胆量;四、好运气(这应该第一条更合适)。具备以上四条其一即可出人头地 --- 无非正邪,项羽除天资聪明一条除外而具三条。易中天《[[品人录]]》之品项羽第一条即为“贵族与流氓”,当然刘邦亦为“流氓”。看起来流氓乃能“成事”之重要条件之一,这和“大胆”殊途同归。近代的蒋介石也是一明例。

*项羽屠咸阳而东归 

<<<
项羽引兵西屠咸阳,杀秦降王子婴。烧秦宫室,火三月不灭。收其货宝妇女而东。人或说项羽曰:“关中阻山河四塞,地肥饶,可都以霸。”项王见秦宫室皆以烧残破,又心怀思东归,曰:“富贵不归故乡,如衣绣夜行,谁知之者!”说者曰:“人言楚人沐猴而冠耳,果然。”项王闻之,烹说者。(节选自《史记》)
<<<

项羽的“命比天高”是有一定的高度的,和陈胜吴广无二,仅仅为出人头地,衣锦还乡,他的天花板即为成为一方霸王,并无改造世界的雄心。甚至连一点悲天悯人的物我关怀都没有 --- 一把火������烧了秦宫,抢了钱和女人回家好得瑟。还是一心胸狭窄之人,发议论的路人甲也被他烹了。

*四面楚歌 

<<<
项王军壁垓下,兵少食尽,汉军及诸侯兵围之数重。夜闻汉军四面皆楚歌,项王乃大惊曰:“汉皆已得楚乎?是何楚人之多也!”项王则夜起,饮帐中。有美人名虞,常幸从;骏马名骓,常骑之。于是项王乃悲歌慷慨,自为诗曰:“力拔山兮气盖世,时不利兮骓不逝。骓不逝兮可奈何,虞兮虞兮奈若何!”歌数阕,美人和之。项王泣数行下,左右皆泣,莫能仰视。(节选自《史记》)
<<<

太史公真是妙笔。项羽陷四面楚歌绝境,美女良驹使其更显悲情。酒百杯,歌千阕,也不敌楚音一歌。

中国人不太喜欢喜剧,这可能也是中国人缺乏幽默感的重要原因,但中国人有英雄情结,所以英雄人物列传成为茶余饭后之飨。垓下之围使项羽成为悲剧英雄 --- --- 虽然有点气短,然“项王泣数行下”,英雄落泪何其悲哉。楚歌和美人又给英雄添了一把同情之火,让项羽成为失败的英雄,美人色衰、名士穷途、煮字绣文、同声一哭。这都是中国人历史的同情。


!! 刘邦
* 刘邦负伤劳军 

<<<
楚、汉相持久未决,丁壮苦军旅,老弱罢转饷。汉王、项羽相与临广武之间而语。项羽欲与汉王独身挑战。汉王数项羽。项羽大怒,伏弩射中汉王。汉王伤胸,乃足曰:“虏中吾指!”汉王病创卧。张良强请汉王起行劳军,以安士卒,毋令楚乘胜于汉。(节选自《史记》)
<<<

“项羽大怒”可能是楚汉之争期间项羽出现最多的情绪,除了其因怒自伤和颇为匹夫稚气,给中国留下了一个颇具气度的词:英雄气短。刘邦不管作秀也好,真心也好,负伤劳军还是值得称赞的。刘邦的这一行为让我想起了爱哭鼻子的刘备。世界上最有力量的是弱者,可使强者温柔。

* 汉高祖返乡 

<<<
高祖归,置酒沛宫,悉召故人父老子弟纵酒,发沛中儿得百二十人,教之歌。酒酣,高祖击筑,自为歌诗曰:“大风起兮云飞扬,威加海内兮归故乡,安得猛士兮守四方!”令儿皆和习之。高祖乃起舞,慷慨伤怀,泣数行下。谓沛父兄曰:“游子悲故乡。吾虽都关中,万岁后吾魂魄犹乐思沛。”(节选自《史记》)
<<<

衣锦还乡是中国人特有的一种小农意识情结。为什么不能“锦衣夜行”那?

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

在《[[忏悔录]]》(Confessions)中,卢梭声称他本来有可能成为一名伟大的植物学家:“因为我知道,世界上没有哪项研究比植物学研究更适合我天然的品味。”我不知道卢梭的天然的品味是什么,可能就是热爱大自然的秉性吧。虽然卢梭没有成为伟大的植物学家,但其在植物学领域也颇有名声,写就了植物学入门书籍《[[植物学通信]]》(这本书是由北大教授博物学家刘华杰带领学生翻译的,著有《[[博物人生]]》一书,植物学爱好者也可以看一看);而且研究植物的旅程,对卢梭的被迫害妄想症也起到了极大的安慰作用,“这门学科可以让投身其中的人忘却无聊的功利,以及现代文明的丑陋”。当然,卢梭也说了“亲爱的朋友,你一定不要给予植物学一种它本身所不具有的重要性;这是一种纯粹出于好奇心的研究,除了一个喜欢思考、心性敏感的人通过观察自然和宇宙的神奇所能得到的快乐之外,没有任何实际的用处。”所以,如果您在浮躁的社会难以体会安乐,不如进入植物的世界,获取一些神奇和宁静。这可能也是罗兰夫人所说的“认识的人越多,我越喜欢狗”的另一层解读。

前些日看《[[5G时代]]》一书,作者项立刚说,随着5G技术的应用我们马上要进入智能互联网时代。5G技术的应用确能促进万物互联,各种终端处在泛在网状态。但言之为智能互联网时代(这些话都是一些学者专家的语言,真要是智能互联网时代,先把百度干掉再说),为时尚早。互联网从诞生到现在尚区区几十年,如果要说人、物安全而和谐互联互通,人真要向大自然学习了。“在大自然中不仅每一个齿轮与其他的齿轮相互啮合,所有的一切都与其他要素相互交织成一张大网。“这个网络自地球大爆炸开始已经演变进化了亿万年,是真正的智能网。《大自然的社交网络》这本书可以为揭示了大自然智能网的撩起裙子一角。

《大自然的社交网络》这本书就为我们撩起了大自然神奇的智能网络的一角。作者彼得·渥雷本是德国“国宝级”作家,本质工作为森林管理者,所以对大自然有远观亵玩之便。本书既为其漫步森林二十年之观察、研究和体悟。读之,妙不可言,不忍卒读。实乃近年来罕见自然科学读本。除此,彼得·渥雷本还有三本书著作:《[[动物的精神生活]]》、《[[森林的奇妙旅行]]》、《[[树木的秘密生命]]》。后两本尚未读完,不可置否,暂付阙如,待以共飨。

《大自然的社交网络》之所以读起来有趣,是作者能见微知著,从一花一木一种自然现象说起,从而勾联出一个生态网络,展示一个神秘世界。接下来就从几个有趣的案例说起。

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

夜读《古今传记》(金元明篇),至《拊掌錄》“许义方妻”一节,笑喷。此段子常被郭德纲在相声中拿来开刷于谦。郭自己说喜欢读古文,看起来此言不虚。

> 许义方之妻刘氏。以端洁自许。义方尝出。经年始归。语其妻曰。独处无聊。得无与邻里亲戚往还乎。刘曰。自君之出。惟闭门自守。足未尝履阈(阈指门槛)。羣(同“群”)方咨歎(同“叹”)不已。又问何以自娱。答曰。惟时作小诗以适情耳。羣方欣然。命取诗观之。开卷第一篇题云。月夜招邻僧闲话。《拊掌录》-自号辗然子,阙名

另,郭德纲相声开场白中常说的一句俗语“江山父老能容,不使人间造孽钱”,实乃取之明代唐寅(唐伯虎)《言志》,原诗文为:“不炼金丹不坐禅,不为商贾不耕田。闲来写就青山卖,不使人间造孽钱。”

<$transclude mode="block" tiddler=bookkeywords/>
<div class="tc-subtitle">最後更新於<$view field="modified" format="relativedate"/>
<p>''关键词:'' {{!!description}}   |  ''综述:'' {{!!summary}}  
 | ''相关:''  {{!!relation}} </p></div>

正如之前看《[[图说区块链]]》。在一项新技术问世或一个变革到来之前,总是山雨欲来风满楼。最近5G叫嚣甚盛,身处风雨中,免不得要围观,不至于听风是雨。

此书对于互联网人可完全无视,因为书中并无什么新意。对于非互联网人士,可速览,基本上可以理解一下问题:

> 5G时代——什么是5G,它将如何改变世界?都在说中国5G世界领先,华为5G凭什么领跑5G?

除此,书中有一些观点也可以了解一二。

!! 互联网发展的几个阶段:

人类社会已经经历了六次信息革命。

第一次信息革命:语言的发明,让信息可以分享,帮助猿进化成为人类。 

第二次信息革命:文字的发明,让信息可以记录,是人类文明出现的标志。 

第三次信息革命:纸和印刷术的发明,让信息可以较低成本进行远距离传输。
 
第四次信息革命:无线电的发明,让信息可以进行远距离实时传输,是近代历史上影响政治、军事、文化的重要标志。

第五次信息革命:电视的发明,让信息可以进行远距离实时多媒体传输,从此信息带上温度、富有感情。电视是近百年来影响人类社会的重要信息平台,它的发明是人类文化、娱乐业发展的一个重要里程碑。 

第六次信息革命:互联网的发明,让信息可以进行远距离实时多媒体双向交互传输,开启了人类信息传输的伟大革命。互联网的出现,使媒体、娱乐、社会管理都受到巨大挑战,也在很大程度上影响了全球政治、经济、文化、娱乐等方方面面,重构了人类社会。

第七次信息革命是智能互联网,它是移动互联、智能感应、大数据、智能学习共同组成的新能力,不仅解决了传输问题,同时具备感应功能,而大数据与智能学习又能对数据进行收集、处理、整合,并在此基础上提供智能化的服务。

把5G看作第七次信息革命的冲锋号尚可解释,如果把接下来的互联网形态视为智能互联网时代,难免有点妄自尊大和短视了([[见此解释|2019年07月15日周一下午03:41:07]])。

!!互联网(5G时代)的核心价值:
与传统互联网不同的是,在智能互联网时代,自由、开放、共享将不再是核心价值。关于智能互联网的核心价值,我将其定义为四个精神,分别是:安全、管理、高效、方便。

!!互联网(5G时代)的基本精神:
如果说安全和管理是智能互联网的基本精神,那么高效和方便就是它的核心精神。

!!5G具六大特点
高速度、泛在网、低功耗、低时延、万物互联、重构安全。

!!5G应用场景
国际标准化组织3GPP定义了三大场景:eMBB(Enhanced Mobile Broadband)——3D/超高清视频等大流量增强移动宽带业务;mMTC(Massive Machine Type Communication)——大规模物联网业务;uRLLC(Ultra-Reliable Low-Latency Communications)——无人驾驶、工业自动化等需要低时延、高可靠连接的业务。

<$transclude mode="block" tiddler=booklogsinfo/>

人只有对大自然感同身受,才能得到随喜和安乐,才是对大自然最好的保护。

“一只蝴蝶在巴西轻拍翅膀,可以导致一个月后德克萨斯州的一场龙卷风。”(罗伦兹科学论文)在大自然世界中“蝴蝶的翅膀”现象普遍存在,诸如森林里一颗小小的榛子可能引起非洲猪瘟(目前正在爆发)。在一些自然林里,如山毛榉、橡树林、云杉等树木的果实是一些动物最重要的食物来源,如松鼠、老鼠、野猪和许多鸟类。特别是橡子尤其青睐,因为平均一颗能比山毛榉坚果重大约4克,但是脂肪含量只有3%,而淀粉含量则高达50%。所以橡子是森林动物当之无愧的首选食物。尤其在秋天,对动物来说,捡到橡子,就好像是中了六合彩。然而这一六合彩每三到五年才出现一次;其余时间,许多动物需要忍受饥饿,这才是常态。而这也恰恰解释了,为什么山毛榉和橡树不会在每个秋天都结出果实:因为这样,它们才可以调节森林里野生动物的数量,包括野猪、狍子、鹿、鸟类,以及一大群饥饿的昆虫。

特别是野猪,可以一下子就嗅出它们最渴求的果实,并且在短短几年内就将整片森林的果实啃食得干干净净。这种情况会导致整片山毛榉林不会再有新芽萌出,继而逐步老化和颓败。长期进化的树木当然知道怎么避免这种情况发生,不使野猪数量增加从而维护自身生存。所以,树木行之有效的办法是,找到一个统一的开花时间 —— 长时间不给森林供给果实从而饿死野猪,而要做到这点,树木之间就必须要互相约定好。如果只是一小片树林中的山毛榉,它们可以通过树根连接以及地面的菌丝来互相沟通,但这还远远不够。虽然这么做效果不错,但是为了达到抑止野猪数量的目的,“树木互联网”的影响范围还是不够广。因为野猪可以迁移到很远的地方,它们在森林里搜寻食物的范围可以一直延伸至10公里或20公里开外。所以树木必须在很大的范围内互相约定,这个很大的范围是指几百公里以外。树木究竟是如何做到的,人类还不得而知,但事实是,整片森林范围内,每一棵树都非常同步地结果实或暂停结果实。

这是多么神秘、神奇、让人着迷的“树木互联网”现象啊。树木根本不“木讷”!

那么橡子又和猪瘟什么联系那?

在森林里,野猪供食橡子时会顺便吃掉土壤里的蚯蚓,这也是野猪的食物之一。每平方公里的地下,存活着将近300吨蚯蚓。然而森林里另外一种生物就出生在这些蚯蚓身上,这就是血线虫。一旦野猪吃下蚯蚓,那些血线虫幼虫就会通过血管进入猪的肺部,猪成为新宿主。在猪身上它们会定居在支气管上,造成成年的野猪发炎以及出血,并产生抗体。而之后野猪将那些虫卵排泄出来,再回到蚯蚓身上,由此,整个循环结束。然而这个平衡有时候会被打破,一种叫蜱虫的非洲小虫子会通过吸血将野猪病毒在动物之间传播开,再由人类携带到世界各地,从而引起大范围的非洲猪瘟。

榛子和猪的关联已经被人类成功探秘,然而大自然中还有许许多多是人类尚无一探究竟的,如某些物种在秋天可以预报冬天的寒冷程度等。大自然是神秘、神奇和博大的,是我们人类生活的背景,在她面前我们不如多一些谦卑和畏惧。我总有一种预感,将来人类的毁灭一定是人类在大自然面前的自大的咎由自取。

大自然不仅一直供养着人类,而且也给予了人类诸多的安乐和精神上的慰藉。有人说中国人缺少宗教信仰,才导致诸多社会问题及对待大自然的方式。这让我想起前些日看法国唯物主义哲学家斯朋维勒《无神论的灵性小书》一书。斯朋维勒从小是个天主教徒,后来却变成了一个坚定的无神论者。斯朋维勒说,虽然宗教确有很多益处,能够酝酿出很多美好品质,比如一种人类社会不可或缺的团结感等。但一个人并不是需要皈依宗教,才能做个好人。没有宗教,人类照样可以过上人类文明强调的有灵性的生活。为了证明这种感觉,作者讲了一个亲身经历故事。他说,在自己二十多岁时候的一个晚上,他和朋友信步走入森林,想穿过那里走回家。开始,他们还一边走路一边开心地聊天、唱歌,但是慢慢地,大家都静下来了。这时候,他发现自己的头脑一下空白了,森林里是一种深沉的黑暗,而天上的星空却那么明亮。此时此刻的寂静是如此深奥、神秘,他突然陷入一种没有了语言和意义的虚空之中,脑海里不再有什么问题,只有一种狂喜而又接近无限的感受。

斯朋维勒提到的在森林里的这种无限虚空和狂喜,不就正是宗教所追求的境界吗?所以,我们并不需要先假设一个超自然的神,我们才能够得到这种体验,过上灵性生活。这种灵性生活就是人类面对宇宙的无垠、自然的崇高所升起的那种莫名所以、超乎语言之外的感受。这种感受曾经被弗洛伊德形容为“Ocean feeling”,海洋般的感觉,用来形容一种宗教上的灵性体验。这种体验是弥足珍贵的,它会让人接近崇高,感觉到世界上还有超乎个人事务之外的存在,觉察到在有限生命之外,还有一个广阔无垠的、不可知的力量。

什么是自然?自然是文明的对立面。

人只有对大自然感同身受,才能得到随喜和安乐,才是对大自然最好的保护。

''延伸阅读:''

 [[《植物王国》2012年英国纪录片在线观看|https://www.dandanzan.com/dianying/44218.html]]

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
惜名者伤其名,惜身者全其身。名利无咎,逐之无罪,过乃人也。

富贵有常,其道乃实。福祸非命,其道乃察。实不为虚名所羁,察不以奸行为耻。无羁无耻,荣之义也。

君子言心,小人攻心,其道不同,其效自异哉。

上不离心,非小人难为;下不结怨,非君子勿论。祸于上,无辩自罪者全。祸于下,争而罪人者免。 

贵以识人者贵,贱以养奸者贱。贵不自贵,贱不自贱,贵贱易焉。贵不贱人,贱不贵人,贵贱久矣。

谤而不辨,其事自明,人恶稍减也。谤而强辨,其事反浊,人怨益增也。 
<<<


以上“格言”或者说“醒世警言”皆出自一位奇人之口,此人便是冯道。冯道生于唐,卒于后周,一生历五朝、八姓(八个家族)、十一帝,有生四十年皆位居高官。“累朝不离将相、三公、三师之位”(《资治通鉴·卷二百九十一》),中国官场史上的不倒翁。

这就是厉害了。

五代十国乃中国历史上最动乱一段时期,军阀割据,战争频起,民不聊生。然一介书生能在这样的大环境下生存并纵横官场,并七十三岁高龄走完一生,其必有过人之处。《荣枯鉴》即冯道“不以为耻反以荣”生存哲学的经验总结。为什么说其为“耻”,这本书 — 包括冯道这个人,在历史上总是被文人所不齿。“从北宋鸿儒欧阳修到今日大家余秋雨,这些代表着主流的意识无不如此论断。除了将冯道其人视作‘小人之极端’外,连其著作《荣枯鉴》也被冠以‘小人哲学之精粹’”。这都要归咎中国古代文人的导师孔子,是道德绑架的始作俑者,孔子说“君子坦荡荡,小人常戚戚。”而作为乱世之民,或者说一个个体“小人”为了生存而圆滑世故游戏人间,何错其有?难道非以死而谢世方为正道?要记住,冯道并无作恶,不作恶即为善的一部分。

如果说《[[荣枯鉴]]》是一部“小人”哲学,那么《[[君主论]]》是一部“大人”哲学了。孰之大恶,当下立断。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

> 君子之於斯世也,孰不欲才加诸人,行足诸已。其肯甘於自弃乎哉!盖时有否泰分,有穷达,故才或不羁,行或不掩焉。-《青楼集》序

《青楼集》作者黄雪蓑乃元代文人。元代,在当时的文人来看,乃番人入驻中原,执国之牛耳。元代的文人之状可谓惨兮,如鄭元祐在《遂昌雜錄》中说“是時淮以北,舉不知有全書。“时运不济的元代文人怎么处世那?“当其泰而达也,园林钟鼓乐,且未央君子宜之。当其否而穷也,江湖诗酒迷而不复”,“百年未几世运中否?士失其业,志则郁矣。酤酒载严诗祸叵测,何以纾其愁乎?小轩居寂维梦,是观商颜黄公之裔。”回天乏术,唯有游戏人家了。“齐辈皆不屑仕进,乃嘲风弄月留连光景,庸俗易之。”

文人游戏人间,藏乐与民,自然有诸多胭脂气。《青楼集》即黄雪蓑收集整理的元代青楼之一代名妓花魁。不过这些女子并非以身作资皮肉乡里,而是以才名世,多以小曲小调为特长,声伎也。且多为良家女,或某富人之妻妾,多忠贞。

由此也说明了元曲为何能成为中国历史上一大文体。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
“梅花之影,妙于梅花。”窃意影子何能妙于花?惟花妙,则影亦妙。枝干扶疏,自尔天然生动。凡一切文字语言,总是才子影子。人妙,则影自妙。此册一行一句,非名言即韵语,皆从胸次体验而出,故能发警省。片玉碎金,俱可宝贵。幽人梦境,读者勿作影响观可矣
---《幽梦影》跋(清)张惣
<<<

不知是古人受孔圣人影响好为人师,还是受制于文体所限,多格言警句集,如唐寅《言志》、《娑罗馆清言》等。如上之书跋,《幽梦影》也是此类随笔体格言小品。

作者涨潮随不如张岱、李渔有趣好玩,但比之多了一些社会责任感,用今天的话说,涨潮乃一真正的社会知识分子 --- 多有对清政府的不满之辞,当然这也同他多次仕而不举、累试不第的经历有关,故而退而著书,著作等身(著名的作品包括《[[幽梦影]]》、《[[虞初新志|三家村公开版权精品书籍]]》、《花影词》、《心斋聊复集》、《奚囊寸锦》、《心斋诗集》、《饮中八仙令》等)。如张之所言 “十二年间,苦辛坎坷,境遇多违;壮志雄心,消磨殆尽”。与著书相比,涨潮更喜欢刻书、搜书、藏书,做一名出版家(清代刻书家)。涨潮曾云:“仆赋性迂拙,于世事一无所好,独异书秘笈,则不啻性命。”为此,他利用家财,广搜博聚天下奇书,又大量编书刻书,最终这一爱好耗尽了他的家产,晚年生活陷入困境。真乃一书痴也!

对于诸如此类格言警句小品实乃修身养性读物之佳品,怪不得林语堂对《幽梦影》青睐有加。不过《幽梦影》太过于清雅,“清代小资请调”浓厚。所言多为高人逸士的生活内容和思想情趣,世俗生活鲜有触及,而山林生活则总是被赞美和向往。正如涨潮书中第155则所言“立品须发乎宋人之道学,涉世须参以晋代之风流。”此句可为全书基调即作者处世哲学。

部分摘录:

<<<
“胸中小不平,可以酒消之;世间大不平,非剑不能消也。”

少年读书,如隙中窥月;中年读书,如庭中望月;老年读书,如台上玩月。皆以阅历之浅深,为所得之浅深耳。<<ref "①">>

藏书不难,能看为难;看书不难,能读为难(精读、仔细研读);读书不难,能用为难;能用不难,能记为难。

宁为小人之所骂,毋为君子之所鄙;宁为盲主司之所摈弃,毋为诸名宿之所不知。 

能闲世人之所忙者,方能忙世人之所闲。
<<<


《幽梦影》的核心内容内容并不多,而真正有趣好玩的在本书之外。涨潮的每一则格律清言下面都有一些涨潮朋友们的点评,这些人不乏当世名人雅士,还有和尚道士,甚而还有对点评的点评,包括讽嘲和戏虐。这就像今天的朋友圈或者微博。

如:

第107则。

>原文:看晓妆,宜于傅粉之后。 
>>评论:余淡心曰:看晚妆,不知心斋以为宜于何时? 
>>评论:周冰持曰:不可说,不可说! 
>>评论:黄交三曰:“水晶帘下看梳头”,不知尔时曾傅粉否? 庞天池曰:看残妆,宜于微醉后,然眼花撩乱矣

第92则。

>原文:藏书不难,能看为难;看书不难,能读为难;读书不难,能用为难;能用不难,能记为难。
>>洪去芜曰:心斋以能记次于能用之后,想亦苦记性不如耳。世固有能记而不能用者。
>>王端人曰:能记、能用,方是真藏书人。
>>张竹坡曰:能记固难,能行尤难。

又如:

第136则 

>原文:蝇集人面,蚊嘬人肤,不知以人为何物? 
>>陈康畴曰:应是头陀转世,意中但求布施也。 
>>释菌人曰:不堪道破。 
>>张竹坡曰:此《南华》精髓也。
>>尤悔庵曰:正以人之血肉,只堪供蝇蚊咀嘬耳。以我视之,人也;自蝇蚊视之,何异腥膻臭腐乎?
>>陆云士曰:集人面者,非蝇而蝇;嘬人肤者,非蚊而蚊。明知其为人也,而集之嘬之,更不知其以人为何物。

评中评:

第197则。

>原文:予尝欲建一无遮大会<<ref "②">>,一祭历代才子,一祭历代佳人。俟遇有真正高僧,即当为之。 
>评论:顾天石曰:君若果有此盛举,请迟至二三十年之后,则我亦可以拜领盛情也。 
>释中洲曰(此为一和尚):我是真正高僧,请即为之,何如?不然,则此二种沉魂滞魄,何日而得解脱耶? 
>>释远峰曰(另一和尚):中洲和尚,不得夺我施主。
>江含徵曰:折柬(也作折简。写信,这里意犹下了请帖。)虽具,而未有定期,则才子佳人亦复怨声载道。又曰:我恐非才子而冒为才子,非佳人而冒为佳人,虽有十万八千母陀罗臂,亦不能具香厨法膳也。心斋以为然否? 


-- -- --

@@color:gray;<i class="fa fa fa-info-circle fa-3x fa-pull-left "></i>@@  <<footnotes "①" "隙中窥月:从窗缝中窥看月亮,比喻读书仅仅窥见其一斑,并未见到其全貌,并不真正了解。 庭中望月:站在院子里观望月亮,比喻读书已能整体把握,得其全豹,但立足点还不够高。 台上玩月:在高大宽敞的月台上玩赏月亮,比喻学识很深,读书时已能做到取舍自如,尽得其精华。">>

<<footnotes "②" "无遮大会:佛教举行的一种大的法会,无遮的意思是宽大无碍、解免诸恶。也称般遮大会、无遮会或无碍会。这种法会通常五年举行一次,以布施活动为中心。">>


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

《古今名家文集》(宋代篇上 )晁咏之“书张主客遗事”篇: 

<<<
祖宗以武定天下。至章圣时益厌兵。澶渊之役。契丹之众。可覆而取也。纵其去不忍杀。自是不复言兵。封泰山。祀汾阴。天神降格。休祥并至。以文太平。缙绅之士。以此相继受爵秩于朝。将相大臣。往往列于三公。侍从多至丞郞以上。其以武受赏者。殆无其人。
<<<

穷兵黩武,这是个贬义词,指政治家有野心而又嗜血好战,既而民不聊生,如秦始皇。穷兵黩武的反面典型,应该是宋朝一代了。很难用一个词来形容非穷兵黩武的宋朝。说它积贫积弱,非也!赵宋在当时是世界上最富有的国家,没有之一,而且已经有来资本主义萌芽的萌动。只能说有宋一代是文人积弱。

上面晁咏之“书张主客遗事”一文透露出两点信息。一,赵匡胤以降日益厌兵,文人盛武人弱;二,澶渊之后,自削其芒,刀枪入库,马放南山。

澶渊之盟之后,宋辽以兄弟相称(有点类似现在的全天候战略伙伴,如中朝、中巴),辽圣宗称宋真宗为兄,宋真宗称辽圣宗为弟,称萧太后为叔母,互约为兄弟之国,“所有两朝城池,并可依旧守存,淘濠完葺,一切如常,即不得创筑城隍开拔河道”,共同声明“质于天地神祇,告于宗庙社稷,子孙共守,传之无穷。有渝此盟,不克享国,昭昭天鉴,当共殛之”。这种修好使百年内再无大型战争,为宋的发展创造辽非常好的外部环境。这是硬币的一面,另一名面那?宋代没有了忧患意识,加上文人治世,“忘战去兵”,“武备皆废”,军事力量积弱难返,逐渐也影响了国之精神和意志。王铚《默记》卷中记录宋神宗就曾“有取山后之志”、“一日,语及北虏事,曰:‘太宗自燕京城下军溃, 北虏追之,仅得脱。凡行在服御宝器尽为所夺,从人宫嫔尽陷没。股上中两箭,岁岁必发,其弃天下竟以箭疮发云。盖北虏乃不共戴天之仇,反捐金缯数十万以事之为叔父,为人子孙,当如是乎!’,已而泣下久之,盖已有取北虏大志。”。一国之主如此,国家何谈意志。

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
宋人或得玉.献诸子罕 <<footnote "①"子罕为宋司马,相当于现在的国防部长">>.子罕弗受.献玉者曰.以示玉人.玉人以为宝也.故敢献之.子罕曰.我以不贪为宝.尔以玉为宝.若以与我.皆丧宝也.不若人有其宝.稽首而告曰.小人怀璧.不可以越乡.纳此以请死也.子罕置诸其里.使玉人为之攻之.富而后使复其所.《左传·襄公十五年》。
<<<

这段对话说的真好。子罕贪欲和宝玉面前,能克己而自珍,实乃高贵尚品。宋人意识到“小人怀璧.不可以越乡”,献宝获命。贪是人性,最难克服,能在贪欲面前头脑清醒,是可忍孰不可忍啊。

念楼曰:

<<<
古时玉的价值超过今时的钻石,虞公为玉失国,卞和为玉刖足,秦王为换赵之玉璧愿割十五城,谁不爱玉呢?
<<<

<$transclude mode="block" tiddler=bookkeywords/>

<$transclude mode="block" tiddler=booklogsinfo/>

<<<
范文子<<footnote "①"范文子(士燮)是武子(士会)的儿子。武子为正卿,执国政,灵公八年告老,晋遂以郤献子(郤克)为正卿,并立范文子为卿。">>暮退于朝.武子曰.何暮也.对曰.有秦客廋辞于朝.大夫莫之能对也.吾知三焉.武子怒曰.大夫非不能也.让父兄也.尔童子而三掩人于朝.吾不在晋国.亡无日矣.击之以杖.折委笄.--《国语·晋语五》
<<<

范文子下班有点晚,他父亲武子问为何这么晚。范文子说,秦国的使者在朝上发飙刁难,大夫们都回答不上来,我回答了其中三个问题。武子很是生气的说,你这个浑小子啊,那些大夫不是回答不上来,是故意不回答而让那些老人或者前辈们来答,你这个浑小子却抢风头了三次,我若不在了,你小子算是彻底完了。说着并用拐杖打范文子,帽子上的笄子也被打断了。

父教子,无可厚非。事之缘由是范文子先回答了问题。这里包含着两种典型的中国文化,一是枪打出头鸟,二是按资排辈。枪打出头鸟的文化限制了人性中的勇气(灭人欲)和“在现场”的责任感,按资排辈泯灭了年轻人的创造力和奋进的动力。二者都是贻害千年的中国人精神内核要素,教导人应该就范于既定的社会规范和秩序,违反或打破者即为妄人,就范和遵循者即为有教养。

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

昨天读到[[武子驯子|2019年08月11日周日下午10:35:01]],我还颇为范文子愤愤不平。今天读这一则,满是温情。

<<<
靡笄之役.郤献子师胜而返.范文子后入.武子曰.燮乎.女(同汝)亦知吾望尔也乎.对曰.夫师.郤子之师也.其事臧.若先.则恐国人之属耳目于我也.故不敢.武子曰.吾知免矣. --- 《国语·晋语五》
<<<

儿子凯旋归来,老父在长长的队伍里翘首寻找着儿子的身影。儿子为彰显领导的功绩,甘愿做绿叶,走在队伍的最后面(经过上次老父一巴掌,这次乖多了)。小故事如果单说为人处事大道理,并没有什么亮点。然,短短百字中,老父一句话 “''燮乎,女亦知吾望尔也乎''”(燮儿呀,你也晓得我在眼巴巴地望着你早些回来吗?),整个小文一下子饱满起来。如果删去这十个字,文章便没了“颊上添毫”之妙,感染力和可读性都会差多了。

真情,才是最能打动人的。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
昔(同夕)者.庄周梦为胡蝶.栩栩然胡(通蝴)蝶也.自喻(通愉)适志与(通欤).不知周也.俄然觉.则蘧蘧然周也.不知周之梦为胡蝶与.胡蝶之梦为周与.周与胡蝶.则必有分矣.此之谓物化.  --- 《庄子·齐物论》
<<<

世界上伟大的梦莫过于“庄周梦蝶”了吧,几千年来这个梦被无数人讨论、诠释和再诠释。而我的理解则是,蝴蝶代表着意象世界的标的,是形而上的;庄周则为现实世界的实在,物理的,形而下的;梦为场景,转场和入场,意象和现实的转化;物化则为实在和意象互转的阐述。

哲学的概念是外来词,用哲学的思维框架来理解“庄周梦蝶”亦无可厚非。现实中我们经常有“庄周梦蝶”,不一定非要在晚上做梦,一件事情假设多了,久而久之也物我两忘,很难分清是想象还是现实。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
吾生也有涯.而知也无涯.以有涯随无涯.殆已.已而为知者.殆而已矣.为善无近名.为恶无近刑.缘督<<footnote "①"督,人背部的中脉。缘督,守中合道的意思">>以为经.可以保身.可以全生.可以养亲.可以尽年.--- 《庄子·养生主》
<<<

庄子这句话本可熟视无睹。然锺叔河老先生的“念楼曰”点评则足可感叹唏嘘。

<<<
我本凡夫,颇多俗念,一生像玻璃窗内的苍蝇,碰壁碰够了,岂止过头,没碰断头已属万幸。行年七十,方知六十九年之非,读龚定盦(ān)<<ref "②">>、瞿秋白<<ref "③">>“枉抛心力”之句,觉得悔悟真是来得太晚了。秉烛而行,宁可摸索,决不再盲从乱碰,庶几可以尽年乎。
<<<

---

@@color:gray;<i class="fa fa fa-info-circle fa-3x fa-pull-left "></i>@@ <<footnotes "②" "虽然大器晚年成,卓荦全凭弱冠争;多识前言畜其德,。莫抛心力贸才名">>

<<footnotes "③" "《浣溪沙》廿载浮沉万事空,年华似水水流东,枉抛心力作英雄。湖海栖迟芳草梦,江城辜负落花风,黄昏已近夕阳红。">>
@@ 

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

《[[正念的奇迹]]》这本书经常在营养性(鸡汤)书单上看到,我很好奇什么是正念?正念是不是所谓的积极、阳光和乐观的态度?唯心主义能带来什么样的奇迹?

书的作者是一行禅师,越南人。此位老兄有点像西藏的达赖,除了他们和政治的纠缠外,一行禅师更像一个义工或者自愿者,20世纪60年代在越南创立社会服务青年学校,推动“入世佛教”,指引年轻人以慈悲精神切实地投身社会运动。毕业后,学生们运用所受训练援助在战乱中被俘虏的农民,帮忙重建被轰炸的村庄,教育儿童,建立医疗点,组织农业合作社。从这一点来看,达赖不如一行禅师,不管什么养的信仰和主张,对人类有益的才是好的。

“正念”本自《正念经》。《正念经》说:

<<<
“行走时,修行者应当觉知到他正在行走;坐下时,修行者应当觉知到他正在坐下;躺下时,修行者应当觉知到他正在躺下……无论身体是何种姿势,修行者都应当对此有所觉知。如此修习,修行者才能观照内身,直入正念,安住其中……”
<<<
正念即对当下的实相保有觉知。用日本流行的禅修话语来说,即活在“此岸”,保持“在此岸”,不渡“彼岸”。

如何修习正念?

一行禅师的回答:专注工作,保持警觉和清醒,准备好应对任何可能发生的状况,随机应变。这就是正念。

禅坐和有觉知的呼吸是修习正念的一种方法。呼吸可以防止心念散乱,是一个自然且极为有效的方法。呼吸是连接生命与意识的桥梁,让你的身心合一。不论何时,心念一旦游离不定,都可以用呼吸作工具,重新看好你的心。有觉知的呼吸本身就是正念。

这和认知科学中“[[心流|心流:最优体验心理学]]”现象异曲同工,亦即弗洛伊德说的“[[Ocean feeling|2019年07月23日周二下午10:57:28]]” --- 海洋般的感觉,皆是人追求灵性生活的一种手段。

正念又如何带来奇迹那?

一行禅师说:奇迹就是在大地上行走。这样的说法过于玄虚。不如换句说法,正念可以让我们随时沉浸在当下,从而保持安乐,体验有神论者追求的灵性的生活。在这样的状态下,奇迹自然发生。



<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>
《[[七十年代]]》看了不到三分之一,已经被作者的回忆所震撼。这种感觉之前从没有过体验,是一种比绝望还让人窒息的沉重,以及由当下所衍生出的大雾弥漫般的迷茫,轻如鸿毛的无力感。在七十年代现场的那波人正值青少年,却被政治当作试验品推上机床,在时代的洪流中被绞杀。回忆己身,又何尝不是,被教育制度、高考制度以及社会资源配给制度轮奸和欺凌,那些年少时期的梦和仅有而不多的兴趣爱好被消耗和泯灭。还好,自己尚能在此写些文本记录,那些在七十年代现场的年轻人是选择性的被忘记,被国家记忆所抹去,在恐惧面前集体失声。

历史是什么?历史就是一群蚂蚁看到另一群蚂蚁的镜像。

关于七十年代,《[[七十年代]]》主编之一北岛如是说:

<<<
二十世纪七十年代并不是一个很显眼的年代,尽管在这十年里也有很多大事发生,其中有些大事都有足以让世界历史的天平发生倾斜的重量。但是,前有六十年代,后有八十年代,这两个时期似乎给人更深刻的印象,特别对中国人来说,那是两个都可以用「暴风骤雨」或者「天翻地覆」来形容的年代,而七十年代给人的感觉,更像是两团狂飈相继卷来时候的一小段间歇,一个沉重的喘息。这个十年,头一段和六十年代的狂飈之尾相接,末一段又可以感受八十年代狂飈的来临,无论如何,它好像不能构成一段独立的历史。这十年显得很匆忙,又显得很短暂,有如两场大戏之间的过场,有如历史发展中一个夹缝。
<<<

《[[七十年代]]》这本书收录的几十位作者,虽然皆为那个时代的翘楚,具有一定的影响力和话语权,然而这些作者出身不同,性情各异,决定了在那个年代的命运境遇也不尽相同。有人在死牢里度过,有人在边远山区度过,有人在北京长安街国营单位度过。所以各自的文字和文字背后的情绪迥异,有血泪控诉,有乐观浪漫主义,也有不屈不挠的奋斗故事。对于一个时代来说,区区几十人如沧海之一粟,它只是一部分人或一个阶层的缩影,占大多数的农民阶层付之阙如。

下面我就书中某些共性做些归纳。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

《[[好色的哈姆莱特]]》,看书名即可窥见个中“端倪”。没错,这是一本一本正经聊情色的书,有几个主题组成:镜子里的妖精、爱你就打你屁股、吊起身子提起腿、黄段子和小册子、画春宫的女人们、肉到用时方恨少等,书名“好色的哈姆雷特”是其中一篇的名字。

作者,小白。至今我也不知道小白是谁,但小白的文字写的着实有趣 --- 抛开色情主题,而行文又写的严谨,颇有学者之风,引经据典,钩沉索引, 且引用的素材多为一手资源,是作者在国外历史和原著中亲自扒拉出来的,可见小白外文功力了得。和最近看的另一本性学专著《[[色情]]》相比,虽《[[好色的哈姆莱特]]》内容不够系统和具有深度,但视为性学玩票作品实为佳作。

书中,作者对色情进行了解析。“色情是廉耻观念的产物,廉耻是色情的边界,是色情的背景,也是色情的尺度,色情本身无法定义自己,是贞节观与廉耻感定义了色情。不仅如此,廉耻总会成为色情的强化反应添加剂,色情的强度总和廉耻感的强度相关联。色情是黏糊糊的,没有渗透性,廉耻感像注射器的针尖,刺破、引导、深入,色情因而能够深入肌理。”

而《[[色情]]》对色情对阐述就晦涩对多了。“整个色情行为的原则在于摧毁封闭的存在之结构,也就是摧毁处于正常状态的双方伴侣各自的存在结构。”“色情在我眼中是一种失衡,在这种失衡中,存在本身有意识地质疑自我。从某种意义上看,存在在客观上失去自我,但是主体会与失去自我的客体认同一致。如果有必要,我可以说,在色情中,大我(JE)失去自我。也许这是一种幸运的境遇”

写情色的书籍大多难免陷入过犹不及的两个窠臼,要不太过于规避情色主题的趣味性而显得假正经,要不太过于强调趣味和卖点而显得粘湿腥臭,《[[好色的哈姆莱特]]》则以情色的几个高光点入手,从考据中展示历史的色情细节,当然包括物/器具和人以及体位和审美等。

在色情现场,镜子在形而上有何意义?小白从古埃及的纸莎草手卷中的镜子谈起,再到提香的画《维纳斯与镜子》和塞内加《自然的研究》一书中记载的贺斯丢斯的淫乱生活,“在春宫画中,镜子是对画面视野的延伸,是对色情想象空间的扩展,是对画中人物心理的窥测,它既向画中人揭示了他视线以外的东西,也向画外的看画者揭示更强烈的旖旎春色。”““镜子会唤醒、激发、无限地放大、最后榨干你身上的欲望,欲望总归有点妖里妖气,人们相信镜子会逼出你身上的这股妖气。”镜子在色情现场最后被带入到近代历史,前影像时代:“《我的隐秘生活》中,镜子开始进入狂欢节,镜子终于进入、参与、扩展了色情的疆域。镜子成了色情实验主义者的辅助观察工具;成了阳具崇拜主义自大狂自我证实的利器;镜子也成了色情狂对人性的心灵感受加以脱敏的媒介,色情的主体通过镜子的映射,成为被看的客体,人在这一虚拟的物化过程中彻底沦为色情机器。”“镜子是前电视时代床头意犹未足的情人们的自拍摄像。”

关于打屁股 --- 作者也在书中了大屁股的风尚,作者从行为心理学上进行了总结:“要对另一具身体宣布权利(或者承诺),没有比屁股更合适的地方了。打屁股的权利源于身体依附关系。打的是屁股(bottom),警告的是身体(body)。打屁股意味着对身体的占有权,意味着可以任意处置那屁股所属的身体。屁股位处身体隐秘的中央,其重要性应从消极方面来理解,即遮掩着的屁股并不为身体带来荣耀,而露出的屁股却会给身体带来羞辱,屁股本身没有尊严,而打屁股却可以让人失去尊严,这不仅因为屁股内涵的部分生理功能,更因为屁股之全然不设防。即使打脸颊也会遭遇目光的凌厉反击,屁股却只会泛起几条可怜的印子,徒劳地试图唤起施打者的怜悯。”

//接下://

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

读这两本书  --- 《宫女谈往录》和《[[太监谈往录]]》 --- 纯粹是为了猎奇和消遣。类似的书还有之前看过的《[[齐如山回忆录-清宫史话]]》以及德龄公主的《我在慈禧身边的两年》。有意思的是,这两本书都一致不认可德龄公主的《我在慈禧身边的两年》所言,甚至对德龄公主的身份都不认同。

《宫女谈往录》的作者是人民教师金易和其夫人合著,记录了从前伺候慈禧的一位宫女的谈话,语言比较老派,与齐如山的《清宫史话》风格相似 ,估计明国时期民间文人 --- 非知识分子或学术人士 ---都这路子,间或老北京人的文字风格如此,有点说书人的腔调。《太监谈往录》则是一名货真价实的太监(信修明)的回忆录。从史料价值来看,这两本书都有一些参考价值,革新了我对末世清宫的一些看法。

不管宫女也好,太监也罢,都是社会最底层的人。虽然寄生于皇家,都是迫不得已而为之,包括清末鼎鼎有名的李莲英。这些人自幼浸淫在国家最够权利机构,所见所闻自有一套系统和特殊生存法则,而他们眼中折射出来的帝王家也并非影视剧展示的锦衣玉食歌舞升平,甚至不如富家生活来的惬意和爽快。而其所言,如对慈禧太后的赞誉之词,不能用现代人的价值观来衡量,还原历史现场都是可以理解的。而这些人在一些历史事件的第一现场的回忆是对官方历史记录的有价值的补充,如慈禧西逃,历史的真实就在于第三只眼看世界。

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
臣为河东掌书记时.奉使中山.过井陉之险.惧马蹶失.不敢怠于御辔.及至平地.谓无足虑.遽跌而伤.''凡蹈危者.虑深而获全.居安者.患生于所忽''.此人情之常也. ---《全唐文》卷八百五十七
<<<

之前看冯道的《[[荣枯鉴]]》似乎没有看到此文,而《全唐文》的这一则实为冯道在乱世能历五朝八姓十一帝而不倒的处世哲学之核心要旨。恰巧,下午在路上读到阮一峰整理的华为内部讲稿“[[任正非管理思想|http://www.ruanyifeng.com/blog/2019/08/ren-zhengfei.html]]”提到,“任正非最大的特点,就是他有极强的生存危机感”。居安思危谁都有可能这个意识,而真正每日所思所行能如履薄冰并非谁都做得到的。然而,如我辈芸芸众生身无长物,不怕丢了什么江山基业,就不要战兢惕厉了,每日过的快乐则为要旨。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
一命而偻.再命而伛.三命而俯.循墙而走.亦莫余敢侮.饘于是.鬻于是.以糊余口.--- 《左传·昭公七年》- 正考父 <<footnote "❶"正考父,春秋时宋国人,孔子的祖先。">>
<<<

译文://一接受任命,便恭敬地把头低;再接受任命,我的头低得更低;第三次受命,弯下腰深深鞠躬,走路总挨着墙基——能够这样做,便没谁会将我欺。
(这是我家煮粥的锅,)稠的总煮在这里头,稀的也煮在这里头,够吃了便别无所求。//

上面这段话是一段铭文,是正考父自家锅(鼎)上的鼎铭,是他家的家训 --- 居家处世的格言。去今已二千八百年。

看到这段话,我第一反应是:怎么这么像日本人的礼仪。日本人给人的印象总是那么彬彬有礼、谦逊拘谨。在现代中国完全没有发现这种遗风。

《左传》中记载,鲁国的大夫孟僖子临终时,以正考父鼎铭为例劝诫子孙后代,礼让是做人的根本,正考父“其共(恭)也如是”,可谓“有明德者”,“若不当世,其后必有达人,今其将在孔丘乎”(若不是现在,以后必有圣人出,现在是不是已经降临在孔子身上了)。

铸鼎传世,修身正徳,终成世家。

贵族,何为贵?乃在其积极的精神;世家,何以续,乃在其精神传承。非一朝一夕之功。

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
愚自少读书.有所得辄记之.其有不合.时复改定.或古人先我而有者.则遂削之.积三十馀年.乃成一编.取子夏之言<<footnote "❶"《论语·子张》:“子夏曰,日知其所亡(无),月无忘其所能,可谓好学也已矣。”">>.名曰日知录.以证后之君子. --- 《日知录》<<footnote "❸"《四库全书总目》谓其学有本原,博赡而能通贯,故引据浩繁,而抵牾者少,非如他人知其一而不知其二者。此评价可谓极高,">>
<<<

这是顾炎武八十余万字的<<footnote "❷" 顾炎武,明末清初昆山(今属江苏)人,学者称亭林先生。">>《日知录》五十六字前言(谦虚克制的有点过分),读之颇有同感。做此网站(日子 RIzi.Me)目的也是为了“有所得辄记之”;“其有不合.时复改定”,日常维护此网站亦是如是,如有不妥,随时修改更新;“古人先我而有者.则遂削之”,这一点对于我恐难企及,只能在先我者的基础上附会“蛇足”了。“积三十馀年”,尚不知未来如何,且这样坚持下去。不过比顾炎武略显心安,其《日知录》“以证后之君子”,而我的“日子”只为我读,不为读我。

这样和顾炎武颃颉一通,虽有贴金之谦,姑且为了不妄自菲薄吧。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

农村永远都是处在历史聚光灯的外围,是高光的背面。

在血热和动荡的七十年代,农村又是一番什么样的场景那?几十万城市知识青年上山下乡大运动对农村又有何影响?是积极的还是恶劣的?八九十年代“苦难文学/寻根文学”浪潮中所追忆的是农村的美好还是对伤口舔舐的痛楚?

在国内关于七八十年代探讨和研究的书本身是少之又少,大运动背景下关于农村和农民的文本记录更是绝迹。在这本剑桥版《七十年代》中,我在一些人点点滴滴的回忆文字中找出了一些片段,大致可以拼凑出那段时期农村的一组剪影。

<<<
有一天,在田里翻着红薯秧子,不知为何,竟有两辆卡车拉了革命者的青年,架着机枪,从田头公路上驶过。突然,他们朝着田里的我们,打了一梭子机枪。子弹就落在田头的草上。草摇土飞之后,当过兵的一个退伍军人,突然大唤:“卧倒——”社员们就都学着他的样子,各自卧伏在了红薯秧的垄沟。起来之后,卡车已经远去,载着革命者和他们的笑声。''不知这革命从哪而来,又到哪儿而去。''于是着,生产队长就对着革命的背影大喊大骂:“操你们奶奶,我们种地,你们革命,井水不犯河水,碍着你们啥儿事啦?!” 乡村,不是那个年代的主体,不是革命的主体。那个年代,和今天的改革开放完全一样,主体乃是城市,而非乡村和十亿农民。是曾经在新、旧中国的革命中都与其有过联系的人。但乡村,解放前是过中国革命的主要阵地;而在解放之后,除子“大跃进”和“三年自然灾害”,或多或少,已经有些角色变化,只是革命主角的群体配角。是革命漫无边界的辐射地带。只是革命兴起时的必然牺牲和最终成就革命的辽阔地缘。“大跃进”和“三年自然灾害”,最深刻的教训,就是革命出产激情,并不生产粮食。三年“自然灾害”时,饿死的人成千上万。堆将死尸,能坝起一个新的三峡大坝。这就证明,''无论如何革命,乡村还要种地。 也必须种地。 ''
<<<

上面这段是《七十年代》中阎连科回忆录的一段文字。“操你们奶奶,我们种地,你们革命”,可能这是七十年代农村对文化大革命对真实呐喊。那些整日躬着脊梁脸朝黄土背朝天的农民,''“不知这革命从哪而来,又到哪儿而去。”''而那些所谓的知识分子下乡到农村,到农民中去学习再锻炼也不过是过家家式的角色扮演,虽然给农村带来了点滴的新鲜玩意儿,可看起来像鬼子进村似的,吃喝玩乐,还有“花姑娘”。

<<<
事实证明,他们的确来之遥不可及的、我梦寐以求的那些城市,六人、七人,家在省会郑州;还有一个,来之洛阳。他们被村人恭敬地安顿在特意收拾干净的大队部里。村人们敬着他们,就像敬着自己的祖先。因为他们能从城里给村里带来一些买不到的化肥、布匹和火柴等。极度的革命与计划经济所导致的物质贫困,是连种地的农民上街买个烧饼也需要一两粮票。可是国家,却只给农民下发劳动的义务,并不下发多少粮票、煤票和足够的布票以及别的票证。这些东西,知青们虽然不多,但却多多少少,总是神奇的有着。于是,他们给乡村带来了一些农民的急切之需,农民就自然感恩戴德,不让他们下田,不让他们种地,最多最多,就是让他们在田头看看庄稼,吹吹笛子;举起柳枝,哄赶一下落进田里的飞鸟和窜进庄稼地的猪羊。

那时我小,看知青们不下地劳动,穿得光鲜干净,日子就是在村头漫步和吹笛,也就渐渐明白,乡村人是如此的低贱,而城市青年,竟是如此的高贵神仙。

他们吹笛散步,指着从他们面前过去的农民,偷偷笑着说些什么。到了吃饭时候,午饭或是中饭,村里各家讲些卫生的农民,还要负责给他们烧饭——那个年代的术语,叫做“派饭”。一家一个、两个知青,一般是一派一周,周后换户。
<<<


<<<
是个男的知青,强奸了村里一个女的孩子,十六七岁,她去地里割草,被知青骗到屋里生生奸了。事情的结果,是那女孩从知青点里哭着出来,就在村头投河自杀。而那男的知青,听说女孩死了,也就连夜逃出村庄,回了城里。女方父母,为此痛哭不止,葬了女儿,也曾上告政府,可政府并没有进城抓人。

只是政府的干部陪着男的父母,从城里来到乡下,作赔了一些钱物。还有,世界上最为真城的一种啰嗦的道歉。然在半年之后,有了同类事情,犯人是着农民,虽为强奸未遂,人却猛地一下,轰然毙了。
<<<

如果说鬼子进村的行为都是亲属不如,但如上所述的行为简直就是魔鬼在纵然禽兽。诸如此类恶性事件以及城乡男女青年之间的悲剧在那个时代可谓成了一种社会现象,后来一位上海作家以之写成小说《虐恋》,还拍成电视剧风靡一时。

<<<
就在这湾空旷之中,我开始对这个世界有了一种更为复杂的困惑;对那些知青,也不再存有仰视和羡慕,而且还生出了一丝怨恨,深藏在了自己的内心。从此,记住了他们在村里的不劳而获和偷鸡摸狗;记住了他们在我们乡村和度假一样的生活。不太明白,我们乡村本就田少粮少,毛主席为何还要派这些城里的孩子,到这儿祸害乡村的人们。也就盼着他们赶快离开,回到他们家里,让城市乡村,彼此平静,相安无事。
<<<

知青文学或者说八十年代流行起来的苦难文学是一种“苦难”的话,用阎连科在文章结尾的话:

<<<
说句实在,八十年代之初,中国文坛轰然兴起的“知青文学”,把下乡视为下狱。把一切苦难,多都直接、简单地归为某块土地和那土地上的一些愚昧。这就让我常想,知青下乡,确实是一代人和一个民族的灾难。可在知青下乡之前,包括其间,那些土地上的人们,他们的生活、生存,他们数千年的命运,那又算不算是一种灾难?
<<<

<<<
直到今天,对于知青我都没有如许多的人们说的那样,感到是因为他们,把文明带进了乡村。是因为他们在乡村的出现,才使农村感受到了城市的文明和文化。于我最为突出的感受,就是城乡的不平等差距,因为他们的出现,证明了远远大于原有人们以为的存在,远远不只是一般的乡村对都市的向往与羡慕,还有他们来自娘胎里的对农民和乡村的一种鄙视。
<<<

在整理这个读书笔记的时候,我刚好在看一部年代电影《我们的青春岁月》。电影中那些已白发染头的老年人在回忆自己之情岁月时充满了热血和深情,可是在我整理完这则读书笔记的时候,电影中企图传达给观众的情绪瞬间在我面前扭转,化为乌有。历史的叙事往往充满了悲情,并幻化为一种美学。可真实的历史并非如此,真实的历史往往是由苦难和细节组成,是由倒下去的奠基而成的舞台,叙述者才能在这舞台上回忆、缅怀和歌颂。

''相关影视作品:''[[《我们的青春岁月》|https://53ys.cc/play/184680-4-1.html]]
<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
许彦周诗话云.''东坡诗不可轻议.词源如长江大河.飘沙卷沫.枯槎束薪.兰舟绣鹢.皆随流矣.珍泉幽涧.澄泽灵沼.无一点尘滓.''只是体不似江河耳.林艾轩论苏黄云.譬如丈夫见客.大踏步便出去.若女子便有许多妆裹.此坡谷之别也.---  王士禛《池北偶谈》卷十八。
<<<

许彦周评说:“苏东坡的诗不乏小毛病,却不能轻易批评它。就像长江大河,当然会挟带泥沙,卷起泡沫。在它的水面上,既有精美的游艇航行,也漂浮着破烂杂物。若是好环境中的一眼井泉,一处池塘,一条山涧,水当然很清,甚至没有一点杂质,但它们的规模和气势,又怎能和大江大河相比呢?”

林艾轩评论:“男子汉去会朋友,提起脚便走。如果是女士们,便少不得梳妆打扮,费多少力气。这就是苏东坡和黄山谷(黄庭坚)的不同。”

这是大家和名家的区别。

书看多了,逐渐具备一种能力,能识别书品质之高下,是大家之作还是名家之作 --- 这里权不论名头,只论作品之气度。大家之作虽有不拘小节信手拈来之弊,但读来如大江大河之滔滔,气贯长虹之凛然;而名家之作虽工于技精于细,却总免不了有大姑娘上桥似的胭脂气和做作。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
王安丰妇常卿安丰.安丰曰.妇人卿婿.于礼为不敬.后勿复尔.妇曰.亲卿爱卿.是以卿卿.我不卿卿.谁当卿卿.遂恒听之. --《世说新语·惑溺》。
<<<

晋代学术思想由经学转为流行玄学,文人大爱清谈,后人常用“晋代遗风”(或魏晋风度)代之。这则小故事蛮有意思。上面的王安丰即晋代竹林七贤之一王戎,王的老婆常对王安丰做一些亲昵的行为,王有点不习惯。王的老婆说“我叫你亲爱的,教你小宝贝,是因为我爱你。我不叫你亲爱的,谁应该这样叫你那?”在古代女子能说出这样对话,实属罕见。由此可见,晋代女人也不亚于男子,也有突破世俗,标新立异之风。

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

彼得·渥雷本的这本书《森林的奇妙旅行》没有之前看的《[[大自然的社交网络]]》有趣有料。这本书更像是一本森林探险指南。不过开卷还是有益的。

书中提到一种森林法则:身形越大的动物,能被看到的机会就越小。原因有二:一,越大的动物需要越广阔的生存空间;二,食肉动物比食草动物拥有更大的活动区域。而人类好对动物的大小也存在着“歧视和偏见”,对生物尊重程度的次序常常与生物的大小相关联。例如无处不在的真菌,往往被人类所忽视。

真菌对与植物和森林来说可谓是最重要对伙伴,它们就好比是森林警察,是腐肉和害虫的清理者。“通过将自身环绕在树的根须顶端,并在上面继续生长,来帮助树木寻找水和营养物质。借助棉花状的黏稠物质,菌类将自身的有效表面积扩大了好几倍,相应地也将更多重要的营养物质带进树里;菌类可以阻止重金属一类的有毒物质侵害它们绿色的小伙伴,还可以提供一道有效的屏障,来抵御其他有侵害性的菌类。 菌类的作用远不只这些。树木之间能通过根系相互沟通,比如在面临虫灾或者旱灾威胁时,它们可以互相警告。但是树木自身的根脉无法伸展至所有的角落,于是菌类的经络就接替了继续向远处传递信息的任务。科学家称此为“树木互联网”。树木对于菌类的这项服务也给予了皇家礼遇般的回馈,树木将接近三分之一的产物——大部分以糖分的形式,赠予了这些隐秘的助手。三分之一是什么概念呢——大约是整个树干的木材那么多的物质(最后三分之一的物质用于生成树枝、树叶以及树上的果实)。菌类需要这些充足的能源,不仅用于维持生计,而且为了结出“果实”。那些你可以采集的菌菇。”不过不要小看了真菌的单个个头,它实际上是一个疯狂的家伙,只不过人类看不到或者视而不见而已。“迄今为止,发现的最大菌类是位于美国马卢尔县国家森林公园的一种深色的蜜环菌。这株蜜环菌覆盖了9平方千米的面积,重量至少有600吨。这也是地球上人类认知领域内最大的生物,估算之下,它的年龄应该超过几千年了。”


另外,作者反对人为干预森林动物的食品问题,这样会篡改了物种的结构。例如在森林里搭建动物小屋,或冬天猎人的喂食行为。“自然界中的植物数量与食草动物的数量才能达到平衡。对动物的同情以及由此产生的喂食行为,导致了过多的动物在冬天存活下来,进而引发越来越多的问题。尤其突出的问题是,一些寄生生物如绦虫,蔓延得更加迅速,这又削减了鹿群及其同类的数量。”

书中作者还举了两个自我保护的例子很有趣:森林之母山毛榉和手持鞭子的流氓桦树,这些可以在BBC的纪录片[[《植物王国》|2019年07月23日周二下午10:57:28]] 中看到,很直观。

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

“我征租西,至于艽野”,出自《诗·小雅·小明》,艽,荒远。陈渠珍<<footnote "❶"陈渠珍(1882—1952),人称“湘西王”,是亲历清朝、民国和中华人民共和国三个不同时代的“振奇之杰”,与熊希龄、沈从文并称“凤凰三杰”。期间,沈从文曾在其帐下担任文书,贺龙亦是其旧交。">>
的回忆录《艽野尘梦》即取自这句话,艽野在这里指青藏高原。这本书不止在一两个人的读书笔中被提及,大多推崇其奇异的经历和在大漠雪原的悲情。任乃强先生在《弁言》中说到:“余一夜读之竟。寝已鸡鸣,不觉其晏,但觉其人奇,事奇,文奇,既奇且实,实而复娓娓动人,一切为康藏诸游记最。“

书中作者叙述了自己1909年从军,奉赵尔丰命随川军钟颖总进藏,升任管带(营长),参加工布、波宓等战役,在驻藏期间同当地藏族同胞、官员和和喇嘛来往密切,同藏族姑娘西原结婚,在1911年10月武昌起义爆发、南北响应的消息传到西藏后,出于对波密起义士兵的一些行动不理解,而又顾念个人安危,于是组织湖南同乡士兵和亲信百五十人取道东归而误入大沙漠,断粮七月余,妨饥挨饿,茹毛饮雪,仅七人生还于西安,西原病卒,等经历。

在我读这本书的时候,我把它分为两部分:前半部是在西藏;后半部是逃离西藏。第一部分比较琐碎,但有一定的史料价值:记录了清末民初西藏的风土人情和在藏的各种政治势力活动。第二部分充满苦难和悲情,字字感人,处处惊心,最是苦、奇和悲,也是我最喜欢的部分。

在穿越冬天的青藏高原,弹尽粮绝之时,出现了杀人、吃人的现象:

<<<
次日午,闻士兵喧哗声,余往观之。则士兵杨某,昨晚死于道旁。今日,众饥不可耐,乃寻其遗骸食之。殊昨晚已为狼吞噬几尽,仅余两手一足。众取回燔之,因争食,詈骂也。余闻而泣下,婉劝不止,乃诳以“前方已获一野骡,何争此多少为。”
<<<

<<<
饥甚,无可为计,乃密议欲杀余随身藏娃,以延残喘。托刘一言。余曰:“杀一人以救众人,我何恤焉。只是藏娃肉尽骨立,烹之难分一杯羹,徒伤同伴,奚益于死。”
<<<

面对生和死,西原如是说:

<<<
所储干肉,仅余一小块。以其半分西原食之。西原坚不肯食。强之再,泣曰:“我能耐饥,可数日不食。君不可一日不食。且万里从君,可无我,不可无君。君而殍,我安能逃死耶。”余则泣下。“天下可无洪,不可无公”之语,不图子藏族女子中亦见之。痛哉。
<<<

一百五十人的队伍穿越青藏高原后仅剩下七人,到达西安时西原(陈渠珍娶的西藏姑娘)也病逝了。二人经历了相濡以沫、生死相依,却不能一起享受半日的平静和安乐,生命在真挚的感情面前脆弱而不堪一击。作者的悲怆是叫天天不应,叫地地不灵,悯人悲天,感天地泣鬼神,真是一佛出世,二佛升天,三界混沌,四海风烟,五行颠倒,六甲不全,七星南挂,八卦倒悬,九野扰攘,十方屯。


<<<
至夜,漏四下,西原忽呼余醒。哽咽言曰:“万里从君,相期终始,不图病入膏肓,中道永诀。然君幸获济,我死亦瞑目矣。今家书旦晚可至,愿君归途珍重。”言讫,长吁者再。遂一瞑不视。时冬月日也。余抚尸号哭,几经皆绝。强起,检视囊中,仅存票钱一千五百文矣,陈尸榻上,何以为殓,不犹伤心大哭,继念穷途如此,典卖已空,草草装殓,费亦不少。此间熟识者,惟董禹麓君颇慷慨。姑往告之。时东方渐白,即开门出,见天犹未晓。念此去殊孟浪,又转身回。见西原瞑然长睡,痛彻肺腑。又大哭。
<<<

作者在写这段回忆录时亦不能自己:


<<<
余既伤死者,复悲身世,抚棺号泣,痛不欲生。渊波百端劝慰,始含泪归。入室,觉伊不见。室冷帏空,天胡不吊,厄我至此。又不禁仰天长号,泪尽声嘶也。余述至此,肝肠寸断矣。余书亦从此辍笔矣。
<<<



<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
王子猷<<footnote "❶"王徽之,字子猷,东晋名士、书法家,王羲之第五子。">>
居山阴.夜大雪.眠觉.开室.命酌酒.四望皎然.因起彷徨.咏左思<<footnote "❷"左思,晋代诗人。">>
招隐诗.忽忆戴安道<<footnote "❸"戴安道,名逵,东晋隐士。">>
.时戴在剡.即便夜乘小船就之.经宿方至.造门不前而返.人问其故.王曰.吾本''乘兴而行.兴尽而返''.何必见戴. ---《世说新语·任诞》。
<<<

什么是“魏晋风度”?这一则故事可以很好的诠释 ---  --- 恣意、任性和自然,外加些许怪诞不经和不拘一格。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
赵母<<footnote "❶"赵母,又称赵姬,三国吴颍川人,东郡虞韪妻,学问很好,著有《列女传解》,作赋数十万言。她这段话很有名,历来多有诠释。">>
嫁女.女临去.敕之曰.慎勿为好.女曰.不为好.可为恶邪.母曰.好尚不可为.其况恶乎.---《世说新语·贤媛》
<<<
我之前还记录过一则“[[范文子被责|2019年08月11日周日下午10:35:01]]”故事,叱责了中国文化里的“枪打出头鸟”文化。今天这则“赵母嫁女”,与其类似,赵母教女“慎勿为好”,不要做好事,但也不要做坏事。做好事容易招致嫉妒和排挤。

这是典型的中国“中庸”文化之外延,压抑个人主义,倡导“消极的和谐”,与美国倡导个人英雄主义文化正好相反。我一直有这样的疑惑,文化是否有新陈,如美国文化犹如人之青少年勇猛刚直,中华文化犹如人之暮年中庸忧柔。




<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
京师<<footnote "❶"北宋京城在开封,时称汴京,又称东京。">>
沟渠极深广.亡命多匿其中.自名为无忧洞.甚者盗匿妇人.又谓之鬼樊楼<<footnote "❷"当时开封最出名的酒楼,多妓乐。">>
.国初至兵兴常有之.虽才尹不能绝也. --- 《老学庵笔记》卷六
<<<

这个了不起!

北宋首都开封有如此“宏伟”的下水道,“沟渠极深广”;能容下无家可归者,亦是坏人的天堂,“亡命多匿其中.自名为无忧洞”,甚至那些偷情的人也藏匿其中进行逍遥,是地下的“天上人间”鬼樊楼;这可比当下中国所有城市的的地下水道系统(防空洞除外)“威猛”多了。《老学庵笔记》中记录的开封下水道情况,现在也只有在美国电影中看到过。

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
太祖<<footnote "❶"指宋太祖赵匡胤">>
将展外城.幸朱雀门亲自规画.赵韩王普<<footnote "❷"赵韩王普,宋太祖大臣赵普,死后被追封为韩王">>
特从.上指门额询普曰.何不只书朱雀门.何须着之字.普对曰.语助.太祖笑曰.之乎者也<<footnote "❸"《千字文》最后两句“谓语助者,焉哉乎也”,通常都用“焉哉乎也”或“之乎者也”来形容读书人的酸腐。">>.助得甚事. --- 高文虎《蓼花洲闲录》(《宋人小说类编》卷一之二“地理类”)
<<<

历史上的赵匡胤比任何一代君王都尊重文人,立下“戒碑”告诫嗣位子孙“不得杀士大夫及上书言事人”,所以有宋一代被成为文人的时代。不过从上面这则对话可以看出以武定天下的赵匡胤只是厌倦了穷兵黩武的生活,所以在天下尽收囊中后自削其芒,刀枪入库,马放南山;然而赵匡胤并非什么“文艺青年”,是一名实用主义者。不然赵普把新建城门叫“朱雀之门”,也不会被赵匡胤嘲笑称“之乎者也.助得甚事”,“之乎者也这一套,有什么卵用”。

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

摩梭族可能是在后现代社会最后消失的民族了吧?然而对这个传说中的母系族群,石器时代文化的活化石(我不知道这句话是否正确,早期人类即以母系结构存在),是否对现代人类婚姻及家庭制度有借鉴意义?我是带着好奇或者猎奇的目光开始阅读这本书  ---《无父无夫的国度?》,结束于对摩梭族母系家庭结构的尊崇和对现代家庭和婚姻制度的疑惑。

!!! ''摩梭族的母系家庭结构''

摩梭族家庭的象征和核心是家务(相当于汉族农民院落的上房或正屋),家屋以母系血源为本,世系按母系计算,大多以先祖母命名。但事实上家屋成员不局限于血源,可以透过人赘、上门、结婚以及过继来补充劳动力或继后。传统的家屋没有父亲、妻子、丈夫、女婿、媳妇等角色,也没有父子、父女、夫妻、婆媳、翁婿等父系关系,虽不符合主流会中的“家庭"定义,但却从最根本的层次挑战及顛覆主流社会
夫妻婚姻霸权建构出来的家庭观。摩梭家屋以走婚而非结婚为主体,男不娶、女不嫁。舅舅是摩梭家庭中男性地位与权力的最高者,承担者养育外甥(像传统家庭中父亲的角色)和家庭外部事物(如与死亡有关的活动,在摩梭文化中女人代表着生)。

摩梭文化与社会运作的基本单位不是独立自主的个体,也非夫妻组成的小家庭,而是家屋(类似汉族的家族)。两个摩梭人碰面、相介绍时,一般会先报上自己家屋的名字,放在个人名字的前头。摩梭绝大部分的“公众"活动都是以家屋而非个人为基本单位。譬如葬礼前村内每家必须派一个人参加“商议"。

家屋中“阿咪"是绝对的权威,是家族事物的管理者和权利中心。火塘则是家屋中地位的象征和家族中心点。

让我感到吃惊或者赞许的是摩梭家庭中的“亲情”概念。一个摩梭家庭中的女性被视为所有子女的母亲,无论亲生与否;一个摩梭家庭中的男性 -- 也就是舅舅,被所有外甥尊重并为之养老。而且在摩梭族家庭中没有私有财产之说,一切属于家屋。这种从亲情关系到财产制度真是大有“天下为公”的范。


!!! ''摩梭族的走婚传统''

摩梭族的走婚并不像传说中的那么随意,需要经过一定的程序和仪式。男女走婚前需要通过介绍人(类似媒人)带着礼品到女方家请求同意,女方许可方可开始走婚。男性晚饭后悄悄叩门进屋,早上天亮前离开(这里涉及到摩梭族的害羞文化)。如果男女双方不在相爱或者有好感,走婚就自行解除。

传统摩梭感情模式的最大特点,在于婚姻(走婚)与家
庭(母系家屋)的分割。走婚伴侣不会同住或组成家庭,也不是经济(生产)、居住(家庭)、教育(抚养下代)、劳动(工作)的独立单位。走婚体制与衣食住行及子女抚养进行完全了分割,但并不代表摩梭人无父但概念,或走婚中没有什么禁忌。刚好相反,摩梭走婚有着清晰的内在规矩:

* 走婚男女通常在平日劳动、节日中认识而日久生情;
* 男子在走婚前需要到女方火塘敬锅庄,通常会请男媒人到女方家屋向阿咪示好,阿咪一般不会反对;
* 孩子出生后,必须摆满月酒,确定孩子身份,把走婚关系公开,让村民与亲友祝贺孩子诞生,自此走婚也不必夜出早归,男子白天可以在女方家帮忙,通常晚饭后便到女方火塘聊天;
* 满月酒后,男女家屋便成亲戚,谁家有事都去帮忙,不分彼此;
* 孩子从出生、成年礼、每年春节到父亲逝世,都有父子间的互相责任;
* 摩梭走婚关系被中国政府与法律所承认,属于“事实婚姻";
* 摩梭人大多认为满月酒的意义可等同为结婚喜酒,走婚伴侣可算是结婚了。


!!! ''摩梭族的“害羞”文化''

摩梭人的“害羞”文化(摩梭语称为“实度”,音译),我用一个不恰当的比喻来形容,就像摩梭人最后的一块遮羞布  --- 相对于传统婚姻中的羞和耻。例如,传统摩梭人一方面可以在温泉女男坦然同浴,性模式多元开放;但在另一方面,不论任何场合,只要血源亲属在旁,绝对不能提任何跟性相关的话题,甚至连“处咪”(妻子)与“汗处巴"(丈夫)也绝对不容。摩梭可以接受与多人发生关系,也没有处女、私生子或未婚妈妈这些概念,但是同时却对有关性或性事的词汇视作极大禁忌。

!!! ''借鉴和反思?''

以上对摩梭族家庭和婚姻制度的总结,给所谓的“现代人”很大的讽刺和启示:这些被部分学者或外人看作野蛮、愚昧和落后的文化,恰恰有效的规避了现代社会存在的几大家庭和婚姻问题:

* 老人不受尊重、被遗弃以至现代人面对衰老与孤独;
* 两性在社会地位与感情空间之尊卑上下权力不均;
* 现代人在性魅力上的沉重压力以至在亲密关系里的占有、妒忌与矛盾;
* 性骚扰、非礼、强奸等性犯罪行为;
* 现代社会人际疏离、自我执著以至心灵空虚匮乏;
* 婆媳、妯娌、亲子、兄弟姐妹之间的家庭烦恼与矛盾;
* 全世界普遍存在的高离婚率;

我不知人类未来的家庭和婚姻走向,但就当下社会发展这个断截面来看,摩梭文化给现代主流家庭和婚姻制度提供了很好借鉴样本和进化可借鉴的方向。

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
今夕是除夕耶.内<<footnote "❶"内,指龚炜妻王氏。">>亡且二十日矣.含泪濡毫.粗述其生平大略.三十七年夫妇之情.与一切病亡惨境.不忍一二道也.往年度岁.纵极艰难.内必勉措齐整.今夕但闻幕内哭声.孙男女麻衣绕膝.泪霪霪不止.何心更问度岁事.哀哉.壬午除夜泪笔. ---龚炜《巢林笔谈》卷六
<<<

这是清代文人龚炜忆亡妻文,区区百字,悲从中来。古人悼亡妻的文章不是很多,然凡有者,皆可歌可泣。读这篇最先想到的是明代文学家归有光的《项脊轩志》:

<<<
庭有枇杷树,吾妻死之年所手植也,今已亭亭如盖矣。
<<<

平淡无奇语中含大悲切和极深的思念。又如林觉民《与妻书》:


<<<
意映卿卿如晤,吾今以此书与汝永别矣!吾作此书时,尚是世中一人;汝看此书时,吾已成为阴间一鬼。吾作此书,泪珠和笔墨齐下,不能竟书而欲搁笔,又恐汝不察吾衷,谓吾忍舍汝而死,谓吾不知汝之不欲吾死也,故遂忍悲为汝言之。 吾至爱汝,即此爱汝一念,使吾勇于就死也.........四五年前某夕,吾尝语曰:“与使吾先死也,无宁汝先我而死。”汝初闻言而怒,后经吾婉解,虽不谓吾言为是,而亦无词相答。吾之意盖谓以汝之弱,必不能禁失吾之悲,吾先死留苦与汝,吾心不忍,故宁请汝先死,吾担悲也。嗟夫!谁知吾卒先 汝而死乎?吾真真不能忘汝也!.......初婚三四个月,适冬之望日前后,窗外疏梅筛月影,依稀掩映;吾与(汝)并肩携手,低低切切,何事不语?何情不诉?及今思之,空余泪痕。又回忆六七年前,吾之逃家复归也,汝泣告我:“望今后有远行,必以告妾,妾愿随君行。.......依新(儿子)已五岁,转眼成人,汝其善抚之,使之肖我。汝中之物,吾疑其女也,女必像汝,吾心甚慰。或又是男,则亦教其以父志为志,则吾死后尚有二意洞在也。甚幸,甚幸!吾家后日当甚贫,贫无所苦,清静过日而已。 吾今与汝无言矣。吾居九泉之下遥闻汝哭声,当哭相和也。吾平日不信有鬼,今则又望其真有。今人又言心电感应有道,吾亦望其言是实,则吾之死,吾灵尚依依旁汝也,汝不必以无侣悲。 吾平生未尝以吾所志语汝,是吾不是处;然语之,又恐汝日日为吾担忧。吾牺牲百死而不辞,而使汝担忧,的的非吾所忍。吾爱汝至,所以为汝谋者惟恐未尽。汝幸而偶我,又何不幸而生今日中国!吾幸而得汝,又何不幸而生今日之中国!卒不忍独善其身。嗟夫!巾短情长,所未尽者,尚有万千,汝可以模拟得之。吾今不能见汝矣!汝不能舍吾,其时时于梦中得我乎!一恸!辛未三月廿六夜四鼓,意洞手书。 家中诸母皆通文,有不解处,望请其指教,当尽吾意为幸。
<<<

提起林觉民不得不想起杨涟《狱中血书》,皆为狱中临终悲语:

“涟今死杖下矣!痴心报主,愚直仇人;久拼七尺,不复挂念。不为张俭逃亡,亦不为杨震仰药,欲以性命归之朝廷,不图妻子一环泣耳。打问之时,枉处赃私,杀人献媚,五日一比,限限严旨。''家倾路远,交绝途穷,身非铁石,有命而已。雷霆雨露,莫非天恩,仁义一生,死于诏狱,难言不得死所。何憾于天?何怨于人?''惟我身副宪臣,曾受顾命。孔子云:“托孤寄命,临大节而不可夺!”持此一念,终可以见先帝于在天,对二祖十宗与皇天后土、天下万世矣。''大笑,大笑,还大笑!刀砍春风,于我何有哉?”''

悲壮!

然字字滴泪,句句泣血! 

再如前几日所看陈渠珍的《[[艽野尘梦]]》中[[对亡妻藏女西原的追忆|2019年09月23日周一下午10:33:32]]:

<<<
至夜,漏四下,西原忽呼余醒。哽咽言曰:“万里从君,相期终始,不图病入膏肓,中道永诀。然君幸获济,我死亦瞑目矣。今家书旦晚可至,愿君归途珍重。”言讫,长吁者再。遂一瞑不视。时冬月日也。余抚尸号哭,几经皆绝。强起,检视囊中,仅存票钱一千五百文矣,陈尸榻上,何以为殓,不犹伤心大哭,继念穷途如此,典卖已空,草草装殓,费亦不少。此间熟识者,惟董禹麓君颇慷慨。姑往告之。时东方渐白,即开门出,见天犹未晓。念此去殊孟浪,又转身回。见西原瞑然长睡,痛彻肺腑。又大哭。
<<<

悯人悲天,感天地泣鬼神,真是一佛出世,二佛升天,三界混沌,四海风烟,五行颠倒,六甲不全,七星南挂,八卦倒悬,九野扰攘,十方屯。

还有彭绩作的《亡妻龚氏圹铭》:

<<<
……嫁十年,年三十,以疾卒,在乾隆四十一年二月之十二日。诸姑哭之,感动邻人。''于是彭绩始知柴米价,持门户,不能专精读书,期年,发数茎白矣。''铭曰:作于宫,息土中,吁嗟乎龚。
<<<

除之,李清照在《金石录后序》<<footnote "❷"《金石录后序》中,作者回忆了当年与丈夫共同收集金石、书画的苦乐。赵明诚去世后,李清照颠沛流离,二人的收藏或失于战火,或遇贼遇盗,及作此文时仅余一二残零。睹文思人,其感伤之情可想而知。">>中照追忆亡夫赵明诚的文字也不能不提:


<<<
今日忽开此书,如见故人。因忆侯在东莱静治堂,装卷初就,芸签缥带,束十卷作一帙,每日晚吏散,輒校勘二卷,题跋一卷。此二千卷,有题跋者五百二卷耳。''今手泽如新,而墓木已拱(坟墓上的柳树已经长大),悲夫!''昔萧绎江陵陷没,不惜国亡而毁裂书画;杨广江都倾覆,不悲身死而复取图书。''岂人性之所著,死生不能忘之欤?或者天意以余菲薄,不足以享此尤物耶?抑亦死者有知,犹斤斤爱惜,不肯留在人间耶?何得之艰而失之易也!''呜呼,余自少陆机作赋之二年,至过蘧瑗(qúyuàn)知非之两岁,三十四年之间,忧患得失,何其多也!然有有必有无,有聚必有散,乃理之常。人亡弓,人得之,又胡足道。所以区区记其终始者,亦欲为后世好古博雅者之戒云。绍兴二年玄黓(yì)岁壮月朔甲寅,易安室题。
<<<

读他人忆亡人峥嵘岁月,最是应当珍惜枕边人!

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

这本书去年已经看完,却一直在<<tag Task>>中以未完成状态存在。拖延症严重!

我应该是从《[[我书架上的神明]]》中获悉《柳林风声》这本书的。《柳林风声》虽属儿童文学,但公认为艺术造诣很高的散文精品。犹如之前所看的《[[牧羊少年奇幻之旅]]》、《[[小王子]]》和前几日看的《[[蝇王]]》<<footnote "❶"《蝇王》已被列为“英国当代文学的典范”,成为英美大中学校文学课的必读书。
">>
(属于少年读物),是成人释压读物佳品。英国儿童文学传世名作非常之多,但却有一个奇怪的现象:这些传世名篇皆出自苏格兰作家之手,如刘易斯·卡罗尔的《爱丽丝漫游奇境》(1865),罗伯特·史蒂文森的《宝岛》(1883),詹姆斯·巴里的《彼得·潘》(1904),《柳林风声》(1904)作者肯尼思·格雷厄姆也是苏格兰人,还可以加上苏格兰人柯南·道尔的《福尔摩斯侦探案》(1891)。这是否与苏格兰人富于想象、童心永驻的性格有关?


《柳林风声》在文学史上有个标志性的重要地位:英国儿童文学百花争艳的黄金时代从19世纪中期到第一次世界大战前夕的数十年,是以《爱丽丝漫游奇境》(1865)始,以《柳林风声》终。在中国读者中这本书似乎并不知名,不如《爱丽丝漫游奇境》和《彼得·潘》,这可能与后者影视作品影响有关。在这个读图(包括影视作品)时代,儿童阅读的重要性是影视作品不能替代的。正如《柳林风声》作者所说:“我写下的每一行都要耗去我大量的生命。”好的儿童文学作品不仅具有丰富的想象,还有影视作品给予不了的文字的魅力:可诵读。

儿童文学之于成年,像是在萌春种下的一粒种子,随着岁月的滋养成长,成年后可以抵御日常工作和生活的平淡刻板及物欲野心的侵袭,可以随时回到那个单独的精神世界,去获得心灵的复苏。缺乏这种心灵复苏能力的成年人,是一个灵魂渺小的庸人。

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
予于声歌无所谙.独喜笛音寥亮.每当抑郁无聊.趣起一弄.往往多悲感之声.泪与俱垂.审音者知其为恨人矣.今夜风和月莹.阑干静倚.意亦甚适.为吹古诗一二首.皆和平之词.而其声仍不免于呜咽.何也.--- 龚炜<<footnote "❶"龚炜,字巢林,清代昆山人。">>
《巢林笔谈》卷四
<<<

在古代中国的“个人写作”中,抒情全用诗歌,即所谓“诗言志,歌永(咏)言”。用散文形式作内心独白的,则极为少见。《巢林笔谈》中有几篇抒情散文,写的实在是简练而优美。如果用白话文来写,不免有许多啰嗦并失去来许多美。除了[[昨天整理出来的“悼亡妻”篇|2019年10月14日周一下午02:50:19]],再如:

<<<
秋来病与贫俱.夜坐小斋.郁结不解.忽琴声自内<<footnote "❷""内,内室,龚炜妻在弹琴。">>出.不觉跃起.妇能忘境.我乃为境滞耶.因取琵琶酌两三弹.作黄连树下<<footnote "❸"“黄连树下弹琴,苦中取乐”">>唱酬.其声泠泠.终不能啴以缓.发以散也.
<<<

借音乐以抒情,古人比比皆是。王维“独坐幽篁里,弹琴复长啸”,白居易“忽闻水上琵琶声,主人忘归客不发”,李益“不知何处吹芦管,一夜征人尽望乡”,高启听笛,“始知嶰谷枯篁枝,中有人间无限悲。愿君袖归挂高壁,莫更相逢容易吹”,龚炜以散文形式描述夫妻合奏悲从中生的情景,少了体裁上的桎梏,多了一份情一夜景。

再如以下两篇借景抒情的,寥寥数字,画龙点睛。

<<<
从夏镇抵南阳.时当落照.云霞曳天.澄波倒影.俯仰上下.无彩不呈.俄而浓云四布.宝净色忽焉惨淡.已又推出新月.清光一钩.疏星万点.''大块文章''.真是变化不尽也. 
<<<

<<<
数时报节.已届清明.闲步郊原.枝间柳桃.花铺菜麦.春林渐盛.黄莺紫燕.何树不啼.春水方生.黛甲素鳞.何波不跃.一切卉木禽鱼之胜.多是文章朋友之资.''独惜少年一去不回.为欢常如不及''.
<<<

钟叔河老先生在《[[念楼学短]]》中是如下点评的:

<<<
尤其在抒情写景方面,无论是作诗还是作散文,语体文(白话文)真能赛过文言文的,还真不多。
<<<

可惜我辈古文造诣简而陋,这样优美的文风文体不久将绝亦!

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

去年读的这本书,详细内容已经不记得了。印象中作者学贯中西,“本科学的是明清史,硕士改台湾史,博士则学社会学,毕业后从事心理学”。在读书笔记上尚存一些记录,关于读书心得的,整理如下:

<<<
读书方法这一点上,似乎中西之间同多于异。清人汪中尝云:读书当“钩深致隐”,“于空曲交会之际以求其不可知之事”。钱穆先生以为,读别人的文章,贵“在其不尽意的言中,来求得其所代表之意,乃及其言外不尽之意”。陈寅恪先生所言尤详:盖“古人著书立说,皆有所为而发。故其所处之环境、所受之背景,非完全明了,则其学说不易评论。”而且,这些环境背景对立说者的影响,既有无意识的部分,也能使人产生自我抑制的意识,未必能随心所欲,想说什么就说什么。故读者还应努力与立说之人“处于同一境界,而对于其持论所以不得不如是之苦心孤诣,表一种同情,始能批评其学说之是非得失,而无隔阂肤廓之论”。这里所谓的“同情”,即指心意所指的沟通,并非我们今日口语中所说的“同情”(同情之后,立场就要偏向被同情者一面)。
鲁迅以为,读者应“自设为古之一人,返其旧心,不思近世,平意求索,与之批评,所论始云不妄”。
<<<



<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

博物学,英文为:Historia Naturalis,又译自然史,是人类在演化过程中对地球上各种生物(动物、植物、菌类、微生物)以及它们周边生存环境中各种事物的不断的观察记录与分析总结,和实验方法比起来,更倾向于观察方法,是现代科学萌芽和发展的过程中的必经途径。从分类上讲,它从属于自然科学,是对自然物体或者分类的系统研究。这是来自维基百科的定义。在刘华杰教授的《博物人生》中,对博物学的定义进行了扩张,除了自然科学也包括人文科学的一部分。“博物学是自然而然的学术、知识、技术和技能,是在有限的好奇心、欲望观照下的产物。在传统社会中,博物学是人这个物种在大自然中为适应环境、世代可持续生存而演化出来的、显性和隐性的知识与技能形态。”如果包含人文知识,这就涉及到一个问题:博物学和科学的关系。

<<imageSlider  [[https://upload.wikimedia.org/wikipedia/commons/thumb/d/dd/Table_of_Natural_History%2C_Cyclopaedia%2C_Volume_2.jpg/600px-Table_of_Natural_History%2C_Cyclopaedia%2C_Volume_2.jpg]]    "自然历史表,出自伊弗雷姆·钱伯斯1728年的《百科全书,或艺术与科学通用辞典》">>

博物学包含科学,这个好理解,它本身就属于自然科学,如地质学、矿物学、植物学、昆虫学等;但科学并不全部属于博物学,例如非自然而然的数理科学、还原论科学等。刘华杰认为依据自然科学定律开发的现代技术,并不是大自然的技术,它根本上是僭越的、人为操控的技术;它所声称的一系列完美效用,只在特定的人工可控体系中才可实现,不属于博物学。博物学也并非严格意义上的科学,就其人文部分而言甚至还有点伪科学,因为这部分是非编码的知识。

博物学除了“自然而然”这个属性之外,还有一定的“地方”属性(indigenous knowledge)。地方性知识强调如下几个方面:知识的表述可能是附魅的、非自然主义的;产生知识的环境通常是自然演化的人地环境,而非在短时间内特意制作出来的人工环境、实验室环境;知识在人地系统中适应着环境而缓慢演化,知识通常是环境友好的,不会引起环境灾难;由于此知识依赖于特定的环境,脱离其环境后此知识的影响力有限,不会快速扩散到局部环境以外而成为侵略性的全球知识。 博物学知识和现代自然科学知识均有地方性、本土性,只是后者喜欢装扮、粉饰,并强行到处“克隆”。

博物学的属性决定了博物学的意义:''博物学对世界的看法是自然的、不说谎的。''刘华杰在书中说到:“博物学有助于我们重新理解我们处在什么样的世界当中,博物学家或许也产生过把大自然缤纷的面貌、复杂的演化概括为几条简单定律的冲动,但博物的结果不得不使其诚实、谦虚、谦卑一些。现代的教育体制,让人类的后代重点学习的不是自然的知识,而是非自然的知识。教育变得不自然,科学技术变得不自然,社会生活也随之不自然。”“相对于别的科学,博物学虽然不够有力量,但它符合人类、大自然可持续发展的要求,或者不太违背这些要求,幸运地不会成为“致毁知识”

所以,刘华杰说:''和谐共生、生生不息是博物学文化的终极旨趣。''


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
野地里蕴涵着这个世界的救赎。--- 梭罗
<<<

梭罗的话有点高尚,我更喜欢罗曼罗兰的话:


<<<
与人打交道多了,更喜欢狗了!
<<<

这也是我喜欢植物学的原因,“与人打交道多了,更喜欢植物了!”推了广之也涉猎一些博物学。

[[上文|2019年10月21日周一下午03:34:13]]我整理了一些博物学的基本概念和属性,对之有了些许认识。在现代社会,博物学是一门没落的学问,是被遗忘的科学、研究方式和生活方式。现代社会更崇尚人为的现代科技,如计算机科学、人工智能以及机器人等,这些都与博物学相悖而向,博物学的认知方式是自然的,非认为的。但这并不能磨灭博物学曾经蓬勃的发展,以及衍生出来更加现代精细的学科,如地质学、植物学等。用刘华杰教授的话,“当前人类面临的问题(环境、资源)又都与博物思想的缺乏有关”。假设人类或者地球遇到某种危机,人类生存的基础学问方显其能,现代科学捉襟见肘。


<<<
“科学的人类学之所以战胜古典的人类学,至少在神话学领域中,并不是由于它较之后者更好地解决了问题,而是由于它较之后者更好地掩饰了问题,这与其说是一种科学精神,不如说是一种交织着话语暴力的‘障眼法’:让学科的从业者只看到他该看的,把对学科构成威胁的未知之域屏蔽于视野之外。或者,障眼法原本就是现代科学精神的秘义:正是凭借控制实验之类的策略,科学才把那些无法控制的东西排除在人类经验之外,科学的所谓经验实际上是被实验这种‘新工具’(培根)控制了的经验,现代世界因此就是一个科学之光普照的世界:科学之光引导着人们的目光,照到哪里哪里亮,映入眼帘的就只能是科学的光明面,阴影永远落在看不见的角落。科学与魔术,总是难分难解。”(刘宗迪,2001:37—38)
<<<

博物学的自然而然的属性,决定了其认知方法与现代科学的不同。自然的认知是承认大自然的权威,人法天、人向大自然学习;不自然的认知是分割、隔离、控制自然世界,试图驯服、压榨、勒索自然世界,并制造虚拟世界,自己充当“美丽新世界”中造物主的角色。自然的认知在自然中寻求规律,如林奈<<footnote "❶"借助于对植物的分类、命名,林奈获得了人间“亚当”的称号。林奈在博物学中的地位,好似哥白尼在天文学、伽利略在物理学中的地位。">>
所言“在极端混乱中发现至高无上的自然秩序”;不自然的认知在数字中寻求规律。
这种不自然的认知就像硬币的两面 --- 生存和毁灭,更好的生存加剧着更快的毁灭。





<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
国内找不到卢梭的植物学作品,有一天我实在忍不住,求人在美国购买了他的《植物通信及植物学术语词典笔记》英译本,20多美元,有漂亮的彩色插图,这部书相当精美。也许有一天我会经由英语把它译成中文,但总是抽不出时间,最后让我的学生熊姣全文翻译,此书2011年初由北京大学出版社正式出版。这大概是中文世界第一次译出卢梭的植物学著作。
<<<

这是刘华杰在《[[博物人生]]》中关于卢梭与博物学一篇中提到的,我看的《[[植物学通信]]》就是这一版本。

卢梭为人所知的是一名启蒙时代的法国与日内瓦哲学家、政治理论家和作曲家,而卢梭的植物学家身份并不为国人所知。卢梭用了约15年(约50—66岁)研究并传播植物学,为后人留下了宝贵的遗产:博物学(包括生态学、环境伦理学)思想和若干普及性的植物学作品。受卢梭的影响,歌德从30多岁开始研究植物学,长达50年,并写出了《植物的变形》这样的名著。《[[植物学通信]]》这本书就是卢梭为数不多的植物学科普著作。全书以他与一位贵妇八封通信的形式渐进介绍了普通素人怎么迈入植物学之门。卢梭的女粉丝多极了,在19世纪有无数女性因喜欢卢梭而看他的植物学通信,因而进入植物学王国,甚至义无反顾地走上植物学传播的道路。

昨天我在[[一篇有关博物学小文|2019年10月22日周二下午02:52:57]]中引用了罗曼罗兰的一句话:“与人打交道多了,更喜欢狗了!”,这句话最适合卢梭不过了。卢梭有受迫妄想症,经常认为政府要加害与他,甚至到了神经质的地步。正是植物学挽救了卢梭 --- 是他的“精神治疗”,对植物认真的观赏和研究有效的抑制了他的神经质。植物、植物学让他心境平和,孩子气十足,从而忘却生活中的那些不快和恶人。我想,我之所以喜欢上植物学,这种沉静(或者说安乐)的快乐也是其原因之一吧。但我不明白的是:大部分老年人喜欢玩弄花花草草的原因是什么?

<<<
“我被身边这些令人愉快的事物吸引了,我对它们仔细观察、慢慢思考、一一比较,终于学会了把它们分类。就这样,我自然也成了植物学家,成了研究大自然的植物学家,其目的只是为了不断找出热爱大自然的新理由。”(卢梭,2006:84)
<<<

<<<
“植物学是悠闲懒散的孤独者的专业:一把小刀和一个放大镜便是他观察植物所需的全部工具。他慢慢溜达,随意从一个目标转向另一个目标;他兴致勃勃地、好奇地观察每一朵花,一旦领悟到花朵的构造规律,他就能毫不费劲地品尝到观察的乐趣,跟以付出高昂代价才取得的乐趣相比,绝不逊色。这种悠闲的工作自有一种魅力,惟有激情完全平息的人才能感受到,只要有了这种魅力,就足以使生活变得甜蜜了。”(卢梭,2006:85)
<<<


我还不太完全明白什么是[[自然主义]],但卢梭是不折不扣的具有“自然”观念之人,用刘华杰的结论:卢梭的自然观是他的所有学问(如政治学、教育学、伦理学)的基石。而理解他的自然观念,离不开他对植物的看法!卢梭在晚年(65岁)依然把植物学与哲学、政治学、休闲学结合在一起,对植物科学和人生境界进行了可贵的探索。“这种狂热却又在我身上萌发了,那股劲头比第一次还要大。”(卢梭,2006:76)

研究植物为了什么?这是一个当今许多学者忘记思考的问题。卢梭的回答可能不受欢迎,但的确值得人们重视:“我们只把植物看成是满足我们欲望的工具,我们在研究中就再也得不到任何真正的乐趣,我们就不再想求知只想为了卖弄知识,这时候,身在树林却俨然站在世俗的舞台上,我们一心想着如何博得他人的赞赏;要么就是局限在研究室、至多不会超出花园范围的植物里面,我们不到大自然去观察树木花草,而只关心体系和方法。”(卢梭,2006:86)所以,卢梭也反对单纯功利地理解植物学,反对草药学(药用植物学)。对于卢梭的植物学观点,我称之为古典植物学主义,这种观点估计再不会有人认为合理和政治正确。

“多亏了林奈,他把植物学从药物学派中分离出来,让它重新回到博物学之中,恢复其经济用途。……我仔细观察田野、果园、树林以及其中众多的植物的时候,经常这么想,植物界真是大自然赠给人类和动物的粮食仓库啊。但我从来没有想过要在这里找什么药品……我在林中高高兴兴地漫步时,如果非要我去想什么发烧、结石、痛风,或是癫痫之类的疾病,那简直败兴透了。”(卢梭,2006:80)


在《[[植物学通信]]》这本书中,卢梭给出了植物学初学者的一些建议:“你已从周围所有常见植物的名字入手来开始对令爱进行教育,这正是你所应当做的。”这和孔子说的 “多识于鸟兽草木之名”不谋而合。但是,我并不赞同卢梭的看法。植物的命名是一门专门学问,庞杂、艰涩、难懂(林奈的命名法)。初学者如从记名开始,那简直是一直折磨,完全会被植物学命名法吓跑掉。以我区区几年植物学学习经验来看,最好的植物学入门方法是保持对植物学的热情,通过植物学神秘、神奇的现象引领去发现并揭示其原理,逐步深入。

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
知己食在头桥上.宰夫杨氏工宰肉.得炙肉之法.谓之熏烧.肆中额云.丝竹何如.人皆不得其解.或以虽无丝竹管弦之盛语解之.谓其意在觞咏.或以丝不如竹竹不如肉语解之.谓其意在于肉.然市井屠沽.每藉联匾新异.足以致远.是皆可以不解解之也.  --- 李斗《扬州画舫录》
<<<

这叫烤肉店的名字起得好:丝竹何如。怎么个好法?其用典高而雅。王羲之《兰亭集序》中有:“虽无丝竹管弦之盛”,陶渊明《晋故征西大将军长史孟府君传》有“竹不如肉”(这里的“肉”指人的歌喉),店主巧妙的把两个典故合并而言,“老子店里的烤肉比高雅的音乐还有味道”,妙不可言。

现在谁家开烤肉店可以用此名。

钟叔河先生在书中还列了两个比较有意思的店名。

清末有家酒楼取名“天然居”,两边的对联是:客上天然居
,居然天上客。美国奶粉品牌 KLIM(克宁)的四个字母,颠倒过来正是 MILK(牛奶)。

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
100天,那可是一眨眼就会过去的!无数个清晨黑夜,我睁大了眼,唯恐一闭上眼,我能看到这个世界的机会就一分一秒地减少了。伤心、绝望、懊悔、愤怒、跟老天爷讨价还价……各种情绪轮番在我的脑海里翻滚煎熬。我苦苦闷着、撑着,像一头受伤的野兽,被关在狭小的牢笼里。全世界都远去了,我过去所在意的一切、一切全都远去了,只剩下几件看似寻常的小事,在那个时刻,却活生生地跳到眼前、心上,催促着我:“你还有多少时间迟疑呢!你再不做就来不及了!”
<<<

这是李开复在他的《向死而生》书中一段话。李开复在中国互联网圈中是个耳熟能详的人物,向来以人生导师的形象出现。就像他在书中所说的,“最大化影响力”、“世界因我不同”,这是他的人生目标,伟大而高远。然而当癌症突然降临,面对人生旅程只剩下100天的时候,什么才是人生最珍贵的?人的一生该怎么样渡过?人生的意义是什么?这些终极人生问题就跳出来了。非是面对死亡,一般人对这些问题并无痛彻心扉的考虑,更少有大彻大悟的涅槃。


<<<
我脑海里一遍一遍地想到先铃,想到孩子,想到母亲和哥哥姐姐,也想到几位好朋友,我还想到了我错过的许多短暂的美好时刻。过去,我总觉得时间还很多——等我准备好这个演讲,做完那个采访,忙完这件投资案子;等我把每天发的微博内容都处理好。所以每件事都比这些“小事”重要。结果到头来,在我的生命仅存最后的100天时,我才发现,我这一生最大的错误是,我彻头彻尾地舍本逐末,把最要紧的事搁到最后,却把人生最弥足珍贵的时光,浪费在追逐那些看起来五彩斑斓的泡沫。
<<<

名誉、地位、金钱在人生的尽头似乎都不重要了,“五彩斑斓的泡沫”此刻即将幻灭。

<<<
乔布斯曾说过:“记住你即将死去。”这句话如今已成为我的座右铭,每天提醒我看清楚什么才是生命中重要的选择;因为所有的荣耀与骄傲、难堪与恐惧,都会在死亡面前消失,只留下真正重要的东西。如果觉察到自己沉溺于担心会失去某些东西时,“记住你即将死去”会是最好的解药。
<<<

什么是人生最重要的东西?什么又是人生应该做到而又没有做的事情?

<<<
在夹杂着悲伤、愤怒、绝望和追悔的情绪里,茫然四顾,但死亡的紧迫感却提醒我,无论如何要在生命最后的时刻,好好地做几件事:

<$checkbox> 1. 让我的亲人、朋友知道我真心爱他们,是他们让我的生命充满了温暖和光辉。</$checkbox>

<$checkbox> 2. 我要跟他们一起度过难忘的时光,让我们彼此的生命都记住在那个时刻里我们互放的光亮。</$checkbox>

<$checkbox> 3. 我要在活着的每一个时刻都是全心全意地活着,我不会再花心思去臆测、追想那些还没来到或者已经远去的事。</$checkbox>
<<<

此外,李开复在书中还引用了一些人生临终“箴言”和案例。

一生都在照顾临终病人的护士邦妮·韦尔(Bonnie Ware)的经验总结:人在临终时最后悔的五件事是:

<<<

<$checkbox> 1. 我希望当初有勇气过自己真正想要的生活,而不是别人希望我过的生活。</$checkbox>

<$checkbox> 2. 我希望当初我没有花这么多精力在工作上。</$checkbox>

<$checkbox> 3. 我希望当初我能有勇气表达我的感受。</$checkbox>

<$checkbox> 4. 我希望当初我能和朋友保持联系。</$checkbox>

<$checkbox> 5.我希望当初我能让自己活得更开心一点儿。</$checkbox>
<<<


艾妮塔·穆扎尼(Anita Moorjani)分享她死而复生的体验(她原本全身长满了肿瘤,在濒死边缘昏迷不醒,连医生都宣布放弃治疗了,但她却奇迹般地苏醒过来,而且全身肿瘤不药而愈)。在濒死时刻她领悟到,人生可以:

<<<
1. 用无条件的爱来爱自己;

2. 无惧地过日子。
<<<

亚历山大是一位神经外科医生,因为感染脑膜炎几乎脑死亡,经过七天濒临死亡的昏迷后,奇迹般地醒来。他用医学知识证明他的复活应该是奇迹,着手写作《[[天堂的证据]]》一书,描述这七天他灵魂脱壳的天堂体验。他描述的天堂是没有时空概念的,只有三条规则:

<<<
1. 你没有恐惧;

2. 你不怕犯错;

3. 你被爱拥抱。
<<<

面对死亡的恐惧和未知,人类将这些情绪都收纳进宗教的盒子里。作为大名鼎鼎的科学家李开复也例外,在人生的尽头走进了宗教的安慰或者寄托。

<<<
这么多真实的体验都指向一个神性的状态——这个世界是我们修炼灵性的大教室,我们的所有遭遇都是教材。所以,我们应该不带恐惧地参与我们的生命。

我也相信上帝或神性的存在,或者有一个更高的宇宙意识,也许是它们安排、布局了世界这个“大教室”;但是,我更相信人是有自由意志的,人可以决定自己的命运,要向下沉沦或往上提升。
<<<

不管是上帝或者佛陀,在人无奈时候更愿意一手温暖的手抚慰我们,引导我们,渡过黑暗,走向光明。也许这就叫做开悟吧。李开复与星云大师的对话:


<<<
大师突然问我:“开复,有没有想过,你的人生目标是什么?”

我不假思索地回答:“‘最大化影响力’、‘世界因我不同’!

大师笑而不语,沉吟片刻后,他说:“这样太危险了!”

“为什么?我不明白!”我太惊讶了!

“我们人是很渺小的,多一个我、少一个我,世界都不会有增减。你要‘世界因我不同’,这就太狂妄了!”大师说得很轻、很慢,但一个字一个字清清楚楚。“什么是‘最大化影响力’呢?一个人如果老想着扩大自己的影响力,你想想,那其实是在追求名利啊!问问自己的心吧!千万不要自己骗自己……”


“人生难得,人生一回太不容易了,不必想要改变世界,能把自己做好就很不容易了。”大师略停了停,继续说:“要产生正能量,不要产生负能量。”他的每一个字都落在我的心田里:“面对疾病,正能量是最有效的药。病痛最喜欢的就是担心、悲哀、沮丧。病痛最怕的就是平和、自信,以及对它视若无睹。我患糖尿病几十年了,但我无视它的存在,每天照样做我该做的事,我现在还不是活得好好的!”

于是请教大师要用什么样的态度面对社会上的“恶”?

大师还是以一贯平和的语气回应我:“一个人倘若一心除恶,表示他看到的都是恶。如果一心行善,尤其是发自本心地行善,而不是想要借着行善来博取名声,才能导正社会,对社会产生正面的效益。”

“可是,如果看到贪婪、邪恶、自私等负面的事件,又该怎么办呢?”我想辩解。

大师说:“要珍惜、尊重周遭的一切,不论善恶美丑,都有存在的价值。就像一座生态完整的森林里,有大象、老虎,也一定有蟑螂和老鼠。完美与缺陷本来就是共存的,也是从人心产生的分别。如果没有邪恶,怎能彰显善的光芒?如果没有自私的狭隘,也无法看到慷慨无私的伟大。所以,真正有益于世界的做法不是除恶,而是行善;不是打击负能量,而是弘扬正能量。”
<<<

虽然这些话 --- 就像李开复《向死而生》这本书一样 ---
 充满了满满的鸡汤味,但也不失为是一种营养。快乐的活在当下,活在此岸,一直是我的人生态度,就像《[[牧羊少年奇幻之旅]]》所说:''“当你真心渴望追求某种事物时,整个宇宙都会联合起来帮你完成。”''李安的成名之作《卧虎藏龙》中也有这样一句台词''“把手握紧,里面什么都没有;把手松开,你就拥有了一切!”''

中国人对死讳莫如深,孔子说:“未知生,焉知死。”其实可以改一下“未知死,焉知生?”只有了解和直面人的死,才知道活的价值和味道是什么。

PS:为此专门找了几本有关死亡的书籍:《[[天堂的证据]]》、《[[陪伴生命]]》(我从临终病人眼中看到的幸福)、《[[与神对话]]》、《耶鲁大学公开课:死亡》、《[[死亡如此多情]]》(百位临床医生口述的临终事件)

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

《枕边书》是美国《纽约时报书评周刊》同名专栏的合集,和之前读的南方周末出的《[[我书架上的神明]]》一样,皆为知识分子谈读书 --- 前者采访更多的是作家,其中不乏一些著名作家,如J.K. 罗琳(“哈利·波特”系列作者)、贾雷德·戴蒙德(《[[枪炮、病菌和钢铁]]》作者)、阿兰·德波顿(《拥抱逝水年华》《[[旅行的艺术]]》《[[哲学的慰藉]]》作者)、理查德·道金斯(《[[自私的基因]]》的作者)以及哈佛校长和美国前国务卿鲍威尔,后者更多的是中国学者。然《枕边书》比《[[我书架上的神明]]》读起来更有趣和真实,可能美国人比中国人更具有幽默感,或者说后者书中的人物生长在一个苦闷的年代。这两本书都丰富了我的读书清单,后者让我更具有读书的国际视野,以及异域他人的读书事。

《枕边书》中采访的每个人都是一些固定问题,挑一些有趣有意义的问题来说吧。

!! 你的床头柜上现在放着什么书?今年读过的最好的书是哪一本?

除了从这个问题中发现不少好书,还发现大部分美国作家都同时读好几本书。

!! 让你感到“真正了不起”的是哪本书?你最近读到的一部真正伟大的作品是哪一本?你最喜欢的作家是谁?

这个问题相似度并不高,但是还是能看出一些个人偏爱来的,如大部分作家更喜欢非虚构类书籍。

!! 关于读书体验

采访的大部分人喜欢的读书场景是:飞机上和睡前床上;大部分作家喜欢读纸质书,但并不排斥电子书并拥有。

!! 你会给总统推荐什么书?

这是个有趣读问题,可以看出美国作家们对总统对态度。如


<<<
《宪法》,重点看第一修正案。 ——玛丽·希金斯·克拉克

《[[五十度灰]]》。这么有意思的书他怎能错过?再说,这书也能让他放松放松。 ——约翰·格里森姆 无论在位的总统是谁,我都会推荐《通往奴役之路》。不过总统日理万机,而哈耶克的句法比较晦涩难懂。哈耶克的母语是德语,所以他会把许多句子如轨道一般串联在一起,最后用诸多动词结尾,仿佛火车事故现场一般混乱。 ——P.J. 欧洛克

美国伟大的悲剧史诗,麦尔维尔的《[[白鲸]]》。这部作品蕴含多重象征意义:裴廓德号象征着一个国家,疯狂执着的船长亚哈是一位危险的“领袖”,不同种族的船员则代表着美国公民。鉴于这是一部全员皆男性的冒险小说,为了平衡,我决定再选一本《艾米莉·狄金森诗歌集》。 ----乔伊斯·卡罗尔·欧茨

理查德·A. 穆勒的《未来总统的物理课》(2009)正切题。传统上,美国总统的科学顾问一直是物理学家。掀开科学的层层面纱,你会知道要懂生物,必先了解化学,而要懂化学,必先了解物理。政府里见多识广的人从一开始就知道这一点。另外,工程学的一切知识都源自物理法则。 ——尼尔·德格拉斯·泰森 拉

无论在位的总统是谁,我都会推荐《[[通往奴役之路]]》。不过总统日理万机,而哈耶克的句法比较晦涩难懂。如果要推荐一本更简单且论述了经济和个人自由之间的关系的书,我会推荐米尔顿·弗里德曼和罗斯·弗里德曼合著的《[[自由选择]]》。   ---- P.J. 欧洛克

尼科洛·马基雅维利的《[[君主论]]》。马基雅维利现今常常被斥为一个不辨是非的犬儒主义者,人们认为他倡导欲达目的可不择手段。事实上,马基雅维利是一个明明白白的现实主义者,他充分理解权力的局限和用途。他的思想基础是对意大利语中德性(virtù)与机运(fortuna)两个概念的区分,它们不同于我们通常所说的“美德”与“财富”。这里的德性(virtù)是指政治家行为的影响范围,机运(fortuna)则指不受政治家控制的运气。马基雅维利用了一个绝妙的比喻:洪水是不可控的,但预测到洪水将至,人们可以采取防护措施,使人在厄运面前不至于无能为力。政治家的任务之一就是预测危机,未雨绸缪。每一位总统(以及其他所有人)都应该读一读马基雅维利,理解和运用他的思想。---- 贾雷德·戴蒙德

我会拿出一本幼儿园教师手册,并告诉对方:“和国会打交道的时候,这本书会派上用场的。” ——阿诺德·施瓦辛格

保罗·克鲁格曼的《现在终结萧条!》 --- 丹·萨维奇 
<<<

你会推荐什么书给中国主席?

我的答案:《中华人民共和国宪法》

!! 哪本书对你的影响最大?

这个问题因人而异,环境可能是触发读书共鸣的第一因素。

!! 有哪些读书“恶趣味”?

这是个人趣味阅读话题,许多美国家喜欢侦探和科幻类,而讨厌恐怖类。

!! 如果你有机会可以见到一位作家,在世的或已故的都可以,你想见到谁?你想从这位作家那里知道些什么?你曾经给其他作家写过信吗?

大部分作家还是希望能见到莎士比亚。中国作家希望见到曹雪芹?

!! 什么书是你自愧还没读过的?

哦,这个问题有点尴尬!但是看到美国作家都是比较诚实的。


<<<
我从来没读过伟大的俄罗斯作家的作品。说实话,我对俄罗斯、俄罗斯的文化和俄罗斯历史完全不感兴趣。一点也不。鬼知道是为什么。我想每个人都应该有一两次犯蠢的权利。
——詹姆斯·麦克布莱德

《战争与和平》。为了解释自己骇人听闻的无知,我的标准借口是:“我准备等患上不治之症的时候再读这本书。”不过扪心自问,如果医生告诉我,我还剩下六个月的生命,我很怀疑自己是否真的会拿起《战争与和平》,而不是去读P.G. 伍德豪斯。——克里斯托夫·巴克利

我从未读过托尔斯泰的作品。这曾让我心存愧疚。——马尔科姆·格拉德威尔

到了我这把年纪,一有什么不对劲,总会把书读到一半就放弃。无伤大雅,堂堂正正,只是各退一步。至于没读过的经典,这方面我也尽量不让自己感到羞愧。这个世界上有太多伟大的作品,多到我总也读不完,这是人生一大幸事,也有利于人类文明的发展。——乔纳森·勒瑟姆

啊哈,这不就是戴维·洛奇书中的“羞辱”游戏嘛。玩这个,我肯定是冠军。我没读过的书非常多,而自愧未读的书,我会选《战争与和平》。——理查德·道金斯

《白鲸》。——安德鲁·所罗门

狄更斯的《荒凉山庄》。我一定是有什么问题吧?——加里·施特恩加特

作为一个背弃已久的孔门弟子和基督徒,我自愧尚未读完《易经》和《圣经》。--- 李昌来
<<<


以后我也可以不会为未读或未读完某本书而内疚了,如<<tag 而废>>集。

!! 大失所望、名不副实、平庸之作、其实不然之书

许多人提到了《[[尤利西斯]]》甚至还有海明威的作品。



<<<
每隔几年,我就会想:“或许我现在已经足够聪明,足够成熟,可以读懂《尤利西斯》了。”于是将这本书捡起来重新挑战。然而每回都是,读到第十页,我就忍不住心下吐槽:“这到底是什么……” ——伊丽莎白·吉尔伯特 

《尤利西斯》。这个问题很好回答。这是教授才看的书。不过我猜如果你是爱尔兰人,或许能看明白。 ——理查德·福特 

我愿意拿《死者》(詹姆斯·乔伊斯的另一部作品)里的最后十几页与《尤利西斯》里的任何十几页交换。从形式上看,小说是向外蔓延的,不可能完美无缺,它也不需要、不妄求做到完美。诗歌则可以达到完美的状态——让你一个字都不想替换修改——在极少数情况下,短篇小说也能做到。 ——伊恩·麦克尤恩 
<<<


<<<
除了海明威的几个短篇故事之外,其余的我都不喜欢。他的名言“写你所知”在想象文学领域毫无用处,这句话只适用于记者,而非小说家和剧作家。设想一下,假如索福克勒斯、莎士比亚或狄更斯听从了这条建议,那简直糟糕透了!而且海明威的句子短小简明,简直可以用于广告文案。还有那些让人反感的硬汉形象——都是抿着坚毅的上唇、寡言少语的男人!我欣赏麦尔维尔的建议:“可悲!有人宁可取悦世人,却不愿令人闻风丧胆!”我喜欢麦尔维尔(《[[白鲸]]》的作者)。一个人可以同时喜欢麦尔维尔和海明威吗?有些读者或许可以做到,但我不能。----约翰·欧文
<<<


不过也有狡猾的回答:

<<<
我相信那是一部杰作,只是我的智慧尚不足以支撑我读完全书。 ——佩恩·吉列特 
<<<


<$transclude mode="block" tiddler=bookkeywords/>
<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201910]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="description"/> //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>


<$transclude mode="block" tiddler=booklogsinfo/>


<<<
两艘演习战舰在阴沉的天气中航行了数日,我就在打头的那艘旗舰上当班,当时天色已晚,我站在舰桥上嘹望,浓重的雾气使得能见度极低,因此船长也留在舰桥上压阵。

入夜后不久,舰桥一侧的嘹望员忽然报告:“右舷位置有灯光。”

船长问他光线的移动方向,他回答:“正逼近我们。”这意味着我们可能相撞,后果不堪设想。

船长命令信号兵通知对方:“我们正迎面驶来,建议你转向20度。”

对方说:“建议你转向20度。”

船长说:“发信号,告诉他我是上校,命令他转向20度。”

对方回答:“我是二等水手,你最好转向20度。”

这时船长已勃然大怒,大叫道:“告诉他,这是战舰,让他转向20度。”

对方的信号传来:“这是灯塔。”

结果,我们改变了航道。
<<<

这位船长经历了一次思维转换,结果整个情况都不同了。船长因为身处迷雾而看不清事实,但是看清事实在我们的日常生活中是极其关键的一环。

[[原则|Thought Framework]]如灯塔,是不容动摇的自然法则。正如塞西尔.B.德米尔( Cecil.B. deMille)在他执导的电影《十诫》(The Ten Command-ments)中所揭示的:“我们不可能打破法则,只能在违背法则的时候让自己头破血流。”

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

我很少读诗歌类书籍,青春期也没有喜欢过,我周围也没有发现有几个人喜欢和阅读的。我想这可能不是个人原因造成的,是时代背景和环境造成的。最近看《[[枕边书]]》发现美国许多作家都喜欢读一些诗歌,加上之前看《[[七十年代]]》暗涌流动的诗歌浪潮,更加剧了我想对诗歌流行之谜的探究。

<<<

一天,我碰巧在《诗刊》读到北岛的《回答》、《习惯》、《迷途》。紧接《露台》“母亲般”的震荡之后,《回答》又带给我“父亲般”的第二次震荡。那震荡也在广州各高校引起反应。我看过杨小彦(他现在是中山大学传播系教授)一个很漂亮的笔记本,上面抄了许多北岛的诗,当然也有这首“可怕的”《回答》。确实可怕,一首诗可以此起彼伏形成浩瀚的心灵的风波。这对于今天的年轻人来说也许显得不太真实或不可思议,而当时的生活就是如此。 

而北岛“回答”的激情,正好供给了那个时代每一个内心需要团结的“我——不——相——信”的声音。那是一种多么巨大的毁灭或献身的激情!仿佛一夜之间,《今天》或北岛的声音就传遍了所有中国的高校,从成都、重庆、广州中
山大学等许多朋友处,我频频读到北岛等人的诗歌。这种闪电般的文化资本传播速度哪怕是在今天,在讲究高效率的出版发行机制的情况下都是绝对不可思议的天方夜谭。这或许应归功于我上面所说的那个时代特有的“现代”传播形式及传统:走动——串联——交流,尤其是那个时代老式但快速的政治列车,它几乎是以某种超现实的魔法把一张写在纸上的诗旦夕之间传遍全中国。

举一个例子,就连当时在昆明工厂当工人的于坚都于70年代初读过食指写于北京的《相信未来》,由此可见其传播的深广度是如今的网络也不能相比的。

就象一块石头击向平静的湖水,涟漪一圈一圈在扩大,那涟漪的中心是象征主义,第一圈涟漪是超现实主义,第二圈是意象派,第三圈是自白派,第四圈是运动派,第五圈是垮掉派,第六圈……第七圈……一石激起千层浪,我开始换着口味吸取着一个又一个诗人的“精髓”,肉感的诗、抽象的诗、光明的诗、黑暗的诗、幸福的诗、疼痛的诗、闲谈的诗、雄辩的诗、良心的诗、智慧的诗、装怪的诗、赤裸的诗……

北岛及其《今天》,或许正契合了一种俄罗斯式的对抗美学(有关此点,我有另文专述),他是对一个“苦闷”和“压抑”的时代提出了激情的异议,也正是从这意义上,北岛成了一个时代的代言人。

<<<

上面是《七十年代》里柏桦的文章《始于1979,比冰和铁更刺人心肠的欢乐》里的追忆。在那个纷乱动荡的年代,诗歌就像坚硬石缝里长出的小花,装点着残酷青春,使之看起来很美;同时也抚慰着岁月,使之回忆起来多了一份浪漫和温柔。



<<<
在那个年代,不仅北京、上海在秘密流传着波德莱尔的诗歌,即便是在我的家乡,偏远的重庆,也有一个类似的文学沙龙(这种文学沙龙遍及当时全国各大城市,随便举个例子:如北京有徐浩渊的沙龙,南京有顾小虎的沙龙,这类沙龙有些共同点:那就是交流读书感受,谈论政治与哲学,背颂西方翻译诗和富有文采的小说片断,欣赏外国油画及练习美声唱法,当然有时也成群结伴地去风景地游历),其中也有一个类似的青年导师马星临,他狂热地阅读着波德莱尔的诗歌和巴乌斯托夫斯基的诗性散文与小说,而他的口头禅(几乎每一次主讲文学感受时都挂在嘴边)就是陈敬容所译波德莱尔那句诗“比冰和铁更刺人心肠的欢乐”。的确这种艺术的欢乐在当时是那么秘密,那么具有对抗性的个人姿态,而这姿态又那么迫切地期待升华和移置,因此只能是比冰和铁更加刺人心肠。这句诗几乎成了60年代、70年代和80年代初诗人们的接头暗语,它更多地代表了当时个体生命的感受性,它是这一特定中国历史文化语境下的集中精神之表达。它也在一种中国式的浪漫主义情怀下成为一个只可意会不能言表的丰富象征。这象征混合着俄罗斯文学,在中国尤其引人注目,为此,我得在这里宕开一笔多说几句。

<<<


待续

参考:《1972-1978:被埋葬的中国诗人》



<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
轮.辐.盖.轸.皆有职乎车.而轼独若无所为者.虽然.去轼.则吾未见其为完车也.轼乎.吾惧汝之不外饰也.天下之车.莫不由辙.而言车之功者.辙不与焉.虽然.车仆马毙.而患亦不及辙.是辙者.善处乎祸福之间也.辙乎.吾知免矣. --- 苏洵《嘉祐集》
<<<

马车的各部分都有作用,只有轼——车厢前那根横木,似乎没什么大用处,但若去掉它,看起来便不像一辆完整的车了。轼儿啊,我愿你在人们眼中,不要成为可有可无的东西!

车都得在辙——车道上才能走,讲起车辆做的工作,却不会提到车道;可是,车即使翻了,马即使受伤死了,车道也不会受连累。无大福者无大祸,辙儿啊,愿你一生平安!

前几日我提到[[几个给店铺取名字的小文|2019年10月28日周一下午04:14:53]]。取名字是一门学问,贤父有知子之明,苏洵针对两个儿子的性情有寄托的给他们取苏轼和苏辙, 希冀成人。中国历史上除了“三曹” --- 曹操、曹丕、曹植,就属“三苏”这一家了,“一门父子三词客,千古文章四大家”(眉山三苏祠对联)。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
郁离子曰.小人其犹膏乎<<footnote "❶"即熟猪油">>
.观其皎而泽.莹而媚.若可亲也.忽然染之.则腻不可濯矣.故小人之未得志也.尾尾焉<<footnote "❷"低声下气的样子">>.一朝而得志也.岸岸焉.尾尾以求之.岸岸以居之.见乎声.形于色.欲人之知也如弗及.是故君子疾夫尾尾者. --- 刘基(字伯温)《郁离子》(见《诚意伯文集》卷四)
<<<

这是一篇非常棒的议论文,短短数语阐明了为什么正人君子讨厌那些“尾尾者”小人。生活中不乏小人,什么是小人?就是那些像熟猪油那样外表洁白晶莹,实则油腻不洁之人。小人的表现那?不得志时装孙子,前恭后倨;意气风发时是大爷,颐指气使。刘伯温所说的“尾尾焉”和孔子说的“小人常戚戚”一个意思,只是刘伯温把小人比喻为猪油,更形象和直观。

前些日子看吴晗的《[[朱元璋传]]》中提到刘基。刘基生于乱世,先是跟着元军混,后做了朱元璋的谋士,对大明帝国的建立起到了至关重要的作用,国号大明即刘基所起。然其虽功高德伟,起伏不能由己,不得善而终。刘基对人生百态的感悟应该比常人更深刻些。


<<<
刘基是幕府智囊,运谋决策,不只有定天下的大功,并且是奠定帝国规模的主要人物,因为主意多,看得准,看得远,被猜忌最深,洪武元年便被休至回家,又怕隔得太远会出事,硬拉回南京,终于被毒死。<<footnote "❸"《明史》卷三〇八《胡惟庸传》、卷一二八《刘基传》,刘璟《遇恩录》。">> --- 吴晗《[[朱元璋传]]》
<<<






<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
陶石梁曰.世间极闲适事.如临泛游览.饮酒弈棋.皆须觅伴寻对.''惟读书一事.止须一人.可以竟日.可以穷年.环堵之中而观览四海.千载之下而觌面古人.天下之乐.无过于此.''而世人不知.殊可惜也.--- 张岱《快园道古》卷四
<<<

世间闲暇最惬意事是什么?可能各执一词,耽爱有别。不过诸事多有局限,唯有读书之事不受时间和地域的限制,一人或卧或坐或行进中皆可完成,可纵横八万里,上下五千年。这实乃读书独有之乐。

张岱并非独爱读书,其爱好可谓多也,其[[自为墓志铭|2017年11月14日 下午 08:52:39]]坦言:


<<<
蜀人张岱,陶庵其号也。少为纨绔子弟,极爱繁华,好精舍,好美婢,好娈童,好鲜衣,好美食,好骏马,好华灯,好烟火,好梨园,好鼓吹,好古董,好花鸟,兼以茶淫橘虐,书蠹诗魔,劳碌半生,皆成梦幻。
<<<

上文中张岱最后一句:”而世人不知,殊可惜也”,看起来自古读书并不是大众之事,今日如是。

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
青年:如果学历低,就会失去很多求职或发展的机会。不被社会看好也就无法成功。这不是什么借口,而是一种严峻的事实。

哲人:不对。

青年:为什么?哪里不对?

哲人:关于你所说的因果关系,阿德勒用“[[外部因果律]]”一词来进行说明,意思就是:将原本没有任何因果关系的事情解释成似乎有重大因果关系一样。例如,前几天就有人说:“自己之所以始终无法结婚,就是因为幼时父母离婚的缘故。”从弗洛伊德的[[原因论]]来看,父母离婚对其造成了极大的精神创伤,与自己的婚姻观有着很大的因果关系。但是,阿德勒从[[目的论]]的角度出发把这种论调称为“外部因果律”。

青年:但是,现实问题是拥有高学历的人更容易在社会上获得成功啊!先生您应该也有这种社会常识吧。

哲人:问题在于你如何去面对这种社会现实。如果抱着“我因为学历低所以无法成功”之类的想法,那就不是“不能成功”而是“不想成功”了。

青年:不想成功?这是什么道理啊?
哲人:简单地说就是害怕向前迈进或者是不想真正地努力。不愿意为了改变自我而牺牲目前所享受的乐趣——比如玩乐或休闲时间。也就是拿不出改变生活方式的“勇气”,即使有些不满或者不自由,也还是更愿意维持现状。

哲人:而且,对自己的学历有着[[自卑情结]],认为“我因为学历低,所以才无法成功”。反过来说,这也就意味着“只要有高学历,我也可以获得巨大的成功”。

哲人:另外,特意自吹自擂的人其实是对自己没有自信。阿德勒明确指出''“如果有人骄傲自大,那一定是因为他有自卑感”。''

青年:您是说''自大是自卑感的另一种表现''。

哲人:是的。如果真正地拥有自信,就不会自大。正因为有强烈的自卑感才会骄傲自大,那其实是想要故意炫耀自己很优秀。担心如果不那么做的话,就会得不到周围的认可。这完全是一种优越情结。

最后再举一个关于自夸的复杂实例。这是一种通过把自卑感尖锐化来实现异常优越感的模式。具体就是指夸耀不幸。

青年:啊,这种人倒是存在……

哲人:这种人其实是想要借助不幸来显示自己“特别”,他们想要用不幸这一点来压住别人。

通过这种方式,我就可以变得比他人更有优势、更加“特别”。生病的时候、受伤的时候、失恋难过的时候,在诸如此类情况下,很多人都会用这种态度来使自己变成“特别的存在”。

青年:也就是暴露出自己的自卑感以当作武器来使用吗?

哲人:是的。以自己的不幸为武器来支配对方。通过诉说自己如何不幸、如何痛苦来让周围的人——比如家人或朋友——担心或束缚支配其言行。刚开始提到的那些闭门不出者就常常沉浸在以不幸为武器的优越感中。阿德勒甚至指出:''“在我们的文化中,弱势其实非常强大而且具有特权。”“如果要问谁最强大,那答案也许应该是婴儿。婴儿其实总是处于支配而非被支配的地位。”''婴儿就是通过其弱势特点来支配大人。并且,婴儿因为弱势所以不受任何人的支配。
<<<

这段对话涉及学历、自卑、单身狗和宅男等社会普遍存在的现象,虽然对话闻着有股浓浓的鸡汤味道,但汤里面煲的是哲学和心理学 --- --- 三大心理学派中的[[阿德勒心理学派]]和[[弗洛伊德心理学派]],以及阿德勒认知学方面的理论。
面对一个问题,不同的[[思维框架|Thought Framework]]会得出不同的认识和结果,就以上面涉及的社会现象来说,用备受青睐的弗洛伊德和阿德勒心理学心理学分析的结果迥异,到底哪个分析的结果更接近事物的本质那?用[[黑天鹅]]作者纳西姆·尼古拉斯·塔勒布的话来说,统计学、经济学以及心理学等这些软科学并非真正的科学 --- --- 软科学,是相对于自然科学等硬科学而言,没有绝对的真理。就以自己有限的认知科学常识来说,从结果论来看,阿德勒认知理论(或心理学)更加实用和有价值,阿德勒心理学主张“[[目的论]]”,自然其心理学分析路径就抛开了人过往的历史包袱,着眼于眼前、现在,从而把解决问题的办法导向积极的、光明的一面。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
人生最系恋者过去.最冀望者未来.最悠忽者见在.''夫过去已成逝水.勿容系也.未来茫如捕风.勿容冀也.独此见在之顷.或穷或通.时行时止.自有当然之道.''应尽之心.乃悠悠忽忽.姑俟异日.诿责他人.岁月虚掷.良可浩叹. ---- 王士禛《池北偶谈》卷七《苏门孙先生言行》
<<<

这和曾国藩的话如出一辙:


<<<
“当读书,则读书,心无着于见客也;当见客,则见客,心无着于读书也。一有着,则私也''。灵明无着,物来顺应,未来不迎,当时不杂,既过不恋。''是之谓虚而已矣,是之谓诚而已矣,以此读《无妄》《咸》《中孚》三卦。盖扞格者鲜矣。” --- 《曾国藩文集·处世金针·修身之要》
<<<

二者都强调:活在当下!


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
广南可耕之地少.民多种柑橘以图利.常患小虫.损失其实.惟树多蚁.则虫不能生.故园户之家.买蚁于人.遂有收蚁而贩者.用猪羊脬盛脂其中.张口置蚁穴旁.俟蚁入中.则持之而去.谓之养柑蚁. --- 庄绰《鸡肋编》卷下
<<<


这是岭南“以虫治虫” 生物防治的记录。《鸡肋编》成书于南宋绍兴三年即1133年,距今近九百年。之所以我把这则记录摘录下来,一是因为这是中国古代生物防治的典型记录,二来这也是一则古籍[[博物学|博物志]] --- 自热而然的科学 --- 学习典范,现代科学的古籍考古。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

我好像不止一次看到其它书中提到《高效能人士的七项修炼》这本书。最近看《[[枕边书]]》,书中Fackbook公司首席执行官Sheryl Sandberg也提到此书:

<<<

哪一本书是所有企业高管的必读书?

弗雷德·考夫曼的《高效能人士的七项修炼》,这本书对我的事业和生活有着深远的影响。我几乎每天都会思考从他那里学到的东西——真诚沟通的重要性、无可挑剔的承诺、做一个“参与者”而非“受害者”、承担责任。我把这本书送给许多团队成员,我曾目睹它如何在短短的一段时间内,引导人们对自己的行为和影响力产生更清醒的认识。
<<<

也许是个人阅读趣味做祟,我对这类“奇技淫巧”型书籍向来都“嗤之以鼻”,''读书更应重道而非术''。匆匆读完此书,和阅读之前的好奇或期待落差很大,此书并没有给我带来什么新鲜的观点或者其它有意义的指导。弗雷德·考夫曼书中列出的这些原则(见下)都是政治正确的大道理,路人皆知。关于此类书籍的重点不在于您知道什么,而在于您怎么做,能否坚持。

''高效能人士的七项修炼原则:''

# 掌握选择的自由 --- 操之在我的力量;
# 锁定生命的坐标 --- 确定目标、全力以赴;
# 忙要忙得有意义-掌握重点的个人管理;
# 大家都可以是赢家 ---利人利己的人际关系;
# 做个双向传播的聆听者 --- 设身处地的沟通原则;
# 脑力激荡,威力无比 --- 集思广益的合作原则;
# 最佳的投资策略 --- 均衡发展的成长原则。

''七项修炼原则逻辑图:''

[img width=60% [http://one.rizi.me/photos/rizime/gaoxiaorenshi7.png]]


看此书,不如看认知哲学《[[被讨厌的勇气]]》更具有操作性和指导意义。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

阿德勒认为:''“一切烦恼都来自人际关系!”''

这是阿德勒心理学的一个基本概念,这里的烦恼仅止于个人的烦恼,即所谓的“内部烦恼”。这句话看似耸人听闻,用[[还原论]]来看,可以找到烦恼的脉络。

<<<
如果这个世界没有人际关系,如果这个宇宙中没有他人只有自己,那么一切烦恼也都将消失。
<<<

当然,这个世界不可能只有一个人。正因为我们处在一个个人际关系中,才产生了诸多的烦恼,如自卑、嫉妒、喜欢和讨厌等等负面的情绪,这些烦恼归根结底都来自于人际关系之中。阿德勒心理学强调“''目的论''”,而烦恼正是个人在人际关系中某些目的产生的。

如人人皆有的自卑心理。阿德勒认为,人的''自皁感来自主观的臆造''(阿德勒第一个使用“自卑感”这个词),这里的“自卑感”是一个关于自我价值判断的词语,而价值必须建立在社会意义之上。例如,即使1美元纸币所承载的价值是一种常识(共通感觉),那它也不是客观意义上的价值,客观意义上的价值就是印刷1美元的成本。所以,我们个体的价值是一种社会意义的价值,并非观客价值。

<<<
如果这个世界上只有我一个人存在,那我也许会把这1美元的纸币放入壁炉当燃料或者当卫生纸用。同样的道理,我自然也就不会再为自己的身高而苦恼。
<<<

价值问题最终追溯到人际关系上来了。阿德勒认为人的自卑感并不是什么坏事。

<<<
人是作为一种无力的存在活在这个世界上。并且,人希望摆脱这种无力状态,继而就有了普遍欲求。阿德勒称其为“追求优越性”。与此相对应的就是自卑感。
<<<

当我们不满足于现状而追求优越性时,自卑感可以促进我们进步。然而自卑也有消极的一面,阿德勒称之为“''自卑情结''--- --- 和自卑感是两个概念。自卑情结一词表示的是一种复杂而反常的心理状态,跟自卑感没有关系。

自卑情结并不是什么好事了。自卑情结把自己的自卑感当作某种借口使用的状态。具体就像“我因为学历低所以无法成功”或者“我因为长得不漂亮所以结不了婚”之类的想法。像这样在日常生活中大肆宣扬“因为有A所以才做不到B”这样的理论,这已经超出了自卑感的范畴,它是一种自卑情结。

这里涉及到阿德勒心理学的另外一个概念:外部因果律,意思是将原本没有任何因果关系的事情解释成似乎有重大因果关系。例如有人说:“自己之所以始终无法结婚,就是因为幼时父母离婚的缘故。”从弗洛伊德的原因论来看,父母离婚对其造成了极大的精神创伤,与自己的婚姻观有着很大的因果关系。但是,阿德勒从目的论的角度出发把这种论调称为“外部因果律”。

也许有人认为阿德勒心理学是一种诡辩哲学,就以“学历低”问题来说吧,阿德勒承认这是一种社会现实,学历低确实会造成机会减少,但是阿德勒认为如果抱着“我因为学历低所以无法成功”之类的想法,那就不是“不能成功”而是“不想成功”了,是害怕向前迈进或者是不想真正地努力,不愿意为了改变自我而牺牲目前所享受的乐趣——比如玩乐或休闲时间。也就是拿不出改变生活方式的“勇气”,即使有些不满或者不自由,也还是更愿意维持现状。

这的确是一种思维的逆转,正如阿德勒认为的“''不在于你拥有什么,而在于你怎么使用''”,这就是目的导向的“目的论”。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
明崇祯之际.题北京西向之门曰顺治.南向之门曰永昌.不谓遂为改代之谶.流寇入京.永昌乃为自成年号.清兵继至.顺治亦为清代入主之纪元.事殆有先定欤.禁城东华西华二门对峙.然至民国.则中门易为中华.亦若预为之地者.谓之巧合可矣. --- 枝巢子(夏仁虎)《旧京琐记》卷八
<<<



明崇祯皇帝真是走了背字,自己城门的名字 --- 顺治和永昌,以及中华,皆一语成谶。永乐十九年(一四二一)建成内城,设九座城门,有所谓“九门提督”;嘉靖二十三年(一五四四)又建成南边的外城,设七座城门。城门的名称,在明朝有过改动,入清后道是没有再改,一直沿用下来。

夏仁虎是清光绪举人,二十世纪五十年代曾就职中央文史馆馆,久居北京,熟悉掌故。夏仁虎先生的《日下旧闻考》中还有一则也比较有意思,在卷十九补辑《春明梦余录》云:

<<<
辽之正殿曰“洪武”,元之正殿曰“大明”。是后之国号、年号,已见于此,谁谓非定数也。
<<<

辽元皆暗示了朱元璋的大明和洪武?古人说此乃天机,皆定数。不如说这更是一个巧合,或者是后来者的一种传统或者心理暗示,用现代认知科学来说,倒是一种事后解释或归因。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


我之前整理了[[一份“忆亡人”佳篇|2019年10月14日周一下午02:50:19]],少了清代代蒋坦的《秋灯琐忆》,其也是常被人提起的悼妻佳作。

<<<
去年燕来较迟.帘外桃花.已零落殆半.夜深巢泥忽倾.堕雏于地.秋芙<<footnote "❶"作者亡妻">>
惧猧儿所攫.急收取之.且为钉竹片于梁.以承其巢.今年燕子复来.故巢犹在.绕屋呢喃.殆犹忆去年护雏人耶. ---- 蒋坦《秋灯琐忆》
<<<

去年燕子来,绣户深深处。花径得泥归,都把琴书污。今年燕子来,谁共呢喃语。不见卷帘人,一阵黄昏雨。

<$transclude mode="block" tiddler=bookkeywords/>
<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201911]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="description"/> //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>


<$transclude mode="block" tiddler=booklogsinfo/>

常听郭德纲相声的人一定记得被郭无数次提起的这句话:“一死一生,乃知交情;一贵一贱,交情乃见。”乍听之时,我还以为是郭德纲学来的老话或谚语之类,今在《史记》中发现了这句话 --- 郭德纲说的不全,出自一个故事。

<<<
始翟公为廷尉(中央主管刑狱的大官),宾客阗门;及废,门外可设雀罗。翟公复为廷尉,宾客欲往,翟公乃大署其门曰:

一死一生,乃知交情。
一贫一富,乃知交态。
一贵一贱,交情乃见。
<<<

之前我考证过郭德纲相声里面的另外一句话“江山父老能容,不使人间造孽钱”和一个段子的出处([[见此|2019年07月19日周五下午04:11:31]]),足见郭德纲古文功底颇厚实。

上面那句话,在叶楚伧编的《历代名人短笺》中也被引用过:

<<<
古人曰.一贵一贱.交情乃见.太师有焉.一死一生.乃见交情.余小子何多让焉.呜呼哀哉.尚飨. ---- 顾仲言《刑场祭夏言》
<<<






<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
窃闻亡友西山先生蔡君季通羁旅之榇.远自舂陵言归故里.谨以家馔只鸡斗酒酹于灵前.呜呼哀哉. --- 朱熹《朱子大全》卷第八十七
<<<

南宋时,士大夫论政之风正盛,门户派别之争激烈。朱熹、蔡季通等人,居官讲学比较方正,不肯苟同于邪僻的韩侂胄之流,于是韩侂胄当权以后,便指责朱熹等人“文诈沽名”,奏劾朱熹有不孝母、不敬君、不忠国、侮朝廷、结私党、坏圣像六大罪,和“诱引尼姑二人以为宠妾”等劣行,要治他们“伪学之罪”并被褫职。庆元中朱熹被劾落职,蔡受牵连,也被流放到道州,就死在那里了。蔡的灵柩从道州运回建阳,朱熹侨居于此,前往吊唁,心中有话不敢说,只写了上面寥寥四十字的哀辞。

<<<
某有捐百身起九原之心.有倾长河注东海之泪.路修齿髦.神往形留.公殁不亡.尚其来飨.  --- 陆游《渭南文集》卷四十一
<<<

上文,是朱熹祭悼蔡季通(元定);下文,是陆放翁(游)祭悼朱熹(元晦)。前后相隔,不到三年,祭悼者便成了被祭悼者。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

《蝇王》这本书我是从《[[我书架上的神明续编]]》上知悉:

<<<
本书主题讲的就是人性的缺陷与沉沦,其实这是一件可悲的事,在一个化外之地,人类可以为了生存而表现出贪婪、夺取、争权、操控的一面,就连这些原本单纯的唱诗班孩子也会如此,人类的悲哀可想而知。原本在文明世界教导的规则与善意的互助,却演变成堕入野蛮与罪恶,所以本书是一本剖析人性的经典。  --- 李家同
<<<
《蝇王》的作者威廉·戈尔丁于一九八三年被授予诺贝尔文学奖,瑞典文学院声称,这是“因为他的小说用明晰的现实主义的叙述艺术和多样的具有普遍意义的神话,阐明了当今世界人类的状况”。《蝇王》被列为“英国当代文学的典范”,成为英美大中学校文学课的必读书。

《蝇王》的荒野求生记故事简单而老套,只是把故事的主角换成了一群孩子。也许现实中对人的道德进行考验是一种十分不道德的行为,所以创作家们热衷于把道德的试验场放在了小说或影视作品中。《蝇王》中,处于外化之地的一群孩子表现出了不同的立场:恶和不作恶,这是一个古老的哲学命题:人之初性本善还是恶?用现代认知科学来解释这一命题,人之初性本无善恶,只有生存的本能需求。善恶本是人在成长过程中受到的污染 --- 可能是白也可能是黑,污染源即为文化 --- 有好有坏。《蝇王》的作者把一群孩子丢在荒岛,即为化外之地,可是这些孩子还是浸染了人类世界的诸多文化,如小说反复出现的海螺号事实上就是权威者的符号,对这些底色已经被污染了的孩子进行人性试验事实上是无意义的。从科学还原论的分析方法来看,需要把原始的DNA中自带的生存的本能从后天的人类文化污染的习性中剥离出来,只有这样才可以理解人类的诸多行为,而不能简而化之,统统归于人性的标签之下。

''人性是水,文化乃冰!''

延伸阅读:[[电影版《蝇王》|https://53ys.cc/detail/172217.html]]
<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

之前记录过两个[[“一语成谶”的小故事|2019年11月25日周一下午11:28:05]],今在《古今传记》(宋篇)之黄溥言《闲中古今录 》篇也看到这样一则小故事,“五更头 ”:


<<<
宋太祖建隆庚申。受禅后。闻陈希夷只怕五更头之言。命宫中转六更。方鼓严鸣钟。太祖之意。恐有不轨之徒。窃发于五更之时。故终宋之世。六更转于宫中。然后鸣钟。殊不省庚更同音也。至理宗景定元年。历五庚申。越十七年末。宋亡。而希夷五更头之数信矣。到元朝延祐七年庚申。而至正帝生。帝乃宋少帝赵显子。详见稷录。大明兵入燕都。遁去。当时人只呼庚申帝。观刘尙宾集庚申帝大事记是也。后方号顺帝云。由此观之。与宋祖命转六更之言。益信数之不爽。
<<<

赵匡胤可能是五更起事,黄袍加身,所以忌讳五更,就把宫中的五更变六更。殊不知宋一代还是躲避不了“五更”的魔咒,历五庚申 ---庚与更同音 ,到理宗景定元,宋亡。至元朝延祐七年庚申,宋少帝赵显生子,乃至正帝,人称庚申帝。

宋太祖赵匡胤的“五更死,七更生”的预言,一语成谶。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
《佩觿集》云:“河朔谓无曰毛。”今粤中及西蜀皆然。按东坡请人吃毳饭曰:“饭也毛,菜也毛,萝葡也毛。”则古人行文往往用之,然犹曰纪载方言,叙述游戏耳。《后汉书·冯衍传》:“饥者毛食。”《五代史》:“黄幡绰赐绯毛鱼袋。”则典册高文,亦用之矣。
<<<

《两般秋雨盦随笔》中提到的上文的“毛”是两粤用语“冇”,即无、没有的意思。今之网络用语“有毛用”的“毛”应该也是源于此,“有卵用”是之衍生词。

《两般秋雨盦随笔》是由清代梁绍壬编撰的一本博物全书,共八卷,类似《[[夜航船]]》,不过前者内容更偏于文史部分,多记载文学家和艺术家的事迹、评述诗文以及论学考证等,综其全旨,有四部分组成:“一曰稽古,则《经典释文》之遗也;一曰述今,则《朝野佥载》之体也;一曰选胜,则模山范水卧游之图也;一曰微辞,则砭愚订顽徇路之铎也。”

古代博物类笔记非常之多,但大部分著作都非常不严谨,毫无科学依据可言 ---- 这也是为什么中国缺乏科学之精神,尽管如此,此类书籍对文史研究还是颇有价值。选摘几则如下:


<<<
弄堂:今堂屋边小径,俗呼弄堂,应是弄唐之讹。宫中路曰弄,庙中路曰唐,字盖本此。

密蔷薇:嫁女送亲,所在皆然,广东顺德县为尤甚。凡来者环立门外,主不迎送,亦不供茶酒,名之曰“密蔷薇”,其名色甚新。

岳王诗 向阅某小说,见有咏岳王诗一首云:“臣飞死,臣俊喜,臣浚无言世忠靡,臣桧夜报四太子,臣构称臣自此始。”寥寥数语,用笔严冷之至。

《说文》:堪,天道也;舆,地道也。今混称堪舆为地理。《尸子》注妇女曰“姑”,儿童曰“息”。今混称姑息曰溺爱。《礼记》疏有才能曰“奚”,无才能曰“奴”。今混称奚奴曰家人。《说文》:贪财曰“饕”,贪食曰“餮”。今混称饕餮曰口馋。《尔雅翼》:妻父曰“婚”,婿父曰“姻”。今混称婚姻曰亲串。诸如此类,不可胜记。

骟马宦牛,羯羊阉猪,镦鸡善狗净猫,皆阉也。见《臞仙肘后经》。马曰,亦曰犗。见《说文》。

读书:渊明读书不求甚解,是涵养性情事。孔明读书略观大义,是讲求经济事。冥心躁气者不得借口。

男子下体曰阳具,曰人道,夫人知之也。亦曰马藏,见《三昧经》。亦曰烛营,见《淮南子·精神训》。亦曰余窍,见《列子·仲尼篇》。亦曰秽穴,见《列子·仲尼篇注》。亦曰势峰,见《瑜珈师地论》。亦曰睾丸,见《素问经》。

<<<

其中一则对[[李渔|闲情偶寄]]的点评,对其颇多微词:

<<<
李笠翁十二种曲,举世盛传,余谓其科诨谑浪,纯乎市井,风雅之气,埽地已尽。偶阅董阆白《莼乡赘笔》载,笠翁之为人,性龌龊,善逢迎,常挟小妓三四人,遇贵游子弟,便令隔帘度曲,捧觞行酒,并纵谈房术,诱赚重价。盖其人轻薄,原于天性,发为文章,无足怪也。
<<<


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
洞庭山出茶叶.名碧萝春.余寓苏久.数有以馈者.然佳者亦不易得.屠君石巨居山中.以隐梅庵图属题.饷一小瓶.色味香俱清绝.余携至诂经精舍.汲西湖水.瀹碧萝春.叹曰.穷措大口福.被此折尽矣. — 俞樾 《春在堂随笔》
<<<

“穷措大口福.被此折尽矣。”道出多少无奈。平日粗茶淡饭,最难捱是对记忆中美味的回忆,折煞人也。正如,世间最痛苦的不是绝望,而是尚存的希望。奥斯·卡王尔德“好国王是唯一对现代民主政治构成威胁的敌人。”

<$transclude mode="block" tiddler=booklogsinfo/>


<<<
天授中.则天好改新字.又多忌讳.有幽州人寻如意上封云.國字中或.或乱天象.请囗中安武以镇之.则天大喜.下制即依.月馀.有上封者云.武退在囗中.与囚字无异.不祥之甚.则天愕然.遽追制改令中为八方字.后孝和即位.果幽则天于上阳宫. --- 张鷟《朝野佥载》卷一
<<<

又遇到一个“成谶”故事(前两则见下������关联)。武则天喜改字,乱施淫威。有个叫寻如意奏称:“‘国(國)’字中间一个‘或’字,大不吉利,好像暗示新国家或者会出事。不如将‘或’字换成‘武’字,改‘國’为‘口+武’,一看便知是武姓的国家。”武则天大喜,下令照改。没几个月,又有人上奏称:“‘武’字放在囗中,就像在坐牢,太不吉利了。”武则天大惊,忙下令将“‘口+武’”再改为“圀”,意思是八方全都归于一统。

一字成谶。后来唐中宗复辟,武则天果然被囚禁在上阳宫,一直到死。

中国的汉字承载着太多的历史,就说这个“国”字,“國”字从囗从口从戈,代表土地、人民、武装,乃是立国三要素。
武则天改过。后来的天王洪秀全也改过,将“国”囗里的“或”改成“王”。到新中国成立,人民当家做主了,不便称王,又在“王”旁加一点成了国。“玉”比“或”少三笔,算是简化。

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
英公尝言.我年十二三为无赖贼.逢人则杀.十四五为难当贼.有所不快者.无不杀之.十七八为好贼.上阵乃杀人.年二十便为天下大将.用兵以救人死. --- 刘餗《隋唐嘉话》上卷
<<<

英公,即李勣,原名徐世勣,字懋功,唐朝开国元勋,封英国公。“瓦岗寨”中的徐茂公便是他,当过李世民的总司令(行军大总管)和副首相(开府仪同三司同中书门下)。历史上像李勣这样敢于自黑,敢于承认自己曾经是流氓无赖的人基本上没有。李勣可谓真英雄本色!

钟叔河老先生说,李勣的历史,正是中国“农民起义”的四个阶段:先为流氓、后为团伙 --- 也可能是“黑社会”、稍成气候了就揭竿而起并讲点纪律、等有了规模就开始立大旗颁口号讲主义了。这么说,道符合某党的历史,不过某党算不得英雄,敢做不敢当,敢做也不让说,真不如不如“瓦岗寨”一草莽也!

<$transclude mode="block" tiddler=bookkeywords/>
<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201912]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="description"/> //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>


<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201901]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201902]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201903]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="relation"/> <$view field="created" format="date" template="YYYY年0MM月0DD日"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201904]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="description"/> //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201905]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="description"/> //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>


<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201906]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="description"/> //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>


<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201907]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="description"/> //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>


<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201908]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="description"/> //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>


<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^201909]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="description"/> //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>


<<tabs "[[2019年12月日志]] [[2019年11月日志]] [[2019年10月日志]] [[2019年9月日志]] [[2019年8月日志]] [[2019年7月日志]] [[2019年6月日志]] [[2019年5月日志]] [[2019年4月日志]] [[2019年3月日志]] [[2019年2月日志]] [[2019年1月日志]] [[2019读书目录]]"default:"Most Recent Journal" class:"tc-vertical">>   
"""
2020年1月1日 提前安排
1. 《[[芬尼根的守灵夜]]》
2. 《[[一生的读书计划]]》
3. 《[[小黑书第三辑]]》

2020年1月2日 腊八
4. 《[[书淫艳已录]]》

2020年1月5日
5. 《[[细胞生命的礼赞]]》
6. 《[[西西弗神话]]》

2020年1月10日
7. 《[[人间食粮]]》
8.《[[如何阅读世界经典]]》

2020年1月13日
9.《[[历代碑铭]]》

2020年1月17日
10.《[[蚂蚁的社会]]》

2020年1月19日
11.《[[比利牛斯山的城堡]]》

2020年1月22日  //COVID-19//
12.《[[枭雄与士林]]》

2020年1月24日  //COVID-19//
13.《[[大自然的猎人]]》

2020年1月26日  //COVID-19//
14.《[[鼠疫]]》

2020年1月28日  //COVID-19//
15.《[[病毒星球]]》

2020年1月30日  //COVID-19//
16.《[[病毒来袭]]》

2020年2月5日  //COVID-19//
17.《[[理性的边界]]》

2020年2月10日  //COVID-19//
18.《[[卡拉马佐夫兄弟]]》

2020年2月14日  //COVID-19//
19.《[[查理·芒格的原则]]》

2020年2月16日  //COVID-19//
20.《[[知识的错觉]]》

2020年2月18日  //COVID-19//
21.《[[客观知识]]》
22.《[[庆余年]]》(听书)

2020年2月21日  //COVID-19//
23.《[[思想的力量]]》

2020年2月23日  //COVID-19//
24.《[[世界因何美妙而优雅地运行]]》

2020年2月28日  //COVID-19//
25.《[[香农传]]》

2020年3月5日  //COVID-19//
26.《[[人人都在说谎]]》

2020年3月15日  //COVID-19//
27.《[[随机漫步的傻瓜]]》

2020年3月22日  //COVID-19//
28.《[[女士品茶]]》

2020年4月2日  //COVID-19//
29.《[[智慧与魔咒]]》(英语学习)

2020年4月7日  //COVID-19//
30.《[[简单统计学]]》

2020年4月10日  //COVID-19//
31.《[[从一到无穷大]]》

2020年4月12日  //COVID-19//
32.《[[见字如来]]》

2020年4月14日  //COVID-19//
33.《[[孤身绝壁]]》

2020年4月16日  //COVID-19//
34.《[[那些让你更聪明的科学新概念]]》

2020年4月20日  //COVID-19//
35.《[[私人藏书:序言集]]》

2020年4月25日  //COVID-19//
36.《[[理查德·费曼传]]》

2020年4月30日  //COVID-19//
37.《[[当我谈跑步时我谈些什么]]》

2020年5月2日  //COVID-19//
38.《[[箭术与禅心]]》

2020年5月7日  //COVID-19//
39.《[[道金斯传]]》

2020年5月9日  //COVID-19//
40.《[[人类思维如何与互联网共同进化]]》

2020年5月12日  //COVID-19//
41.《[[10堂极简概率课]]》

2020年5月18日  //COVID-19//
42.《[[人类思维中最致命的错误]]》

2020年5月25日  //COVID-19//
43.《[[独自之旅]]》

2020年5月31日  //COVID-19//
44.《[[遗言图书馆]]》

2020年6月10日  //COVID-19//
45.《[[人间山河]]》

2020年6月16日  //COVID-19//
46.《[[顾颉刚读书笔记]]》

2020年7月1日  //COVID-19//
47.《[[哪些科学观点必须去死]]》

2020年7月5日  //COVID-19//
48.《单读 06-逃离·归来》

2020年7月10日  //COVID-19//
49.《[[赤裸裸的统计学]]》

2020年7月15日  //COVID-19//
50.《[[蜜蜂的民主]]》

2020年7月22日  //COVID-19//
51.《[[天才的编辑]]》

2020年7月28日  //COVID-19//
52.《[[维特根斯坦传]]》

2020年8月5日  //COVID-19//
53.《[[巨人的工具]]》

2020年8月11日  //COVID-19//
~~54.《[[造物记]]》~~

2020年8月15日  //COVID-19//
55.《[[我怎样读书]]》

2020年8月25日  //COVID-19//
56.《[[冷峻的良心:奥威尔传]]》

2020年9月5日  //COVID-19//
57.《[[人体的秘密]]》

2020年9月15日  //COVID-19//
58.《[[荣格自传]]》

2020年9月20日  //COVID-19//
59.《[[道金斯传]]》

2020年9月25日  //COVID-19//
60.《[[顾准历史笔记]]》

2020年9月29日  //COVID-19//
61.《[[心智]]》

2020年10月3日  //COVID-19//
62.《[[思维]]》

2020年10月4日  //COVID-19//
63.《[[长乐路]]》

2020年10月6日  //COVID-19//
64.《[[聪明的投资者]]》
65.《[[西湖二集]]》

2020年10月8日  //COVID-19//
66.《[[直觉泵和其他思考工具]]》

2020年10月20日  //COVID-19//
67.《[[模型思维]]》
68.《[[思维的发现]]》

2020年10月20日  //COVID-19//
69.《[[书读完了]]》

2020年10月29日  //COVID-19//
70.《[[我独自穿越沙漠]]》

2020年11月1日  //COVID-19//
71.《[[麻省理工深度思考法]]》

2020年11月7日  //COVID-19//
72.《[[我是个怪圈]]》

2020年11月13日  //COVID-19//
73.《[[非对称风险]]》

2020年11月16日  //COVID-19//
74.《[[异类心理学]]》

2020年11月25日  //COVID-19//
75.《[[文字的力量]]》

2020年11月26日  //COVID-19//
76.《[[齐泽克的笑话]]》

2020年12月5日  //COVID-19//
77.《[[插花地册子]]》

2020年12月8日  //COVID-19//
78.《[[弹性]]》
79.《[[醉汉的脚步]]》

2020年12月13日  //COVID-19//
80.《[[与小泽征尔共度的午后音乐时光]]》

2020年12月15日  //COVID-19//
81.《[[绝境]]》

2020年12月22日  //COVID-19//
82.《[[最好的告别]]》

2020年12月24日  //COVID-19//
83.《[[自深深处]]》
84.《[[如果在冬夜,一个旅人]]》//(重读)//


"""



--

[[正读]] | [[想读]] | [[2021读书目录]]  | [[2019读书目录]] |  [[2018读书目录]] | [[2017读书目录]] | [[2016读书目录]] | [[图书检索|Book List]] | [[读书日志|Reading Logs]] |[[Λ-Reading]]

//注: 标 @@color:green;^^★^^ @@符号的为推荐阅读书目//

<$button message="tm-close-tiddler">Close Me!</$button>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
故老能言五代时事者云.冯相道和相凝同在中书.一日.和问冯曰.公靴新买.其直几何.冯举左足示和曰.九百.和性褊急.遽回顾小吏云.吾靴何得用一千八百.因诟责久之.冯徐举其右足曰.此亦九百.于是烘堂大笑.时谓宰相如此.何以镇服百僚. --- 欧阳修《归田录》卷一
<<<

冯道,历来被文人所不齿,其处世箴言《[[荣枯鉴]]》亦遭贬斥。然冯道在乱世安身不立命又有何罪之有?另,其还是对中国文化作出了一些贡献,如校印“监本九经”即是其一。欧阳修《归田录》中此小文也可见冯道颇具幽默感,或许在乱世有点幽默感亦是他应付时局的一种方法。

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

"""
无道人之短,无说己之长。
施人慎勿念,受施慎勿忘。
世誉不足慕,唯仁为纪纲。
隐心而后动,谤议庸何伤?
无使名过实,守愚圣所臧。
在涅贵不淄,暖暖内含光。
柔弱生之徒,老氏诫刚强。
行行鄙夫志,悠悠故难量。
慎言节饮食,知足胜不祥。
行之苟有恒,久久自芬芳。

"""


上文是东汉文学家、书法家[[崔瑗|https://zh.wikipedia.org/wiki/%E5%B4%94%E7%91%97]]写的座右铭。崔瑗年少时抱负宏远、励志好学,然凭意气用事,鲁莽草率。他的哥哥崔章被人杀死,他为了给哥哥报仇,屠了对方全家,亡命天涯。后来幸逢朝廷大赦,方才回归故里。由于悔恨不已,痛定思痛,他就写下这一篇座右铭。这篇座右铭对后世颇有影响,白居易亦多次提及,在《白氏文集‧卷二十二》中有这样对句子,“崔子玉座右铭,余窃慕之,虽未能尽行,常书屋壁。然其间似有未尽者,因续为座右铭云。”并为其作《续座右铭》。

读历史,读的是人性。历史事件千千万万,个中人性都一样。翻开二十四史,无不充斥着阴谋、权谋和争斗。人性的善和恶有时候并无清晰的界限,大善为圣,大恶有时候也为圣,杀一人为恶,杀一万人可能是圣。有历史记载到现在,人性只有演变而无进化,演变出了多样性,进化的结果并无高低和优劣。回头看崔瑗这位老兄,世事经历了方知曾经的对错,椎骨刺字,刻石为铭,儆戒前嫌。这也是事物的发展规律,经过了才知道,事前诸般礼仪道德我想并不是没有,而是充耳不闻,视而不见。人类的悲哀即如此。兆亿人中,能学然后笃志力行严以律己之人视为圣人。这也就是历史为什么总是螺旋徘徊式前进,因为人性如此。



<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

去年春节期间看了黑塞的《[[悉达多]]》和《[[荒原狼]]》,这是第一次接触黑塞,被其文字的哲学意味所吸引。年末又看了他的《[[如何阅读世界经典]]》和《[[园圃之乐]]》,对黑塞有了更多的认识。

黑塞是一位读书家 --- 我也是第一次从他身上知道这个词,从小便博览群书,尤以德国中世纪著作为最。“我读过好几万本书,其中读过两三遍的为数也不少。当中还有几本是一读再读的”,平均下来,黑塞每年要读上百本书,终其一生这么读下去,实乃读书家!读的书多了,黑塞对人类书籍如数家珍,这也是《[[如何阅读世界经典]]》这本书的核心内容,书中黑塞给读者开了长长的书单(见此书的附录),从中世纪到现代,从西方到东风,无所不包。黑塞对东方文学颇为青睐,也深受其影响,尤对中国和印度的哲学思想尤为熟稔。《[[悉达多]]》这本书就是黑塞重新结构了印度佛教诞生写就。

《[[如何阅读世界经典]]》,原名是《读书随感》,其中除了黑塞开出的书单,也给出了应该怎么读世界经典。

<<<
读者阅读世界文学,最重要的就是能够先认识自己,进而认识对自己有特别作用的作品。无需依循任何模式或纲要,我们读书必须走爱之路,而非义务之路,如果只因某书非常著名,不认识它是一种羞耻,而勉强自己去读,实[[]]在是大错特错,所有的人都应该从最适合自己的地方开始阅读、认知,并且愉悦自己。
<<<

<<<
没有爱的阅读、没有尊重的知识、没有心的教养是戕伤精神的最大罪恶之一。真正的教养并非是为某些目的而努力以赴的教养,它与一切以完美为目标的奋斗一样,本身即具有意义。
<<<

因爱而读,没有什么目的,这才是读书的意义。


<<<
年轻人往往认为舍朝气蓬勃的生活而沉湎书本,是可笑而且没有价值的事,这类的年轻人为数甚多。他们认为人生太短暂,太可贵,因此不能耗费在书本上。他们往往一星期六次泡在咖啡馆的音乐或舞会中,浪费了许多光阴。现实世界的大学、工作场所、交易所与娱乐场所,也许极为灵动而富有生气,可是,终日停留在这些地方,难道比每日为古圣先贤、文士诗人留下一两小时,更接近真实的人生吗?的确,''过分耽读有害无益。书本有时也会与生活做不纯的竞争'',但我仍然劝告人们应献身于书籍。
<<<

“过分耽读有害无益"。我想黑塞想说的是那种死读书的书呆子吧。过分把生命耗在读书本身,终究失去了读书的意义,读书之于生命,如人类增加了一对翅膀,让生命更加精彩,看的高远。黑塞说“书本有时也会与生活做不纯的竞争”,和毛姆说的“[[阅读是一座随身携带的避难所]]”是一物两面,现实与理想的落差,书本里理想的世界和现实永远是有差距的,这就是读书的痛苦。前日读《[[念楼学短]]》也看到此类感叹:不识字,更快活也。

<<<
梅询为翰林学士.一日书诏颇多.属思甚苦.操觚巡阶而行.忽见一老卒卧于日中.欠伸甚适.梅忽叹曰.畅哉.徐问曰.汝识字乎.曰.不识字.梅曰.更快活也. --- 谢肇淛《五杂组》卷之十六
<<<

莫非真的是“人生识字忧患始”?

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

中国历史上性意识最奔放的时期莫过于晚明了。《明清社会性爱风气》这本书给出的原因,一是经济的繁荣;二是[[程朱理学]]的衰微和阳明心学的流行。

<<<
一个年代较长的王朝其性爱风气通常是复杂多变的,明代表现得尤为典型。大约在正统至成化年间,经济的恢复和财富的积聚使社会上逸乐风气开始抬头,兼之以阳明心学的流行,士界思想受到极大震动,长期被压抑的欲望终于从沉闷中挣脱出来,造成了晚明社会上人欲横流的局面。士人嗜谈情性,以纵情逸乐为风流,所谓“一日受千金不为贪,一夜御十女不为淫"(李贽语)。社会上狭邪小说泛滥,春宫画、亵玩品及春药公开在市面上流行,青楼妓院一片兴隆,出现了一批领时代风骚的名妓。不少显贵巨贾更自置家乐,养一班歌儿舞女,日日沉酣其中。在这个时期,人欲受到极大的肯定,任何性形式都得到宽容甚至纵。
<<<

《明清社会性爱风气》这本书更像是一篇论文,先讲了一通明清正统性爱观和节烈风气,然后从几个方面论证了晚明到清社会纵欲主义:正统思想程朱理学的动摇、男性同性恋的兴起、女子缠足的流行和金莲崇拜、异装癖风气等。作者写这本书还是下了一番功夫的,不仅遍历了明清香艳小说,还引用不少家训和明清文人笔记。题材虽好,可惜写的不如《[[好色的哈姆莱特]]》有趣。

书中关于明清缠足一节的论述比较有意思。缠足的女人估计现世尚存的已经不多了,但缠足确戕害了女人几百年。据学者考据,缠足始于北宋末年,发展与南宋,流行于元代,一直延续到明清,终结于民国。作者把明清缠足风气纳入性范畴考据也有其道理的,正如作者所说,“因为它并不是一般的生活习惯,它的产生、维持以及人们对它的狂热都是因为与性爱精密地联系在一起。”从这个角度来看,当代社会女人疯狂参与的减肥风尚是否也可以纳入性学范畴来解释?缠足除了是当时男性审美方面考量之外,也是男性共同参与的一场“阴谋” --- 限制和约束女人减少外界接触从而减少出轨的风险。缠足满足了男性的畸形审美,却给当事人身体带来极大的摧残和畸变,也给当时的社会生产带来不少影响。之前看印度电影的时候,我曾经无数次的想起一个问题:为什么印度人们热衷于唱歌和舞蹈,而中华民族却没有这个传统?当然除了印度还有周边一些国家或民族,如蒙古族等。限制看到女人的缠足的历史,终于揭开了这个谜:''缠足习俗的风行,导致了中国古代曾经十分辉煌的舞蹈艺术在明清时 期的毁灭 。 ''


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
晋平公<<footnote "❶"晋平公,晋国君主,前五五七年至前五三二年在位。">>问于师旷<<footnote "❷"师旷,春秋时晋国的乐师,盲人。">>
曰.吾年七十.欲学恐已暮矣.师旷曰.何不炳烛乎.平公曰.安有为人臣而戏其君乎.师旷曰.盲臣安敢戏其君乎.臣闻之.''少而好学.如日出之阳.壮而好学.如日中之光.老而好学.如炳烛之明''.炳烛之明.孰与昧行乎.公曰.善哉. --- 刘向《说苑·建本》
<<<

学习是件终生事。这句话非常政治正确,但是我时常会抱怀疑的态度:已经土埋到脖子了,学习的意义又是什么那?如果为了快乐,可!如果目的是修身齐家治国平天下,扯!可能是我的境界不高吧,或者还没有到了一定的年纪。

乐师旷用日出、日中和炳烛分别比喻少年、中年和老年,道出了学习与人生的意义。后世的张潮<<footnote "❸"清代的文学家。">>也说过类似的话:“''少年读书,如隙中窥月;中年读书,如庭中望月;老年读书,如台上玩月''。皆以阅历之浅深,为所得之浅深耳。”<<footnote "解释"见此:[[2019年08月05日周一下午04:33:50]]">>,用观月阐明了读书的人生不同阶段。






<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
车胤囊萤读书.孙康映雪读书.一日.康往拜胤.不遇.问何往.门者曰.出外捉萤火虫去了.已而胤答拜康.见康闲立庭中.问何不读书.康曰.我看今日这天.不像个下雪的.  --- 浮白主人《[[笑林|笑林广记]]》
<<<

“囊萤映雪”是历来读书人传为佳话的读书励志故事。《晋书·车胤传》载:

<<<
(车胤)家贫不常得油,夏月则练囊盛数十萤火以照书,以夜继日焉……以寒素博学,知名于世。
<<<

《尚友录》载:

<<<
(孙康)少好学,家贫无油,于冬月尝映雪读书……后官御史大夫。
<<<

《笑林》拿这两位开了许多读书人的玩笑。这些人白天去捉萤火虫,到夜里再来用功,或者没有下雪就不能读书。这岂不是荒唐。这种现象其实是蛮普遍的,我也有之。例如,没有好的读书设备就不想读 --- 不是在 kindle 上就懒得打开电脑读 PDF 文件;没有好的环境就不想读,非要到图书馆和咖啡馆,等等不一而足。这种现象和“囊萤映雪”的两位老兄没什么实质区别。欧阳修的“三上”读书习惯,道是一个榜样:“余平生所作文章,多在三上,乃马上、枕上、厕上也。”(见《三上》)

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
姚姬(姚鼐)传乞终养归里.濒行时.翁覃溪(翁方纲)学士来乞言.公曰.''诸君皆欲读人间未见书.某则愿读人间所常见书耳''. --- 易宗夔《新世说》卷一
<<<

如同[[上篇|2020年02月05日周三下午02:52:15]],这又是一篇关于读书的记载,涉及读书阶段性选择问题。

姚鼐所在的清朝,读书人读书选择范围并不多 --- 集中在四书五经,姚鼐则所说的读“常见书”,就是只读这类儒家公认经典,即精读经典。而其他读书人想读一些“人间未见书”,如杂学、释老等,这些行为在当时皆被视为异端。精读和泛读这两种读书方法在当下看来并无臧否,重点在上面阶段。

精读经典,是阅读的基础;广博泛读,是拓宽视野,是拔高。

<$transclude mode="block" tiddler=bookkeywords/>
!This is an encrypted Tiddler
越是有闲的时候,越是懒得写东西。在心理学上这是一种什么表征现象?
春节+疫情这个长长的假期,读书比之前多了不少,却懒得动笔。去年春节假期看的书尚有许多未整理,期间经常想起此未竟之事,也几次与自己进行了和解:未必本本必录,权作已阅立此存照,未来如有关联性阅读再做不迟。就这样放过了自己。这许多年的习惯经不起一个懒字摧残。何以见得?而那些短小文言文的读后感,是所有读书笔记中写的最勤快而多的,如《[[念楼学短]]》吧,是所有[[已读]]中收录笔记条目最多的。此足以彰显,懒字了得,用丹尼尔·卡尼曼《[[思考快与慢]]》中的话说,这是系统 2 在作祟 --- 因为系统 2 的启动和运行需要消耗身体许多能量,所以人类进化出了懒 --- 能不启用系统 2 就不启用,以此保存身体的能量。

经此一疫,人人自危,八仙过海,各显神通。在当今人类文明的高度,此疫与历史上诸多大型疫灾相比,可能不算什么 --- 也许此话言之过早。不过再进一步假设,如此疫是一场全面战争的话,社会会怎么样?我又会怎么样?

人类自私性的第一反应是如何自保。自保,在不同的环境下有不同的方式,在欧美一些社会福利国家,可能是担心物质短缺而屯粮,在中国那?尤其是在当下政治高压而人们刚步入衣暖食足尚无余粮的情况下怎么办?而非屯粮,是为存续问题了。

存续,先存而有后续。

存续,这是一个大问题。之所以说大问题,乃存须有量,尚可待续。因为在当下社会环境下,自己才是自己的救世主,什么皇帝老子都是靠不住的。此一疫只有个把月,已经震得社会七零八落、九散十荒,如若再严重些,一定是鬼神出没,夜叉横行,人鬼泾渭。如此乱世,存量是唯一的保障。所以这个量之于一般百姓就是一个大问题:怎么才能用人生最短的时间把量存上去?

在社会资源占有不均衡的情况下 --- 拥有一定的社会资源可迅速变换为存量,作为资源边缘人,唯有一个好的杠杆,并找到一个支点,可迅速撬起优势资源,让资源重新分配,并拥为己有。这个杠杆就是自己,自己的能量(学识和智慧),当然还有其它,这也是经常提起的:什么样的人容易成功,唯有占有资源者、胆大者和具有智慧者。占有资源者即权贵,胆大者即投机者和暴徒,此二者对一般人皆无缘。所以,这个撬动大存量的杠杆就只有是自己的智慧。支点那?支点对不同人不一而足,通论来说,投资是一个最优的支点。为什么是投资?因为投资是浑水摸鱼,轻规则而重智慧,成本低速度快。这里说的投资,是金融性投资,如股票、期货等。

如是想法,春节前在脑中已有星火,最近看到诸多社会现实,更有燎原之势,加之最近几年一直关注或者研究认知科学领域,更坚定了这种想法。如此以来,接下来需要疯狂的对投资领域下注的时候了。

温水里的青蛙,尚有可救。火热汤沸之时,为时晚矣。

立此存照。
<$transclude mode="block" tiddler=booklogsinfo/>

今天在Twitter上看慕容雪村与网友就信仰问题辩论,源之慕对一推的回应,[[原推|https://twitter.com/xhuan11/status/1234789896499421184]]:

<<<
爲無神論者的辯詞,合乎邏輯因而雄辯:
“那種匪夷所思的指責,尤其是在美國和伊斯蘭世界針對無神論者的,說他們崇拜撒旦。無神論者自然不信神,無論善惡。撒旦,衹有信教的人信。“—Richard Dawkins, 1941,英動物學家、進化生物學家和科普作家
<<<
慕的[[回应|https://twitter.com/hawking197428/status/1235095507086659585]]:

<<<
诺贝尔物理奖得主Steven Weinberg:宗教是对人类尊严的羞辱。无论有沒有宗教信仰,好人都做好事,坏人都做坏事。但如果要让好人去做坏事,那就用得上宗教了。 
<<<

另一推优对慕的[[回应|https://twitter.com/Tudou522525/status/1235112750310805504]]:

<<<
物理学家评论宗教跟兽医给人看病更荒谬。有一个简单数据,人类75亿人口,基督教33%,穆斯林22%、印度教17%,佛教8%,犹太教0.3%,其他一些地方宗教约10%,剩下的无神论大约有10%左右,这10%主要集中在中国。有宗教之群体更坏还是无宗教之群体更坏?
<<<

信仰之于中国人付之阙如,特别是近代中国。我也没有什么宗教信仰,所以讨宗教论信仰属于看客视角,因为你无法感受他人信仰的内心和力量。

信仰的辩论本质上可以分为两部分,一是神及神性的存在问题,二是信仰的作用。

神是否存在?这是一个存在主义性问题,也是一个辩论陷进:存在和不存在都无法进行举证。那么人们为何走进宗教的殿堂那?

用莱兹·帕斯卡的理念来解释,是一种实用性功利主义。莱兹·帕斯卡(Blaise Pascal)于1661年或1662年,在他的《思想录》(Pensées)一书中提出被后人誉为“''帕斯卡赌注''”的理念,即在面临理性和科学都无法给出明确答案时,我们是否还要相信上帝:

<<<
你必须赌上一把。这别无选择。你已经上了贼船了。你还能选哪一个呢?……你会失去两样东西:真与善;拿这两样东西去下注:你的理性和你的意志,你的知识和你的幸福;你在本性上想回避两件事:错误和痛苦。你的理智不会因为顾此失彼而受到冲击,因为你别无选择。这一点是确定无误的。但你的幸福呢?让我们赌一把,如果上帝存在的话,我们的得失会是怎样的情况。如果你赢了,你将获得一切;如果你输了,你也毫发无损。所以,别再犹豫了,就赌上帝存在吧。
<<<

信仰的作用核心问题是:信仰是积极的还是消极的?我还是没有任何感同身受性经验可以描述和判断。从历史事实的记录来看,似乎是二分法:好坏参半。

宗教信仰神圣的价值观标示着社会的道德边界,这似乎是神在引领信众走向和谐而积极的一面。而历史上人类孜孜不倦地寻求着英雄般的杀戮和阵亡,但这并非是为了要延续他们自己的生命或是他们认识的人的生命,而又是为了某个构成他们自我的信念,神又显示出了狭隘和消极的一面。除此,宗教信仰在历史上一直与权利或者意识形态为伍。

宗教和意识形态的崛起取决于丹麦哲学家克尔凯郭尔(Kierkegaard)所认定的这种“''荒谬的权力''”,比如亚伯拉罕为了表明将自己交付给一位无形无名之神的决心,甘愿杀死自己最心爱的儿子。因杀子献祭之举,亚伯拉罕成了世界上最伟大的文化英雄,而不是被视为虐童者、谋杀犯或是疯子。人类最强烈的社会关系和行为,包括合作、宽恕和对杀戮的容忍度,源于一种人类对“不可言喻”的行为原因和过程的责任感,即从根本上缺乏对一致性的逻辑判断和对代价与结果的经验评估。对于一项神圣事业,你越是有着物质层面上令人费解的奉献和承诺(换言之,就是越发荒谬),越是笃信神圣事业的存在,这种笃信就会制造出越多的片面责任感。克尔凯郭尔这段关于“''荒谬的权力''”的论述,可以解释宗教的私生子 --- 邪教 --- 何以能够存在。

信仰的外衣,即世界观,也是世纪问题,上百年来人类喋喋不休的讨论着这些问题,灵魂是否存在?超自然现象如何解释?把信仰的外延继续拉伸,诸如有没有缘分这回事?意识又是什么?有没有第六感或心灵感应?这些问题不仅折磨着哲学家的大脑,也在科学家的脑袋中翻江倒海,文学家也不甘愿袖手旁观,在一旁揶揄的笑着。春节期间看的《[[苏菲的世界]]》作者乔斯坦·贾德的另一本哲理小说《[[比利牛斯山的城堡]]》,此书从头至尾是一对情人对这些“大问题”的讨论,最终以死谢幕。

人类一思考,上帝便笑了!

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

股市跌停熔断,期货自杀式断崖,中小企业岌岌可危,失业潮蜂拥而来。

世界因疫而废,变得黯淡、衰弱和不安。

没有谁可以给出一个截止时间,人们躲在一个个躯壳里苟且偷生,就像藏在防空洞躲避没有方向的子弹。你不知道谁应该为此负责,更不知道该向谁问罪。生命活着的本能驱使着每个个体回归原始,为自己,为家人,为了身边的人。活着这一空洞的生物行为在超越生命的意义上显得弥足珍贵, 体面的活着已经被降格,超越人生命本身的追求和意义似乎是一部分人的事情,对芸芸众生来说,需要的是畅快的呼吸,是第二天醒来不为昨日欠下的购买明日愿景的债务而发愁 --- 那是房贷、房租和信用卡还款。生命之外的东西变为生命之重,生命之累。生命的脆弱不是生命本身的羸弱,而是生命的附属品过于繁重,包括有形的和无形的,羁绊着生命的舒展和绽放。可是谁又能逃离这个生命的怪圈,置身世外那?这也是这个世界在小小的病毒面前之所以变得如此的脆弱和不堪一击,因为人类生命之外的附属品天下大同 --- 诸如财富、奢华、享乐和梦想,这些超越生命本体之外的东西是海市蜃楼,如梦幻泡影如露亦如电。在生命本身受到危险的时候,大厦将倾,幻想将灭,泡影将破,一切将回到生命的本身。

历史即人类悲哀档案和人类生命悖论的文本证明。

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

文字的虚弱不足以表达生命个体的意识和情绪,肢体表达受到所谓文明和文化的束缚,沉默便为一种情绪,这是人类表达的黑洞,也是人类自身表达符号的悖论和不足。“不再沉默中死亡便在沉默着爆发”,这是表达的两极,都是一种毁灭性表达,人类的终极表达。沉默,即无言,死亡的表征;爆发,即激烈性表达,对恐惧的挑战,生命的歇斯底里。人类最大的恐惧是对死的恐惧,其它一切恐惧都是死亡家族的表亲,如黑暗、饥饿和伤残。爆发是对死亡的挑衅,生命最后的挣扎,是对超越生命玄机之门的最后一跃。越过去了,死亡便成为了俘虏,人才真正主宰了生命,了解了生命的真谛所在 --- 应该是一种无从言说和表达的体会,即心无挂碍;无挂碍故,无有恐怖,远离颠倒梦想,究竟涅槃。越不过去,便成为死亡的俘虏,黑暗的奴仆,恐怖成为王者,主宰着生命。然而大多数的我们,并没有那么幸运成王成寇,而是沦落并游荡在沉默和爆发之间,像一颗空气中漂浮的尘埃,沉浮无依,身不由己,只有在强烈光束的照耀下方可一显尘埃本色:灰头灰脸,随机跌跌撞撞。这光束中显现的大多数便是社会,随机、无序而又时隐时现,无可名状,无可预期,亦无永恒,光束一灭,终究尘归尘土归土。

沉默和爆发的调和即平和和安乐,这是生命的最佳状态,是生命绽放的春天,是生命梦想的天堂状态。然则,沉默和爆发,生命和死亡,自然和欲望,他们作为生命个体的组成部分总是在对抗和冲突,撕扯和扭打,即便同归于尽也甭想一方占着上风,即便把生命糟蹋的体无完肤也不会休战言和,最终生命总是遍体鳞伤,苟延而残喘,最后在一声叹息中尘又归尘。


<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

小站域名Rizi.me,虽说初衷为了写读书日志,亦可理解为日子。

然,日子怎么过?

随着生命旅程终点可预知而不可避免的迫近,这个问题越来越多的浮现在脑中。日子怎么过?换句话说,怎么利用剩下的生命时光?过去的已不再重要,未来亦不可期。不,对大多数人而言,未来仍是可以描述的,裹挟在时代的洪流下,终究尘归尘土归土,泥沙俱下,消失在黑暗的死亡的汪洋。这就显得“日子怎么过”这个问题多么的重要,而非“日子应该怎么过” 。日子没有普世的规范,所以没有应该,一切日子的底版是你的过往,未来只是昨日的延续、过往的影像、梦想的倒影。但要想从大多数中脱离,从时代的狂潮中冲出,从泥沙俱下中沉淀,从黑暗的死亡的汪洋中驾一叶便舟,洗刷过往的底版,颠倒过往的影像,这个问题显得如此的重要而又刻不容缓。

人真是一个悲哀的生物(好像[[这两天我尽如此感叹|2020年03月10日周二上午01:51:34]]),在和煦的春天很少人想起严寒的冬天,在惬意时很少人能唤起心中的悲悯,只有在暴风雨中才勾起对早上撒进屋窗的阳光的眷恋,只有在病入膏肓的榻上才会对生命恒常的向往,只有在看见死神时刻才有对人生之旅的大彻大悟、醍醐灌顶。李开复在他的死亡笔记《[[向死而生]]》中写道:当癌症突然降临,面对人生旅程只剩下100天的时候,什么才是人生最珍贵的?人的一生该怎么样渡过?人生的意义是什么?李开复可谓天之骄子,吾辈弗如,然经历过两次人类大疫情,第一次非典时期尚无知,[[此时肺炎大爆发面前|2020年03月09日周一下午09:46:18]]做如此意识算是后知后觉了。

日子到底怎么过?

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

这个世界会好起来吗?

当然,我指的是中国,外面的世界只是意识延伸的地方,不可谓不重要,但没有当下既视感和即时感。脚下这块土地的每一次颤动无不影响着心脏的跳动和血脉的膨胀,因为你扎根于斯,长于斯。所以你希望它好,希望它可以在暴风雨来临时守护你,在严寒凛冬时温暖你,在受伤时可以有个小小的洞穴里舔舐伤口,在高兴时可以登山望远高歌尽放,在寂寞的夜晚可以推窗看那宿醉街头的浪子和长街昏暗灯光下夜归人长长而孤独的背影。你希望它好,希望免于真诚表达的恐惧,免于兔死狗烹的悲哀,免于莫须有的囹圄,免于无时不刻被窥视的羞辱,免于卑微而又怯懦的苟且,免于长夜独行不会被小鬼当道的骚扰和恐吓。

可是,它会好起来吗?

这两日关于“吹骚人”文章的网络屠杀事件,使你不得不对再次对此进行深思。“它会好起来吗?”它之前一直是不好的,几年前我苦心经营的一个公众号就牺牲在莫须有的屠杀之中,从此我再无兴趣涉足公共传播雷池。时过几年,网络一日千里,这一切没有任何进步,改变的只有手段的变本加厉和态度的傲慢轻佻,以及方式的毫不遮掩。当一个人公开耍流氓的时候,它已经不是流氓了,它是撒旦,是流氓的缔造者。病毒尚有进化原则 --- 不做自杀式的扩展毁灭宿主,然则它比病毒有过子而无不及 --- 公然挑衅作为宿主的大众,这样的发展趋势会好起来吗?

有人说,每一次流氓的暴施,就给骆驼身上多增加一颗稻草。事实如此,但代价高昂。换句话说,是拿一个个个体的卑微、恐惧和不安的灵魂,去掩埋撒旦;用一个个勇者自杀式的白骨,去羁绊撒旦的步伐;用一颗颗草芥的星火,燎原地狱之火。这是何等漫长的牺牲和巨大的代价啊。

不然,又能怎么样那?

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

"To live is to think." - Marcus Tullius Cicero

”I think, therefore I am.“ - Descartes

古罗马政治家西塞罗的“活着就是思考”,和笛卡尔的“我思故我在“,都强调生命意识的重要性。意识在二位老兄眼里是个超生命体的存在,是个体存在的价值判断和唯一识别性。

意识是什么?

在我提出这个问题的时候,我思考了两分钟,我不想用所谓的科学定义来解释,而是企图用自己的语言来阐述它。我想,这个思考的过程即意识的瞬间。我想继续用一个直接明了的比喻来说明。意识,像窗台上的花向着太阳光的方向生长,是一种化学反应;像含羞草被人轻触似的扭捏,是一种电流;像一对热恋中的情人的拥抱,是一种感官;像身处险境中的警惕,像一种内在声音。思考至此,似乎我对意识有了一种清晰的概念。意识,首先是有方向性的(作用力),再者是有对象的,是个体自我和个体与外部的感知得反应。''简而言之,意识是个体感知的反应。''

在《[[比利牛斯山的城堡]]》中,那对喋喋不休的情人为”意识“也不少废口舌。”当火车疾驰穿越烟雨蒙蒙的乡间景致时,坐在黄颜色车厢内的我对窗外的一切感同身受。我随即问我自己:什么是意识?什么是记忆与沉思?什么叫“记住”某些东西,或者“忘记”某些东西?像这样“坐在这里思考”意味着什么,思考“何谓思考”又意味着什么?而尤其重要的问题是:意识是否为宇宙中的巧合?这个宇宙是否可以归功于不折不扣的巧合,才在此时此刻有了能够体认到“自我”和“自我发展”的意识?或者说,“意识”反而正是这个宇宙的根本特质?“

最后一句话值得深思:意识是不是宇宙的根本特质?

权且把意识的范围缩小 --- 我脑力不足以思考宇宙的特质,把意识的问题放在人类世界这个框架中来思考:意识是不是人类世界的特质?这个方向,在这个框架下对意识的结构是我最初提笔写这篇小文的初衷。

如果继续对意识进行结构,意识是人形而上感官的集合,包括了痛苦、快乐、幸福、悲伤、忧愁、忧郁和愉悦等。用还原论的手术刀对意识解刨,意识之于生命,是其重要的存在,是一种客观的存在,抛开意识的生命个体似乎是不存在的,而非不完整的。如果就此深究下去,人的快乐和幸福、悲伤和忧愁,皆取决于个体的意识 --- 自我意识和外在意识。如此说来,快乐似乎非常简单,一念之间皆为快乐,只要阻断对外界感知的反应皆可成就安乐!这里存在一个先决性条件(先觉性条件),即假设已有意识,意识已被唤醒。意识的唤醒和阻断成了快乐与否的关键。我想这就是信仰的力量,这就是信仰的认知性阐述。

认清了意识的本质和内涵,那么意识的本源是什么?这可能又把更大的命题牵涉进来了,也就是世界的发展是否是有意识性的进行?即俗话说的”天经地义“。有天经地义之事吗?没有!宇宙中并无与生俱来的意向、目标和本质,也就是没有“天经地义”的先验条件。宏观上来看,宇宙间之所以开始形成了生命,一切都只不过是出于纯粹的意外,恒星与行星乃宇宙大爆炸的必然结果之一;大爆炸之后另外出现的生命与意识,则仅仅来自不折不扣的巧合,是一个巨大的偶发事件,一种宇宙中的异常状态。生命和意识只不过代表着纯粹的随机和偶然,是自然界无关宏旨的一面。微观层面,我们再次拿起还原论的手术刀解刨世间万物,万物组成粒子无不遵循着布朗运动 --- 永不停息地做着无规则运动。意识作为对自我或外界的反应,纯粹的自我和外界万物皆是无意识和随机的,意识自然也是随机和无序的自然状态 --- 这里用自然状态相容是最恰当不过了。如果说意识存在意志 --- 有点拗口,如果说大自然存在意志,那么这个世界必有神性的存在,有一只看不见的手在颐指气使,可惜这是不可证伪的假设。

[[接下篇|2020年03月16日周一下午06:07:29]]

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

[[接上篇|2020年03月14日周六上午01:10:35]]。

“未经反思自省的人生没有意义” --- 苏格拉底

意识是个体感知的反应。意识是随机和无序的,且无意志。

内在经验和外界与个体的通讯机制,我称之为意识的唤醒。意识的唤醒是一件常态,就像Marcus Tullius Cicero所言:"To live is to think." 是生命的表征,否则则被称为“植物性”,如把失去感官意识的人称之为植物人 --- 事实上这种称呼是不对的,植物也有其感官神经,只是与人类的表达方式不一样而已。有些意识的唤醒,是一件危险的行为,伴随着副作用。唤醒意识的边际越大,副作用越大;事实和内在意识落差越大,副作用越大。这或许是宗教运作的玄机。

《[[西西弗神话]]》中那个执拗的推石上山的西西弗就是一个意识唤醒中的悲剧人物,加缪称其为荒诞。

> 至于西西弗,只见他凭紧绷的身躯竭尽全力举起巨石,推滚巨石,支撑巨石沿坡向上滚,一次又一次重复攀登;又见他脸部绷紧,面颊贴紧石头,一肩顶住,承受着布满黏土的庞然大物;一腿蹲稳,在石下垫撑;双臂把巨石抱得满满当当的,沾满泥土的两手呈现出十足的人性稳健。这种努力,在空间上没有顶,在时间上没有底,久而久之,目的终于达到了。但西西弗眼睁睁望着石头在瞬间滚到山下,又得重新推上山巅。于是他再次下到平原。

西西弗在意识被唤醒之前艰辛而日复一日的做着这一件事情:推石上山。此时的西西弗的内在意识是激情的、由热恋此岸乡土而心甘情愿的。然而这不过是诸神对西西弗的戏弄备了。推石上山这一行为是荒谬的、徒劳的、无结果的。

> 西西弗是荒诞英雄。既出于他的激情,也出于他的困苦。他对诸神的蔑视,对死亡的憎恨,对生命的热爱,使他吃尽苦头,苦得无法形容,因此竭尽全身解数却落个一事无成。

加缪感兴趣的也是西西弗的意识唤醒。

> 我感兴趣的,正是在回程时稍事休息的西西弗。如此贴近石头的一张苦脸,本身已经是石头了。我注意到此公再次下山时,迈着沉重而均匀的步伐,走向他不知尽头的苦海。这个时辰就像一次呼吸,恰如他的不幸肯定会再来,此时此刻便是觉醒的时刻。他离开山顶的每个瞬息,他渐渐潜入诸神洞穴的每分每秒,都超越了自己的命运。他比所推的石头更坚强。

最终西西弗的觉醒时刻并没有到来,西西弗并没有转身,他一如既往的再次往山顶推着石头。这无限的磨难,加缪称之为生命的超越。难道生命的本质即苦难?

> 当今的工人一辈子天天做同样的活计,其命运不失为荒诞。但他只有在意识到荒诞的极少时刻,命运才是悲壮的。西西弗,这个诸神的无产者,无能为力却叛逆反抗,认识到自己苦海无边的生存状况,下山时,思考的正是这种状况。洞察力既造成他的烦忧,同时又耗蚀他的胜利。心存蔑视没有征服不了的命运。

意识的觉醒是痛苦而悲壮的,不觉醒是荒谬而无意义的。

人生诸如犹如西西弗,在荒谬和悲壮中消耗生命直到死亡,内在的倔强和蔑视并不能改变什么,超越生命只是一种神话叙述,因为生命本身并无意义,何谈超越。

如是,人为什么活着?

人,为活着而活着,因为活着即对诸神和死亡的超越。

> 我让西西弗留在山下,让世人永远看得见他的负荷!然而西西弗却以否认诸神和推举岩石这一至高无上的忠诚来诲人警世。他也判定一切皆善。他觉得这个从此没有救世主的世界既非不毛之地,抑非渺不足道。那岩石的每个细粒,那黑暗笼罩的大山每道矿物的光芒,都成了他一人世界的组成部分。攀登山顶的拼搏本身足以充实一颗人心。应当想像西西弗是幸福的。

那么,我们应该想象:活着是幸福的!

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

[[继续意识这个话题|2020年03月16日周一下午06:07:29]]。

意识是个体感知的反应。意识是随机和无序的,且无意志。意识是有属性的。

意识作为形而上的非物质的存在,决定了其不可避免的的存在矛盾的可能性。物质世界不允许存在矛盾,一头牛就是一头牛,不存在即是一头牛又是一只羊的现象。所以,意识的属性是理性和矛盾(或荒谬)的,也可以说意识的理性荒谬的矛盾体。

意识的矛盾和荒谬性是由认知的边界造成的。尽管人类自认为是生物界中高等级的,具有丰富的神经元而生成意识和思维,是地球之主。然而人类以今为止就连自己的脑构造和运行机制也没有完全弄清楚,更别说一些未知的生物 ---- 如病毒,以及地球之外的生物了。此类认知的边际,可以称之为知识的边界。还有一些认知谬误,例如直觉的错误、视觉误差等属于人体构造导致的,当然这不可能称之为进化的缺陷 --- 进化之手不可能即给你一对健壮的腿还给你一双飞翔的翅膀。丹尼尔·卡尼曼在《[[思考快与慢]]》中,把直觉意识称之为人体运行的懒惰性 --- 能不消耗身体能力就尽量不去消耗,这样解释无 可厚非,我把它归入运行机制类,就像认知的谬误和知识的错觉(见《[[知识的错觉]]》)。认知的边界和谬误是普遍存在的现象,在《[[理性的边界]]》中,美国科学家诺桑·亚诺夫斯基罗列了诸多类型的认知的局限性,诸如:人类自相矛盾的语言和思维、计算机的短板、人类描述世界的局限、数学的困惑等。虽然作者企图说明的是人类理性的局限性,事实是强调人类认识机制的不完美。

对于如何解决意识自身的缺陷和不完美,上面提到的两位科学家都给出了自己的答案。丹尼尔抛出了思维系统 2 的概念 --- 思维系统 1 是被动的,系统 2 是主动的,意识过程中积极的调用思维系统 2,从而避免一些直觉错误,例如经验主义错误等。亚诺夫斯基给出的答案是:理性,虽然理性是有边际的,然而理性是人类以今为止解决意识问题的最佳途径。然而二位老兄皆没有给出一个可操作性的解决方案,以便有效的避免认识的缺陷,提高认知能力。我从查理·芒格身上(见《[[查理·芒格的原则]]》)确获得了不少启发,这是[[思维框架|Thought Framework]]的重要性。

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

不管人间如何处在紧张和不安的情绪中,时光如一位睥睨的看客,永远作着她自己的事情,毫不留情的带走光阴,留下岁月的皱纹、白发和四序轮回。

春天又如期而至。

阳光已经可以透过面南的窗把大半个房间塞满,窗台上旧岁的吊兰、地不容已经抽出新芽,肥嫩油绿,贪婪地迎接着阳光,急不可耐的想抛弃冬日残留着的枯枝败叶和灰头灰脸的妆容。窗外春光和煦,人迹寥寥。人们似乎已经习惯了自我隔离,尽管今天是周末,依然躲在家里,鲜有出来看一看那已经绽放的玉兰和朵朵鹅黄色的迎春花。

如此春天,岂不可惜。

此时的我多想拥有一方小院,准确的说是一个园圃,好让我亲手留下春天,种下早春的蔬菜、花卉和水果,期许一个浓阴匝地的夏天和满目丰盈的秋天。[[毛姆把我书籍当做避难|阅读是一座随身携带的避难所]]所,我比他贪婪一些,我既想要书籍,也想拥有一方园圃。我可以在我亲手培植的生命旁像毛姆一样读书,像黑塞一样每天早上在园圃里忙碌,也有可能像梭罗一样遁世生活在《[[瓦尔登湖]]》畔每日观察自然和采摘《[[野果]]》。当然,黑塞也是一样在园圃读书、写字,他还画画。那么我更接近黑塞。

> 我有一个园子,一个简朴的提契诺园子,种了葡萄、蔬菜和一些花木,夏天我都在园里待上半天,生一个小火堆,跪在园畦里除草,聆听从山谷中传上来的村里的钟声,在这片淳朴的乡村小天地里感受永恒和真情,犹如我在阅读诗人或哲学家时所体会的。  -- 黑塞《园圃之乐》

也许只有流浪和颠沛流离的人才向往一小卞园圃,就像杰克·伦敦《[[白牙]]》中那只受伤的狼 --- 当然黑塞也是一只狼,它是《[[荒原狼]]》,需要一个安静的洞穴以便躲避外界的不安和深夜舔舐伤口,游子可以在小卞园圃安放惶恐的灵魂和寻找孤独的慰藉。深受浪漫主义浸润的黑塞,彷徨、漂泊、孤独、对回归乡村回归自然的渴望等是他作品的基调。何谓漂泊?漂泊是因为心灵找不到归宿,找不到精神家园,于是走出家园,到外部世界去寻找心灵的故乡。但漂泊并非“想逃避苦难。它是对故乡的渴念,对母亲记忆的渴念,是对生活新状况的希冀”,最终漂泊仍然“引导你回家。每条路都通往家中”。 

黑塞热爱大自然,厌倦都市文明,一生都在追求“还乡”的终极答案。这何尝不是我的梦想,纷扰缭乱无所慰藉的都市生活已经让我早已厌倦,每次看着街上行色匆匆的行人和车水马龙的景象都让我对生命意义进行质疑。对自然和乡土的眷恋之情,是对生命质疑的回响,最原始而质朴的生命回归。

> 只要不下雨,这几天我整天都在薅草。这对我现在健康状况不佳的身体来说却像是持续获得的鸦片,能有一天半日为我长效镇痛。我在菜园除草,完全没有物质的推动力,也没抱大的指望,因为整个菜园的工作不知花费了我几百小时,而收获的总共也只有三四篮子蔬菜而已。不过这项劳动却有着某种宗教的意味:跪在地上专心薅草,就像人们举行庄严的祭祀仪式,只是为祭祀而祭祀,且要不断重复,因为清除了三四畦杂草之后,第一菜畦上又长出青草来了。  -- 黑塞《园圃之乐》

同泥土和植物打交道,就类似沉思冥想,能使灵魂得到放松和安宁。神经质的卢梭也是一位自然主义者,回归自然不仅治愈了卢梭的被迫害妄想症,也成就了他在植物学领域占有一起之地,留下了著名的植物科普著作《[[植物学通信]]》。卢梭将自然视作人的原始故乡,呼吁“顺乎自然”,“回归自然”。他认为人类创造的物质财富和精神文明压抑了人的发展,人的贪婪和欲望使人逐渐背离了自然、朴质和美好的本性。所以卢梭把她的小说《[[爱弥儿]]》主人公置于大自然之中,让他在劳动和实践中增长才干,努力将他培养成具有自由、平等、博爱思想,具有民主意识的新人。歌德也继承了卢梭的自然主义,他的《[[少年维特的烦恼]]》的主人公维特对自然有着特殊的敏感,他的人生体验和大自然互相交织,融为一体,称自己是自然的儿子和朋友。

鸟儿在窗外啁啾,我在窗内蜩螗。

何处是我的一方园圃乐土?

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

之前我曾经不止一次的强调,一个人获取知识的途径有三条:读书、旅行和结交比自己厉害的人。简单的说,知识来源与文本、实践和经验。如果进一步分类,即文本和实践,文本只是经验的载体。无可厚非,读书是最经济和便捷的获取知识的途径,但不是最有效的,最有效的途径是实践,在实践中体悟和创造知识,这样的知识是深刻而新鲜的。所以,我经常会把读书和读书人推下神坛,“唯有读书高”只是一种市侩思想,而推崇那些身体力行者。

读书所获取的知识或经验,是一种死知识,而世界运行的方式充满变数。假如有这么一个世界运行公式是E=mc^^u^^,m 是读书所获得知识的常数,c 是环境变量,u 是你自己的思维模式,我想要获得最终 E 的值,不是取决于m,起决定因素的还是c^^u^^。在环境变量下,什么样的思维模式就会得出什么样的结果。读书,重点不是获取的知识、经验或技巧,而是掌握认知世界的方式,从而形成自己的[[思维框架|Thought Framework]],让 u 能识别出环境变量下起决定作用的数值,也即是让c^^u^^更加接近真相,更接近事物的本质。

认知世界方式的思维框架简单而又复杂。就像爱因斯坦的E=mc²公式,之所以为优雅,因为它以最简单方式揭示了一个深邃而复杂的道理。思维框架之所以简单,是因为思维的主题和对象是人,总是遵循着生物进化的原则 --- 达尔文的自然进化论也是简单、优雅而深邃的。而思维框架的复杂性,皆是一些虚拟事物,例如经济、政治和金融等,在面对这些千变万化的虚拟事物之时,变量层出不穷,总是难以捕捉到真相和实质。

续:[[2020年03月26日周四下午11:08:20]]

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

1981年成立的一个名为“现实俱乐部”(Reality Club,1997年更名为Edge)每年都会就一些“大问题”就行讨论,并推出一本年度合集。其中一季[[Edge|https://www.edge.org/discourse/about.html]]年度问题为:你最心仪的那个深邃、美妙而优雅的科学理论是什么?

“现实俱乐部”俱乐部座右铭:


<<<
“要抵达世界知识的边界,就要寻找最复杂、最聪明的头脑,把他们关在同一个房间里,让他们互相讨论各自不解的问题。”
<<<


下面就就其中比较有趣而迷人的理论作简要整理:

* 史蒂芬·平克:复杂的生命是自然选择的产物,而这一切都由复制基因之间的竞争所驱动。(著作:《[[语言本能]]》《[[思想本质]]》《[[心智探奇]]》)

* 苏珊·布莱克莫尔:唯有达尔文的自然选择学说可以解释万物,无可匹敌。自然选择学说的核心看上去是一种重言式(永真式)逻辑。打个比方,当你说“活物是活的”或“成功的想法便是成功”这些话时,就相当于什么都没说。要想把这些重言式的阐述转化为足以擎天撼地的力量,你必须在一个设限的世界里追根溯源。

* 马特·里德利:生命是一组数字代码(DNA)。

* 理查德·道金斯(《[[自私的基因]]》作者):冗余度压缩和模式识别。信息论的创始人克劳德·香农(Claude Shannon)提出,“冗余度”(redundancy)是一种信息的倒置。在英语里,紧随“q”这个字母的往往是“u”,于是在不丢失信息的情况下,字母“u”完全可以被省略掉。“u”就可以被称为是冗余的。时间“t”这一点上的世界,与时间“t-1”这一点上的世界并无多大差别。因此,对感官系统而言,没必要对世界的状态进行持续不断的反馈。它们需要的仅仅是“变化”的信号,这种变化能够让大脑处于一种假定状态中,即假定没有被反馈的事物依旧保持着原来的状态。通过挖掘世界的时间序列中的非随机性,感官适应获得了巨大的经济效能。

* 斯科特·阿特兰:超然的力量。英国哲学家霍布斯(Hobbes)在其著作《利维坦》(Leviathan)中所写的:“超然是荒谬所拥有的特权,在超然的世界里,除了人类,其他一切生物都不是主体。”人类孜孜不倦地寻求着英雄般的杀戮和阵亡,但这并非是为了要延续他们自己的生命或是他们认识的人的生命,而是为了某个构成他们自我的信念,即“我们是谁”这样的信念。宗教和意识形态的崛起取决于丹麦哲学家克尔凯郭尔(Kierkegaard)所认定的这种“荒谬的权力”。人类最强烈的社会关系和行为,包括合作、宽恕和对杀戮的容忍度,源于一种人类对“不可言喻”的行为原因和过程的责任感,即从根本上缺乏对一致性的逻辑判断和对代价与结果的经验评估。进化论如是教诲:人类是充满激情的生物,而其理性本身的目标是社会的胜利和政治的信仰,而非寻求哲理或科学方面的真理。

* 卡尔罗·罗威利:达尔文的自然选择学说。

* 维多利亚·施托登:概率性世界。随机性通过概率的分布,直接构建到我们对自然理解的非直观洞悉当中。

* 概率性世界:心灵暗物质(THE DARK OF THE MIND)-“无意识,心灵暗物质,即无意识,则具有最大的心灵重力。如果无视宇宙中的暗物质,就会出现异常现象,那么如果忽略心灵的暗物质,也就难以诠释人类的非理性。在弗洛伊德发现了“无意识”之前,人类一直在找寻自己感知方面的答案,但一直局限于知觉的意识这一层面。在解释矛盾的思想、情感和动机方面,人类一直受限于意识所能企及的层面。我知我所知,我想我所想。“无意识“假定了一个概念空间,这个空间被非理性所掌控,而且并没有呈现在我们的面前。

* 马丁·里斯:真实的宇宙可能比由空间和时间构建的传统意义上的宇宙要恢弘辽阔许多。

* 保罗·斯泰恩哈特:对称。

* 阿曼德·马里·勒卢瓦:普赖斯方程式。秩序是如何形成的?抽象的答案:每一个高度井然有序的现象都是变异选择过程的产物。

* 托马斯·梅青格尔:[[奥卡姆剃刀|不确定性和未知之美]]。它体现了精简的本体论原则:如无必要,勿增实体。《自然哲学的数学原理》(Principia Mathematica)中写道:“如果有能同时兼具真理性和充分性的理由来阐释自然事物,我们就理应予以接受。”牛顿视其为哲学推理的第一法则。

* 乔纳森·戈特沙尔:福莱-雷蒙德假设说。左撇子基因,或许在游戏般的对抗中而非在真枪实弹的战斗中,可以获得更高的生存几率。

* 戴维·迈尔斯(著有《[[社会心理学]]》)::群体互动易于扩大人们的初始倾向。主张的隔离+交谈=两极分化。恐怖主义就是一种群体极化的表现。作为一个单独个体的个人行为,事实上恐怖主义从来不会突然而至。相反,恐怖主义分子的热血贲张往往起因于人们所共同分享的悲伤。

* 格尔德·吉仁泽:视错觉和无意识推论。感知需要一种被称为“无意识推论”的聪明抉择。从视网膜和其他感觉器官获得的信息,不足以重构世界。判断物体的尺寸大小、距离远近和其他属性,还需要其他不确定的线索,这些线索,还需要经验的积累与学习。基于这些经验,大脑会进行无意识的推论来获知感知,从而获得对现实事物的解释。换句话说,感知是对真实情况的一种赌注。想要使无意识推论发挥作用,首要前提是拥有由长久意识积累而成的经验集合;次要前提则是当前的感官印象。事实上,没有视错觉人类有可能过得更糟糕,就像一个人一直缄默不语,以此来规避因说话犯下的任何错误一样。

//[[下接|2020年03月29日周日下午10:52:49]]//

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

[[上一小文中|2020年03月24日周二下午11:38:41]],我没有把思维框架的简单和复杂阐述清楚。今天继续这个话题。

思维框架的简单性,我把它纳入自然进化适者生存的大叙事背景下,这样许多生物现象 — 当然包括人类的许多生存之道和社会竞争 — 都可以解释清楚。思维框架的复杂性,我把它归咎为自然对象之外的抽象存在、虚拟的存在的复杂性。今天在看《[[随机漫步的傻瓜]]》,塔勒布的随机性观点也可以进一步补充说明思维框架的复杂性。

就生物进化论的普适性,塔勒布说:

> 平均而言,动物是有适应力,但不是每一只动物都能适应,而且不是时时都能适应。一只动物有可能因为它的样本路径很幸运而生存下来,同理,一个行业中“最好的”人才也有可能来自一群人才,他们能够生存,是因为过度适应某一样本路径—那条样本路径并未出现与进化有关的稀有事件。

这里塔勒布说的稀有事件指的是他著名的《[[黑天鹅]]》现象,即随机现象。

> 生命中的各种事情也根本不是以连续不断的方式变动。相信事情连续变化的观念,深植于我们的科学文化中,直到20世纪初。以前人们认为大自然不会跃进或骤变,拉丁文这么说:“自然不突变”(natura non facit saltus)。一般认为这句话是18世纪的植物学家林奈(Linnaeus)所说的,但他显然弄错了。

达尔文学说的适应性适用于在非常长的期间内发展的物种,而不是短期观察到的现象 —— 时间累积消除了随机性的大部分效应;就像人们所说的,长期而言,事事(噪声)相互抵消而取得均衡。但不能回避进化过程随机性的存在。随机现象的形貌改变,例如发生体制转换(regime switches)时,情况可能变得更叫人惊讶。体制转换相当于一系统的所有属性都改变,面貌不复可辨。

> 动物学家发现,一旦把随机性注入一个体系之中,结果往往令人惊讶:原来看似属于进化的东西,其实可能只是转向,或者可能是退化。比方说,古尔德(Steven Jay Gould)发现,有许多的证据显示,确实有他所说的“基因噪声”或“负突变”(negative mutations)。

> 负突变是指虽然从繁殖适应性的观点来看,新的特质变得比所取代的特质还差,却还是能够生存下去,但不能期望它们维持好几代以上,即所谓的临时聚集。

这些生命事物的随机性是造成认清事物发展复杂性的主要原因,这也充分支撑了我所说的<<a: 思维框架>>复杂性理论。

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>
"""
[[接上|2020年03月26日周四上午12:18:23]]

李奥纳特·苏士侃:熵永远不会衰减。
安东·蔡林格:爱因斯坦的光子学,光是由能量子组成的。
乔治·戴森:“密度为零”和“质量无限”。
迈克斯·泰格马克:我们的宇宙曾如婴儿一般生长。
弗里曼·戴森:相克相生。
萨特雅吉特·达斯:不精确性/不确定性。海森堡所观察到的:“因果定律意指,如果我们知道现在,就可以预见未来。但在这个定律中,并非是结果错了,而是前提有误。究其原则,我们无法获知现在所有的决定性要素。”海森堡的不确定性原理意指,度量某个事物的行为将会改变该事物在我们心中的原有认知(绝对真理的缺失和人类知识的局限)。
基思·德夫林:语言和自然选择学说。
珍妮弗·雅凯:自私,以牙还牙是最佳的进化策略。([[囚徒困境]]Prisoner'sDilemma)。成为赢家的策略是以牙还牙,这是一种“根据对方反应来决定自己做法”的假定策略,在此策略中,玩家们首先要建立合作,随后与伙伴亦步亦趋。
克莱·舍基:文化是人类种群中关于认知与交流的沉淀。思想在文化中的流动与基因在物种中的流动呈现出相似的模式,即群体内具有高流动性,而群体间的流动性则大幅减少。对此,道金斯的解释是假设存在一种文化的基因,即模因(Meme)。同时,他还清晰地提出了问题:就遗传物质来说,完美的复制是不足为奇的,而突变却相当罕见。对文化来说,则截然相反。所有的文化传播都可以简化为两种类型中的一种:要么是心理表征公众化,要么是公众表征内化到意识层面。正如丹·斯珀伯所言:“文化是人类种群中关于认知与交流的沉淀。”
雨果·梅西耶:元表征学阐释人类独特性。
尼古拉斯·汉弗莱:心智理论。
维拉亚纳尔·拉马钱德兰:DNA结构的理论。
大卫·伊格曼:神经系统重叠的解决方案。
马扎林·贝纳基:有限理性的思想。该思想认为,与其他物种相比,人类是有智慧的,但从人类自身的标准来看,包括遵循理性基本守则的行为,则不够聪明。有限理性是目前一项经过精心雕琢、有着深邃实践基础的观察结果。
罗伯特·萨波尔斯基:群体智能(自组织性)。
斯图尔特·布兰德:适应度景观。
保罗·萨夫:板块构造论。
"""
[[下接|2020年04月02日周四下午04:59:57]]:

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

[[上接|2020年03月29日周日下午10:52:49]]

"""
丹尼尔·丹尼特(著有《[[意识的解释]]》(Consciousness Explained)《[[直觉泵和其他思考工具]]》):海龟迁徙的秘密,横跨数百万年的惊天动地的力量。有一些种类的海龟,它们在非洲西海岸交配后,会一路跨越南大西洋,最后在南美洲东岸产卵。它们这样做的原因是当初有这样的行为的时候,冈瓦那大陆才开始分开,这应该是在1亿3千万年至1亿1千万年前,当时这些海龟仅仅需要游过狭窄的海峡,便可以产卵了。之后因为大陆板块移动,它们每一年会多游一点,或许就一英寸左右,但有谁会注意到这小小的差异呢?这些距离差逐年累加,最终,这些海龟现在要跨越整个大洋来产卵,没有人知道它们为什么会有如此惊天动地之举。

卡尔·齐默(著有《[[病毒星球]]》):地球年龄之谜。
戴维·巴斯:性冲突理论。在一男一女的生殖利益发生分歧时,或更为精准些,当他们的基因“利益”发生分歧时,性冲突也随之产生。性冲突理论,一个现代进化遗传学的逻辑结论,为人类性活动的阴暗面,呈现了最美妙的理论诠释。

戴维·皮萨罗:贾雷德·戴蒙德(Jared Diamond)在其科普名著《[[枪炮、病菌和钢铁]]》(Guns,Germs, and Steel)所给出的解释:为什么某些社群战胜了其他社群而获得了历史统治?他通过求助于物理环境中的一组基本差异来解答这个问题,这些差异通过社群展现在人们眼前,比如在适合植物和动物可驯化方面的差异。这些差异导致产生某些特定优势,譬如对疾病有更强的免疫力,这直接使得某些社群取得了历史上的成功。

霍华德·加德纳:论个体的重要性。人类学家玛格丽特·米德(Margaret Mead)那句著名的箴言:“永远不要质疑一群有思想且坚定的公民,他们会改变这个世界。事实上,这种事一直都在发生。”

安德里安·克雷耶:世界与环境。根据雅各布·冯·于克斯屈尔的定义,世界是指主观环境,由一个生物体感知并发生作用;而环境是指客观环境,环绕并影响着所有生物体。

拉斐尔·鲍索:达尔文的自然选择学说和量子理论。
迪米特尔·萨塞洛夫:参照系的作用,即作为一个观察者的意义究竟是什么。欧拉坐标+朗日坐标。
塔尼亚·伦布罗佐:现实主义、他人心智、因果关系。它们通过求助于少数的核心原理,将千奇百怪的现象统一起来。
海伦·费雪:表观遗传学。
塞利安·萨姆纳:“内含适应性理论”。个体之间会协助合作的原因在于,这提升了他们彼此的适应性,即提高了将自己的基因传递给下一代的机率。
海伦娜·克罗宁:达尔文–波普尔的思想。
保罗·布卢姆:万物如此,皆因其本。”这句格言出自生物学家与古典学家达西·汤普森(D'Arcy Thompson)。它优雅地总结了,汤普森力图阐释事物形状的方法。
约翰·麦克沃特:微生物理论。威廉·麦克尼尔(William ~McNeill~)在《[[瘟疫与人类]]》(Plagues and Peoples)一书中指出:“到目前为止,人类的智慧,都对寄生性微生物所引起的问题束手无策。那些隐形的敌人,在决定人类生物适应性方面,起着举足轻重的作用,尤其是在某些地方尤其如此。
克里斯蒂娜·芬恩:文化相对论。
郦安治:信息理论:信息学是不确定性的分辨率。只要能解决不确定性并将其传递,这就是信息的本质。(劳德·香农(ClaudeShannon))。编码和符号是解决两个沟通者是否对不确定性有相同理解的关键所在。香农的结论是,任何类型的信息都可被编码为一系列“是或否”的答案(0 和 1)。(参见《[[香农传]]》)

保罗·迈尔斯:万物如此,皆因其本。最为根本的阐释是这样一种思维模式:要了解某件事物是如何发挥作用的,你必须首先要知晓这件事物是如何发展至此的。

大卫·克里斯蒂安:涌现和涌现属性的思想。一切独特且崭新之物源自何处?这些新事物、新特性又是如何“涌现”出来的?最简单的还原论假设,这些问题的答案一定藏于其组成成分当中,即便找到这些特性非常困难。你能够在形成水分子的氢原子和氧原子中找寻到“水性”吗?这便是“涌现”看上去如此神奇与神秘的原因所在。

约翰·诺顿:克雷格·雷诺(Craig Reynold)于1987年首次提出的理论,他指出,鸟类群聚行为,可以通过每只鸟所遵循的3个简单规则来作阐释:分离(不与邻里簇拥一团)、列队看齐(向其邻近个体的平均方向移动)和集合(向其邻近个体的平均位置移动)。
"""
[[下接|2020年04月03日周五下午11:23:10]]

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

[[上接|2020年04月02日周四下午04:59:57]]

"""
巴里·史密斯:交叉知觉模式。
彼得·阿特金斯:热力学第二定律,以及所有的自然变化伴随着熵的增加这一事实。自然变化就是这个简单的过程,即向着失序的方向扩散。扩散可以产生秩序:通过向失序的方向扩展,使结构得以浮现。总而言之,随着社会的进步,失序也将随之增加,但局部结构,包括大教堂和大脑、恐龙和狗、罪恶、诗歌和谩骂,都能够在局部混乱衰减之时打造而成。

伊丽莎白·邓恩:感知到时间经济价值在增加,就可以感知到时间的稀缺性在增加。
丽莎·兰道尔:希格斯机制。
查尔斯·希莫尼:博斯科维克的原子力理论。
蒂莫·汉内:理查德·费曼于1979年在奥克兰大学所做的量子动力学演讲。
塞思·劳埃德:真实的空间旋转对称。空间的真实旋转对称性不是旋转360度,而是720度。
布鲁斯·胡德:傅立叶定律。

A.C.格雷林:伯特兰·罗素(Bertrand Russell)的摹状词理论。它指出,在语言的表面形式之下存在着逻辑结构。当这种逻辑结构显现出来时,我们就能够真正明白,我们的所言、所信以及所言与所信要满足何种条件时,才能辨别真假。

乔恩·克莱因伯格:鸽巢原理。假设一群鸽子栖息在一片树林中,鸽子的数目超过树木。当所有的鸽子落下来时,至少有一棵树上落了一只以上的鸽子。

查尔斯·塞费:鸽巢原理。在对文件进行压缩时,这其中就蕴含了鸽巢原理。假设有许多含有2000比特的鸽子(确切地说是22000),其数量远远超过了含有100比特(2100)的盒子的数量。如果演算法将前者塞进后者之中,起码有1个盒子里必须有多只鸽子才能完成。用那个含有100比特数据的盒子进行反向演算,把该档案扩大到原来的2000比特。这是根本做不到的。因为有多重的2000比特的数据被挤进同一个含有100比特的盒子中,演算法无法得知哪一个才是真正的原型,因为它无法进行反向的压缩过程。

布莱恩·伊诺:直觉的局限性。

西蒙娜·舒纳尔:心智通过具象化隐喻进行思考。具象化隐喻成为感知、认知和行动的基石。垂直性不仅影响人们判断什么是善良、道德和神圣,还影响人们沿着垂直维度的空间运动,改变他们的道德行为。商场里扶着自动扶梯上来的人,比起扶着电梯下来的人,更愿意到慈善捐款箱捐款。保持这种“上升”状态会让人们具有“更高”的道德价值。

本杰明·伯根:语言和心智的隐喻。它的优雅之处在于,用更简单的事物,即大脑中两个概念域之间的映射关系,对杂乱无序和复杂难懂的现象予以阐释。它的强大之处在于,它阐释的不仅是隐喻的语言。

罗德尼·布鲁克斯:摩尔定律。摩尔预测在未来10年,单一集成电路上的元件数目将从当时的约26个上升到216个,即元件的数量每年都将翻倍。是什么成就了摩尔定律的可行性?对此最为优雅的阐释,是关于抽象的数字逻辑。因为其所含的比特与“真值”和“假值”都是抽象的,而这样的抽象是独立于物理实体而存在的。摩尔定律适用于数字化技术,而不适用于需要物理力量,或物理实体,或必须提供含有一定能量的科技的原因。数字化科技需要运用物理原理来维持抽象,除此之外,别无其他。

约翰·马瑟:生成自然不稳定性的物理学基本定律,即能量流和混沌。自然定律生成的不稳定性:地球上遍布天然的化学实验室,元素在此集中混合,升高或降低温度,通过产生无数不稳定的事件,永不停息地进行着各项实验。其中就有一种被称为“生命”的新实验。伴随着在环境中广泛生存的生物、地球环境的变化、繁荣与萧条的循环往复、食物链上的环环相扣、每种罪行的罪犯、防止犯罪的政府以及政府自身的不稳定性,生命在不断地制造新的不稳定性和进行着永无止息的进化。

斯科特·桑普森:盖亚假说,该假说的内容是:地球上的物理与生物过程相互密切交织,从而形成了一个自我调节系统。
劳伦斯·史密斯:质量守恒定律和能量守恒定律。定律告诉我们,对于真实世界中的现象,即非量子、非广义相对论的现象而言,物质与能量从来不曾被创造或被摧毁。它们只能是被拖过来拽过去。
蒂姆·奥莱利:[[帕斯卡的赌注|2020年03月04日周三下午09:13:39]]。

阿巴斯·拉扎:约翰·梅纳德·史密斯(~JohnMaynard Smith)提出的概念进化稳定策略(ESS)。

叶夫根尼·莫罗佐夫:科林格里奇困境,即在了解某个特定科技带来的冲击后,其对社会、政治和创新轨迹所造成的影响之间,总是会有某种折中。当一项科技刚刚出现且并未普及开来时,可能会隐藏着意料之外或令人不悦的后果,要么我们一直作壁上观,静等后果出现,但可能会有失控的风险。科林格里奇说:“当改变轻而易举之时,我们无法预见对改变的需求;当改变的需求显而易见之时,改变已然变得昂贵、困难、耗时。”

西蒙·巴伦-科恩:“指长比例直接受到荷尔蒙的影响”。胎儿睾酮,这个特殊分子只要多一点点,就会对大脑和性格发展产生“雄性化”的影响。胎儿睾酮的替代品:食指和无名指的长度比,或称之为2D:4D比率。

//[[下接|2020年04月06日周一下午03:11:45]]//

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

[[接上|2020年04月03日周五下午11:23:10]]

"""
斯图尔特·皮莫:生物多样性。一组物种的平均地理范围远大于中值范围,有许多物种在小范围内生活,而在大范围内生活的物种则寥寥无几;热带地区物种比温带地区的物种更多;狭域种聚集的地方,一般不是数量最大物种的居住地;狭域种在其生活区域里分布极为稀少,广布种在同样区域中则很常见。

卡尔·萨巴格:自然存在的铀岩样本,通常含有两种类型铀原子:铀238和铀235两种同位素。大多数原子为铀238,但有0.7%为铀235。事实上,更为准确地说,这个数字是0.72%,但当样本抵达法国时,测到的数值“仅为”0.717%,这意味着,比预期的铀原子235少0.003%。

亚当·奥尔特:群体冷漠。社会心理学家所接受的教导是,我们要克服责怪他人犯下明显不良行为的自然倾向,而是要在环境中寻找答案。人的反应不像物体那样具有累加性,如两个人的效率则有可能比不上一个人的效率。当我们与其他同样犹豫的人,同处于相同的环境时,将我们和低等动物区分开来的思考模式,最终打消了我们出手相助的念头。

杰拉尔德·斯莫尔伯格:“说谎”的意识。意识是直接刺激与记忆的合成体,它包含了观察者与被观察者的瞬间感受,之后汇聚成为一股平稳的、封闭的时间流,它既不是真正的过往,也并非现在,但却莫名地二者兼具。意识是终极权威和感知现实的裁判。意识处理这个难以容忍状况的解决方案,就是从我们的意识流中排除掉时间间隔,并根据刚刚发生的影像推断出即将出现的影像,以此来替代那段影像空白。推论和外推法创造出视觉连续性的幻觉,揭示了我们大脑“软件”天生的漏洞,任何优秀的“黑客”都可以利用这些漏洞。

阿伦·安德森:“深度时空”。
李·斯莫林:惯性原理。
埃里克·坎德尔:认知疗法。很多精神疾病的核心焦点并不是潜意识的冲突,而是思考模式的扭曲。
迪伦·埃文斯:货币的起源。

道格拉斯·洛西科夫:“模拟物的先行”(precession of thesimulacra):在一个现实世界里,我们使用地图来描述这个世界,以及发生在这张地图上的所有活动,某些时候我们几乎很少关注这些活动应该在哪里出现。有这样的一个现实世界,也存在着这现实世界的表征,并且还存在虚拟现实(VR)的错误。

菲利普·津巴多:心理时间。大多数人呈现了有偏差的时空定向,也就是钟爱某种时间帧胜过其他,变得过于以过去、现在或未来为导向。”津巴多时间观念量表”(~ZimbardoTime Perspective Inventory, ZTPI)。

艾莉森·高普尼克:有两套不同的神经和功能系统相互作用,使孩子们逐渐转为成年人。由于两个系统之间的关系产生了变化,进而对处于青春期的孩子也有着深刻的影响。

史蒂芬·科斯林:巴甫洛夫的狗-条件反射。

纳西姆·尼古拉斯·塔勒布([[黑天鹅]]作者):毒物兴奋效应,是指有害物质或紧张性刺激在适当剂量或强度下刺激着生物体,并使生物体更好、更强、更健硕,还要为下一次承受更大的剂量做好准备。冗余和过度补充的逻辑是相同的,犹如大自然有个简洁、优雅且统一的做事风格一样。冗余是积极而非被动消极地面对人生。

迈克尔·诺顿:随机化实验(A/B 测试)。
尼尔·格申斐尔德:麦克斯韦方程式。
杰拉尔德·霍尔顿:科学与文化的非连续性。

罗伯特·库尔茨班:非预期效应的概念是指,当人们介入到包含很多移动组件的系统,尤其是生态学和经济学时,由于系统组件相互作用的复杂性,这个介入反而会产生超越预期的效应,还会产生许多未曾预见或不可预见的效应。

蒂莫西·威尔逊:自我认知理论。尔特·冯内古特(~KurtVonnegut)的忠告:“我们是我们假装的那个人,所以对于要假装成什么样的人,我们务必慎之又慎。”
塞缪尔·巴伦德斯:个性的差异会极大地受到偶发事件的影响。

//[[下接|2020年04月07日周二下午01:40:51]]//

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>
[[上接|2020年04月06日周一下午03:11:45]]

"""
贾雷德·戴蒙德:生物电的起源。(著有《[[枪炮、疾病与钢铁]]》《第三种黑猩猩》)
比阿特丽斯·戈洛姆:代谢综合征:毒性环境里的细胞能量适应性。

伊曼纽尔·德曼:“生命是向死亡讨来的借贷,而睡眠,不过是我们必须支付的利息。付的利息越高,越有规律,那么赎回的日期也就越长。”亚瑟·叔本华。

戴维·盖勒特:为什么所有的可数无穷大都是同样大小;没有任何计算机可以拥有心境。

鲁迪·拉克:[[逆幂律]]。逆幂律能够自我组织与自我维持。在大多数文件中,一个词的使用频率与它的普及排名名次成反比。出现频率位居第2的单词,其出现频率是频率最高单词的一半,而出现频率第10位的单词则是最高单词的1/10。逆幂律的分布是系统行为的基本自然法则。

塞缪尔·阿贝斯曼:反应扩散模型,其运行的方式为:假设有多种化学物质正在以不同的速率扩散,并彼此相互作用。在多数情况下,扩散只会使某一化学物质变得均匀一致,比如倒入咖啡里的奶油,其最终会扩散溶解为淡棕色的液体,其他多种化学物质的扩散和相互作用则会产生非均匀性。

斯坦尼斯拉斯·德阿纳:人类行为近似于最优化的统计学家,而我们的决策就相当于是现有证据的积累到某些临界值的过程。我们所有的由心智作出的决定看起来似乎是遵循着一个简单规则,比如布朗运动、贝叶斯定律以及图灵机。通过累加可用的统计证据,我们的大脑会在超过临界值时作出决定。贝叶斯定律可以用来合并所有单独的证据片段。让·巴蒂斯特·佩兰:“用无形的简单性取代可见的复杂性”。

安迪·克拉克:语言本身就是一种适应系统,它会改变其形式和结构,从而演变得更加容易从而方便主宰者(人类)学习。

尼古拉斯·卡尔:[[彼得原理]]。:“在等级制度下,每位雇员会提升到不能胜任的层级。”彼得原理是一根有许多倒刺的钩子。它不仅揭露出办公室里的傻子,也抓住了渴望成功的美国梦的核心:显示出如何达成集体平庸的机制。

迈克尔·舍默:[[经验主义]]的原理说,我们应该相信自己的眼睛所看到的,而不应信任其他的权威。经验主义是科学的基础,正如第一家科学机构伦敦皇家学会的座右铭所言:勿信他人之言。

//(完)//

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
 
翰林学士元文敏公明善.字复初.清河人.参议中书日.会朝廷遣蒙古大臣一员使交趾<<footnote "❶"越南当时是元朝的属国">>
公副之.将还.国之伪主赆以金.蒙古受之.公固辞.伪主曰.彼使臣已受矣.公独何为.公曰.彼所以受者.安小国之心.我所以不受者.全大国之体.伪主叹服.//---   陶宗仪《南村辍耕录》卷二//
<<<

“他未加拒绝,是为了看重国主的情面,使你们小国安心;我必须拒绝,是为了保持自己的操守,维护大国的体面。” 听了元明善这番话,国主不禁肃然起敬。

元明善真是智慧!

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

哈里·哈勒尔自称荒原狼,一只“迷了路来到我们城里,来到家畜群中的荒原狼”。哈勒尔年轻时曾想有所作为,做一番高尚而有永恒价值的事业,他富有正义感,具有人道主义思想。但是在现实生活中,他的理想破灭了。他反对互相残杀的战争,反对狭隘的民族沙文主义和军国主义,却招来一片诽谤与谩骂;他到处看到庸俗鄙陋之辈、追名逐利之徒,各党各派为私利而倾轧。他深感时代与世界、金钱与权力总是属于平庸而渺小的人,真正的人却一无所有。社会上道德沦丧、文化堕落,什么东西都发出一股腐朽的臭味。荒原狼与这个社会格格不入,在他看来,周围的一切都只不过是一场游戏。他感到非常痛苦孤独,他烦躁不安,无家可归,“啊,在我们的世界……要找到神灵的痕迹是多么困难啊!在这个世界,我没有一丝快乐,在这样的世界,我怎能不做一只荒原狼,一个潦倒的隐世者。”

哈里·哈勒尔就是黑塞作品《荒原狼》中的主人公,一个中年艺术家的精神危机。

<<<
在这些岁月中,我失去了职业,失去了家庭,失去了故乡,游离于所有社会集团之外,孑然一身,没有人爱我,却有许多人对我颇为猜疑,我时时与公众舆论、公共道德发生激烈冲突,纵然我依旧生活在市民圈中,然而我的感情和思想与他们格格不入,我在这个世界上始终是个陌生人。对我来说,宗教、祖国、家庭、国家都失去了价值,都跟我无关,科学、行会、艺术故弄玄虚,装模作样,使我感到厌恶;我是个颇有才气的人,一度被人喜爱,我的观点、我的爱好、我的整个思想曾一度放射出光芒。现在,所有这些都凋敝了,荒芜了,常常使人觉得可疑。纵然,我在这个痛苦的转变过程中也获得了某些模糊的、不可捉摸的东西,我却付出了昂贵的代价,我的生活变得愈加艰难困苦,愈加孤独,受到的危害更大了。说真的,我没有理由希望继续走这条路,这条路好像尼采的秋之歌中写的烟带,把我带进越来越稀薄的空气中。
<<<

黑塞生活的时代,正是资本主义正在过渡委帝国主义,各种社会矛盾进一步激化。那是“技术与金钱的时代,战争与贪欲的时代”,荒原狼与世格格不入。

<<<
我们今天的生活方式,中世纪的人会非常厌恶,会感到比残酷、可怕、野蛮还更难忍受!每个时代,每种文化,每个习俗,每项传统都有自己的风格,都各有温柔与严峻,甜美与残暴两个方面,各自都认为某些苦难是理所当然的事,各自都容忍某些恶习。只有在两个时代交替,两种文化、两种宗教交错的时期,生活才真正成了苦难,成了地狱。如果一个古希腊罗马人不得不在中世纪生活,那他就会痛苦地憋死;同样,一个野蛮人生活在文明时代,也肯定会窒息而死。历史上有这样的时期,整整一代人陷入截然不同的两个时代、两种生活方式之中,对他们来说,任何天然之理,任何道德,任何安全清白感都丧失殆尽。当然不是每个人都会这样强烈地感受到这一点。尼采这样的天才早在三十年前就不得不忍受今天的痛苦——他当时孤零零一个人忍受着苦痛而不被人理解,今天已有成千上万人在忍受这种苦痛。”
<<<

<<<
他们失去了安全感,不再感到清白无辜,他们的命运就是怀疑人生,把人生是否还有意义这个问题作为个人的痛苦和劫数加以体验。
<<<

然而他对这个世界又充满了爱和向往,准确的说是对他理想中那个世界的期冀。

<<<
他烟抽得很厉害,这也符合学者的特点,房间里总是烟雾缭绕的,到处是烟头和烟灰碟。不过很大一部分书不是学术著作,而是各个时代各个国家的文学作品。
<<<

他讨厌市民虚伪的生活,他离群独居,但他依然在读文学作品。一个潦倒中年遁世者,不是肥遁,是困遁。

<<<
我违心地穿上衣服,出门拜访一位教授,跟他互换或多或少是骗人的假殷勤,我想,大多数人也都像我一样,年复一年,日复一日地被迫违心做事,违心生活,违心行动,他们探亲访友,聊天交谈,到机关上班办公,做所有这些事情都是被迫的、机械的、不是心甘情愿的,这些事情也可以由机器做,也可以根本不做;正是这种永远运转不休的机械妨碍他们——如同妨碍我一样——批判地看待自己的生活,妨碍他们看清并感觉这种生活的愚蠢、浅薄、可疑、毫无希望的悲哀和空虚。噢,他们是对的,这些人完全正确,他们就这样生活,演戏,追名逐利,而不像我这种脱离正常轨道的人那样反抗那套使人愁闷的机械,绝望地凝视虚空。
<<<


<<<
这种温文尔雅、虚伪说谎的生活我再也忍受不了了。而另一方面,看来我也不再能忍受孤独的生活,我自己的社会也已变得无比可恨,令人作呕,我在我自己的真空地狱里透不过气来,手脚乱伸乱抓地挣扎。你看,哪里还有什么出路?没有出路了。噢,父亲,母亲,噢,我那遥远而圣洁的青春之火,噢,我生活中的万千欢乐、工作和目标!这一切的一切都荡然无存了,连悔恨也都无影无踪,留给我的只有厌恶和痛苦。我仿佛觉得,好赖必须活着这一点从来没有像这一个小时那样使我痛苦。
<<<


这种现实与理想世界的落差,是主人公痛苦的来源,为了表现这种不协调和落差张力,黑塞把主人公必做荒原狼 --- 准去的说是主人公自认为是一头生活在错位中的荒原狼,茫然中冲撞和徘徊,孤独中纵欲和啸叫,黯然中幻灭和升华。

<<<
一只迷了路来到我们城里,来到家畜群中的荒原狼——用这样的形象来概括他的特性是再恰当不过了,他胆怯孤独,粗野豪放,急躁不安,思念家乡,无家可归,这一切他全都暴露无遗。
<<<

<<<
这个世界的目的我不能苟同,在这个世界我没有一丝快乐,在这样的世界我怎能不做一只荒原狼,一个潦倒的隐世者!不管在剧场还是在影院,我都待不长,我几乎不能看报,也很少读现代书籍。我不能理解人们在拥挤不堪的火车和旅馆里,在顾客盈门、音乐声嘈杂吵闹的咖啡馆里,在繁华城市的小酒馆小戏院里寻找的究竟是什么乐趣;我不能理解人们在国际博览会,在节日游行中,在为渴望受教育的人作的报告中,在大体育场上寻找的究竟是什么乐趣。千百万人正在为得到这些乐趣而奔走钻营,我也可以得到这种乐趣,但我不能理解它,不能和他们同乐。相反,能够给我欢乐的为数不多的几件事儿,我认为是人间至乐的事儿,不同凡响的事儿,令人欣喜若狂的事儿,世上的人最多只在文学作品中见过、寻觅过、喜爱过,在现实生活中他们认为这都是些荒诞不经的事。
<<<

狼,本质上是属于狂野的,属于荒原的,即便是有所羁绊,即便隐遁,本性是无法因困顿和迷茫而消失。现实的牢笼只能潜积力量,就像月圆之夜望月长啸,它需要荒野,它需要撕咬,如果不能得到什么,至少应该打破什么,它需要释放它内心激愤的野性和无所畏惧的力量。

<<<
我心里就燃起一股要求强烈感情、要求刺激的欲望,对这种平庸刻板、四平八稳、没有生气的生活怒火满腔,心里发狂似地要去打碎什么东西,要去砸商店,砸教堂,甚至把自己打个鼻青脸肿。
<<<

但它仍然身处城市。

<<<
我不知道这是怎么回事,但是不管怎么说,我这个无家可归的荒原狼、小市民阶层的孤独的憎恨者,却始终住在名副其实的小市民的房子里:这是我的一种感伤的老话了。
<<<

城市的孤独者对烟火的希冀。

<<<
我虽然憎恨小市民,但他们那种气质却有使我感动的成分,我喜欢他们,喜欢他们跨过我房间的门槛,进入我的住房,因为这里与楼梯上的情形大相径庭,书籍、酒瓶杂乱无间,烟蒂狼藉满地,屋子里乱七八糟,肮脏不堪,书籍、文稿、思想,一切的一切都浸透了孤独人的苦痛和人生的坎坷,充满了想要赋予人生以新意的渴望;人生已经变得毫无意义。
<<<

毫无意义的人生就像一场梦,黑暗而虚空,事实上和死亡没有两样。

<<<
但是他突然发现,他的自由就是死亡,他现在非常孤独,外界谁也不来打扰他,这使他觉得非常可怕,各式人等都和他毫不相干,连他自己也和自己没有什么关系,他在越来越稀薄的与人无关的孤独的空气中慢慢窒息而死。现在的情况是,孤独和绝对自主已经不再是他的愿望和目的,而是他的厄运,是对他的判决了,用魔术呼唤出来的东西再也收不回去了。现在,当他充满渴望、怀着良好的意愿,伸开双臂准备接受约束,准备和他人共同生活时,已经无济于事了,现在谁也不来理会他了。其实,并不是人们憎恨他,讨厌他。相反,他有许多朋友。许多人喜欢他。但是他得到的始终只是同情和友好的态度。人们请他作客,赠礼给他,给他写亲切的书信,但没有人真正接近他,他和其他人没有任何亲近感,没有人愿意并能够和他一起生活。包围他的是孤独的空气和宁静的气氛,周围的一切都从他身边溜走,他没有能力建立各种关系,意志和渴望都不能帮助他克服这种无能。
<<<

死亡是一种逃避、解脱还是一种超然之态?

<<<
荒原狼哈里就是这样。和成千上万的同类一样,在他的想象中,通向死亡的路随时都为他敞开着。因而,他多愁善感,充满幻想,不仅如此,他还从上述思想中吸取安慰,以此作为安身立命的立足点。和所有同类人一样,任何失望、痛苦、恶劣的生活境遇都会马上唤醒潜伏在他身上以一死而求解脱的愿望。久而久之,他却把这种倾向,发展成一套有益于生的哲学。他想,那扇太平门始终为他敞开着,这种想法给他力量,使他好奇,去饱尝各种痛苦和劣境,在他遭遇不幸的时候,有时他会有一种类似幸灾乐祸的感觉,他想:“我倒要看看,一个人到底能忍受多少苦难!一旦到了忍无可忍的地步,我把太平门一开就摆脱了劫数。”许多自杀者就是因为有这样的想法而获得巨大的力量。
<<<

<<<
这是时间与表象彼岸的国度。我们是属于那里的,那是我们的家乡,我们的心向往那里,荒原狼,因此我们渴望死亡。在那里,你又会找到你的歌德,找到你的诺瓦利斯和莫扎特,我又会找到我的圣人,找到克里斯托弗·菲利普·封·奈利,找到所有圣人。
<<<


死亡只不过是一种状态走向另外一种状态,其实什么都没有改变。


<<<
人只不过是自然与精神之间的一座又狭窄又危险的桥梁。他内心深处不可抗拒的力量驱使他走向精神、走向上帝;他最诚挚的渴望又吸引他回归自然、回归母体,他的生活就在这两种力量之间颤巍巍地摇摆。
<<<

正是这种自然和精神的纠缠和厮打,才是他幻化为一头城市荒原狼。






<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

写作是有周期性的,就像读书一样。有那么几天什么都不想看,也有那么几天什么都不想写。不是无话可说,是不想说。

这和情绪有关。之于受什么影响,我至今也没有弄明白,在那么几天内,你会质疑读书之于生命的意义,以及表达的作用。生命的万般无奈和长途跋涉,绝对超越世俗,不能致其身陷普世的囹圄,警惕其受万众盛赞的桎梏。而读书这件事情就一大俗之事,学而致用,格物致知,皆为功利;修身齐家治国平天下,皆为经世的圈套。所谓的终极的目标皆为虚无,只是世间大多数人的欲望形成的意识洪流,乃成文化,裹挟着国家、社会和人类前进。没有什么是唯一的和不变的,即便是那强大的意识洪流,也会东拉西扯,经不起平原漫灌,最后干涸枯竭,成尘成土。那作为万幸入世活此一遭的个体生命,该入流还是旁溢别出那?是沉溺于那犹如时间般永无尽头的书中那,还是该走出去,爬到山上去看那晨曦蓬勃,潜入海中去看那鱼翔浅底,走入沙漠中感受生命的炽烈,即便混迹于人群中也能看那陌生而美丽的姑娘灿烂的笑容和摇曳多姿的躯体,以及感受与你擦肩而过的一张张神情或严肃或安详或苦恼或呆滞的脸,他们或她们或是刚经历过一次吵架,或向暗恋的心上人做了表白,或刚刚丢失了工作,或在人生的十字路口面临抉择,每一张脸的背后的故事和剧情的想象似乎比那薄薄的书页更加让人留恋和着迷。为什么人们宁愿孤独的面对想象的故事而不愿意多读一眼身边的故事那?也许这就是读书的悲哀,读书是一种想象,是海市蜃楼,是把自己从现实中抽离的虚空的力量。那些具象的人、事、物是真实的,经不起想象,或者我们害怕对这些具象的事物进行想象,因为我本身就是其中一份子,是具象的实在存在。一旦事物对自身就行了指涉,就要产生悖论。悖论是痛苦的!

待续

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

"""
这是 Edge 俱乐部另一年度问题(之前的一期:[[哪些简单而优雅的深邃科学原理|世界因何美妙而优雅地运行]]):让人聪明的认知工具。整理如下:

1. 史蒂芬·平克(著有《[[语言本能]]》《[[思想本质]]》《[[心智探奇]]》《白板》):正和[[博弈|博弈论]]。在零和博弈中,总在寻求自身利益最大化的理性行动者必将导致对方的损失最大化。而在正和博弈中,一个理性自利的行动者的选择可能会惠及做出同样选择的其他人。简而言之,正和博弈就是双赢,也就是所谓的“人人都是大赢家”。生物学家约翰·梅纳德·史密斯(John Maynard Smith)和奥瑞思·桑斯马利(Eörs Szathmáry)认为正和博弈式的生物进化主宰了生命史上每一次的重大转折:基因、染色体、细菌、有核细胞、有机体、有性生殖和动物群的出现。

2. 塞斯·劳埃德:不确定性。一碰到概率问题,人们基本上都会犯错。危险的概率是1,非生即死。

3. 凯文·凯利(著有《[[失控]]):失败造就成功。西方的崛起其实很大程度上是因为西方对失败的高耐受力。
4. 鲁比·拉克:不可预知。如果你能预知自己的行为,那么你也完全可以干预和改变它,这不正好会导致预测失败吗?接受不可预知会帮助我们获得自由和内心平和.

5. 詹姆斯·奥唐奈(著有《[[新罗马帝国衰亡史]]》):万物恒动。“万物皆流,无物常住”。稳定和连续都只是幻像。
6. 特伦斯·谢诺沃斯基:十进制-标度思维。自然界中也有比例定律:腿骨的厚度应该是长度的3/2次方、大脑内的白质的体积都是灰质的5/4次方、8级地震释放的能量是6级地震的近1 000倍、人的一生中有10的9次方秒、视觉系统每一秒能进行三次快照、主观时间是一种神奇经验,会随着年纪的增长而消失,也许生命就是一种面向终点的对数式时间尺度、我们的大脑里有10的15次方个突触、太阳还将发光10的17次方秒。

7. 苏珊·布莱克摩尔(著有《[[意识概论]]》):相关不是因果(correlation is not a cause, CINAC)。
8. 安东尼·阿吉雷:悖论。个好的悖论可以帮助我们更多,它不仅能揭穿错误的假设,而且能形成消除谬误的思维方式。
9. 维诺德·科斯拉:[[黑天鹅]]。传统智慧的根本缺点就在于否认黑天鹅的存在可能性。

10. 马克·佩奇尔:知识就是假设。德尔斐的神谕说苏格拉底是“这个世界上最智慧的人,因为他知道自己一无所知”。真正的知识很容易被误解或者反事实,最重要的是,它从不可能被精确地获得。想一下重量和长度的国际度量衡,我们就会处于尴尬之中。在巴黎赛弗尔的某个玻璃盒子里有一块金属,它是国际单位制“千克”的度量衡。根据定义,它的重量就是一千克。但神奇的是,它从来没有两次测重结果是一样的。

11. 理查德·道金斯(著有《[[自私的基因]]》):双盲控制实验。双盲控制实验能起到事半功倍的效果,它不仅是出色的研究工具,也是训练人们如何批判性思维的利器。
12. 罗杰·尚克:实验法。如果能将生活的方方面面都理解为实验,我们的理解就会更透彻。否则,我们就无法基于收集的信息进行理性推导,也无法仔细思考实验条件,更无法反思自己的实验时机和实验程序。

13. 蒂莫·汉内:控制实验法。
14. 吉诺·塞格雷:思想实验。思维实验已经成为时代流行语,例如“薛定谔的猫”。

15. 罗杰·海菲尔德:唇齿之依。赢得生存之战的方法之一是合作。哈佛大学马丁·诺瓦克提出了五种合作的基本机制。合作是除基因突变和自然选择之外进化的第三条路径:从基因到有机体,再到语言,甚至到支撑着当代社会的超复杂行为,合作将会显现出进化的能动性。

16. 威廉·卡尔文:比较与对比。通过比较和对比,寻找框架并弄清哪些因素被排除在外了。
17. 维莱亚努尔·拉马钱德兰(著有《揭开人类本性的奥秘》《探索心灵的奥秘》):异常与范式。
18. 克里斯蒂娜·芬恩:不在与存在。意识到不存在的证据,不是强加一个形状在无形的东西上,而是承认一种不在场的可能性。

19. 埃里克·托普:寻求根本原因,人类的“黑匣子”。
20. 巴特·科斯可:证明完成。为了达到“证明完成”时刻必须至少体验一次证明过程,从而至少真正达到一次“证明完成”时刻。

21. 克雷格·文特尔:宇宙无用论。地球上的生命并非什么伟大宏图的实现,而只是失衡环境下熵增的副产品。宇宙只是根据它的规则在持续运转,我们能做的就是理解它并赋予其意义。

22. 唐纳德·霍夫曼(著有《[[视觉智力]]》):感知桌面。图示桌面指导了我们适应电脑的行为。效用推动了自然选择。弄清效用和事实的差别,有利于我们理解决定我们的肉体、心理和感觉经验的力量。视觉、听觉、味觉和触觉的感官经验都可以被视为进化为引导适应性行为的感知桌面,而不是报告客观事实的途径。感知桌面的概念提供了新的思维框架,它让感官经验脱离了想象的范畴,空间、时间和物质可能只是智人感知桌面的某一特定部分,它们不是对客观真理的洞察,而只是在进化中形成的一些生存习惯而已。桌面就只是桌面而已。

23. 大卫·伊格曼:主体世界。不同的动物感受到的世界都是它们的“主体世界”,而更大的世界,不管意味着什么,我们都称之为“世界”(umgebung)。
24. 胡安·恩里克斯:生命密码。

25. 珍妮弗·雅克:关键消费者。关键种在构建生态系统中起决定性作用,那么所谓的关键消费者(keystone consumers)就是决定某种资源市场的群体。一小部分人的强烈需求会形成相应的植物群和动物群。世界生物的灭绝完全有可能是由一小部分人造成的。和关键种一样,关键消费者同样能造成与其自身数量相应的歧化影响。人们应该保护关键物种,限制关键消费者,因为其他人的生命与此息息相关。

26. 丹尼尔·戈尔曼:人类世思维。生态系统断面和失能调整生命年都位于人类思维的顶端,体现了人类系统是如何影响全世界的生命系统的。
27. 丽莎·兰道尔:有效理论。
28. 马克斯·泰格马克:科学生活方式。它的核心就在于当你面对与你相悖的观点时,你应该改变自己的思维,避免思维惰性。

29. 凯瑟琳·舒尔茨:悲观元归纳。因为有太多过去的科学理论被推翻了,所以我们必须假设,如今的大多数理论也将在未来被证伪——这就是悲观元归纳的核心论点。
30. 道格拉斯·洛西科夫(著有《编程或被编程》):技术的倾向。如果技术具有倾向的观点成为常识,我们就可以更加有意识且更有目的性地使它们。否则,技术及其影响还会继续困扰甚至威胁我们。


下接:[[认知工具-2|2020年05月03日周日下午11:56:20]]

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

上接:[[认知工具-1|2020年05月02日周六下午11:40:31]]
"""

30. 尼尔·格申斐尔德:真理即模型。对于科学最为常见的误解,是认为科学即寻求真理。但事实并非如此,科学只是在创造和检验模型而已。建模不是宣布真理,而是一个永无止境地探索和改进的过程。
31. 罗斯·安德森:减少不确定性,弥补表象与实质之间的差距是科学的主要任务。

32. 马克·亨德森:科学是一种思维方式,也是迄今为止最好的(但还不是完美的)逐步接近事物真相的方式。科学是开放性的,只要有新证据就会接受改进。它是反独裁的:任何人都可以有所贡献,也都可能会犯错。科学总是在积极检验各种命题,能在不确定性中安身立命。

33. 蒂莫西·泰勒:借助并超越具体事物进行思考,并在大脑中进行虚拟操作,是我们自我意识的重要组成部分。通过抽象的方法内化我们的创造,并把“已经存在”的工具变成心理机制才能让整个科学获得更大的发展。

34. 李·斯莫林:时间内思维与超时间思维。自己的研究是创造新颖的观点和用数学模型来描述新发现的现象,那么他们就是在采用时间内思维。如果我们进行超时间思维,我们就会认为这些观点某种程度上“已存在于”我们之前。如果我们进行时间内思维,我们就不会那样假设。超时间思维常常意味着存在一个想象的领域,处在宇宙之外,蕴含着真理。

35.马丁·里斯:时间的深度。
36.朱利奥·博卡莱蒂:尺度分析。联结线性与非线性、简单与复杂的最佳桥梁是尺度分析,也就是物理系统的维度分析。只有借助尺度分析,我们才能利用简单模型来理解复杂的非线性现象。
37.戴维·盖勒特:递归结构。
38.马蒂·赫斯特:检索指数。是指网络搜索可以多大程度上满足你对所需信息的需求。

39.马可·亚科波尼:纠缠是一个非常好的认知工具,因为它冲击了我们的认知直觉,还因为它暗示我们,那些不证自明的因果现象可能并不是真的因果。
40. 维多利亚·施托登:相变与型变。”相变”这个词,用来形容物理形态变化的状态;“型变”(scale transitions),规模增加带来的意外结果。

41. 马扎林·巴纳吉:崩坏思维的解决方法:信号检测理论。我们在面对任何一个命题的时候,都要使用四格分析。
42. 戴维·迈尔斯:大多数人都对自己评价很高,社会心理学家称这种现象为“自利性偏差”。警惕自利性偏差能使我们摆脱虚伪的谦虚,培养出既认可自己天分又尊重他人才华的谦逊。

43. 劳伦斯·克劳斯:不确定性。将不确定性量化且嵌入模型之中,才能使科学是定量而不是定性的。
44. 查尔斯·塞费:随机性。随机性的三条法则:随机性确实存在、有些事情无法预测、单个随机事件无法预测,但作为整体它们似乎可以被预测。一系列独立随机事件作为整体却是可以预测的,大数定律是一种数学定理,即一件独立的随机事件无限重复后,它发生的概率就会趋于一个稳定的算术平均值。

45. 罗伯特·库尔茨班:外部性。
46. 史蒂芬·科斯林:“约束”指的是人们在解决问题或进行决策的时候必须考虑的约束条件,而“约束满足”就是一个满足这些约束条件的过程。

47. 斯蒂芬·亚历山大:二象性。
48. 阿曼达·格夫特:二象性,潜在本质的两种不同表现形式。日常认知工具中,二象性能让我们摆脱典型的布尔逻辑、二值、零和思维,在这些逻辑和思维中,对错分明,没有共存一说。有了二象性,我们就有了第三种选择:可能我是对的,你是错的;也可能你是对的,我是错的;或者还有可能,我们的观点是二象性的。

49. 塔妮娅·伦布罗佐:可消除性。
50. 乔舒亚·格林:随附性是一个简洁概念,来自英美哲学,为万物如何与其他事物相关联提供了一种基本的思维框架。随附性是两种性质之间的关系。一个由性质所构成的集合A和一个由性质所构成的集合B之间具有随附性,当且仅当对于任何两个东西x和y来说,如果x和y都具有B所包含的所有性质,即x和y相对于B是不可区分的,那么x和y也会具有A所包含的所有性质,即x和y相对于A也是不可区分的。随附性其实就是不同层次真相之间的关系。
51. 布莱恩·克努森:可复制性。

52. 马丁·塞利格曼:幸福感五要素-PERMA:P:积极情绪(Positive Emotion)E:投入(Engagement)R:良好的人际关系(Positive Relationships)M:意义和目的(Meaning and Purpose)A:成就(Accomplishment)。

53. 道格拉斯·肯里克:亚自我和模块思维。注意力是具有选择性的。神经系统会根据侧抑制原则进行选择,侧抑制原则是在某神经元受到刺激的时候,由此产生的神经冲动将对邻近部位神经元输入的信号产生抑制性影响。
54. 艾莉森·高普尼克:理性无意识。

55. 托马斯·梅青格尔:现象透明自我模型。
56. 杰弗里·米勒:人格-错乱连续体。人格可以由五个维度来解释。大五人格理论阐释人格的五个维度分别为:开放性、尽责性、外向性、宜人性和情绪稳定性。
57. 海伦·费雪:气质维度。人们表达思维和行为的不同风格——心理学家称之为“气质维度”。气质,也就是造就你的感受、思维和行为一致性的生物性倾向。人格变量中40%~60%的变异都可以用气质特征来解释。气质是可遗传的,在人的一生中相对稳定,有着特殊的基因遗传路径及激素或神经介质系统。

58. 乔纳森·海特:愿意牺牲自己的利益以帮助群体克服威胁的成员所组成的功能性单位称为“情境型超级生物”。
59. 约翰·托比:就如何理解我们的现状,有三种简单的思维工具:因果关系、道德冲突和错误判断。
60. 杰森·茨威格:构建偶然。顿悟(“是的,就是它!”)的瞬间往往发生在大脑突然转移焦点的时候。创造力能通过外界因素的精心设计而得到强化和提升,途径至少有两种:变换学习的内容和场所。

61. 丽贝卡·戈尔茨坦:“事实不能用比事实本身更诡异的假设来解释,在众多的假设中,最平淡无奇的一种将会被采纳。”选择的标准就是:越简单越好,与已有信念一致,没有什么特别设定,能解释绝大多数现象,甚至是最可爱的那个。
62. 理查德·福尔曼:负能量是一种深刻治疗。

63. 马特·里德利:集体智慧。人类的成就和个人智商完全无关,完全是一个网络运作的结果。
64. 汤姆·斯坦迪奇:你可以证明有些东西绝对危险,但没法证明它绝对安全。
65. 萨姆·哈里斯:迷失于思。我们对意识流的定义正是人类痛苦和困惑的根源,即我们意识不到思想就是思想,它只是意识一瞬间的形态。

认知工具-3

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

上接:[[认知工具-2|2020年05月03日周日下午11:56:20]]

"""
66. 盖瑞·马库斯:证实偏差。通过训练不仅接受与自己信念一致的信息,也接受那些异于自己的其他信息,来弥补我们“自我证实”的天生缺陷和扭曲的记忆。

67. 保罗·凯德罗斯基:变动基线症候群。“每一代的海洋生物学家都会以自己开始研究时的鱼类存量和种类为基线,并以此来评估变化。而下一代将使用新的鱼类基线,此时的存量已然大幅降低且种类减少。如此这般,基线不断下降,我们也逐渐习惯了物种资源的缓慢消失。”

68. 杰伦·拉尼尔:累积误差。在复杂金融工具的案例中,每一个传递者和“打电话”游戏中的小朋友一样,都不是对应着可靠信源的基线水平,而是对应着并不可靠的纵向序列,序列中每一层级的人都在进行交易。每一次交易都基于前面交易数据形成的公式,每一次交易的估值都可能基于上一次的错误估值。一个笑话重复很多遍就不好笑了。我们亟需从柏拉图式的认知谬误中清醒过来,并设计出能减少累积误差的信息系统。

68. 安迪·克拉克:预测性编码。大脑基于对摄入信息的理解产生感知、观念和行为,并以此进行预测。
69. 弗兰克·维尔切克:隐藏层。

70. 保罗·萨夫:判断时距。埃利奥特·雅克提出,公司里不同层次的工人有着非常不同的时间观。流水线工人关注于只要一个动作就能完成的任务,经理们将精力投入在那些需要半年或者更长时间才能实现的指标上,CEO则是在追求实现公司几年后的愿景。

71. 丹尼尔·丹尼特(著有《[[直觉泵和其他思考工具]]》):循环。例如:“克雷布斯循环”(又名“柠檬酸循环”或三羟酸循环)。面对生命与精神世界的奇迹的经验法则是:从奇迹中找到循环。

72. 杰拉尔德·斯莫尔伯格:偏见的背叛。偏见作为一种直觉,即敏感度和接受度,能聚焦和过滤我们的知觉,如果没有偏见来集中我们的注意力,我们将迷失在无穷无尽的信息里。偏见是一种暂时性的假设,是一种正常现象。

73. 卡尔罗·罗威利:科学证明”是一个广为传播的有害观点。这是一个悖论,科学的基础就是要对质疑敞开大门。本质上,知识是一种概率,这是当代实用主义哲学强调的概念。更好地理解“概率”,尤其是意识到我们不需要,也从来没有“科学证明”的事实,而只有基于足够大的概率做出的决策时,将升级每个人的思维工具。

74. 加勒特·利西:[[概率]]观念。人类的概率观念糟透了。量子力学指出,我们所在的世界将依照事件发生的概率运转。顺着这个奇怪的思维,量子力学、频率论及贝叶斯定理的观点一致认为,许多可能的世界发生某个事件的频率等同于它的概率。在好的押注中,所有[[贝叶斯定理]]的思维工具和“简化抽象概念”将直接转化为决策能力,发挥作用。

75. 基思·德夫林:[[概率]]。每当一个统计学家想要基于现有证据预测事件发生的概率时,有两个必须考虑的信息点:证据本身的可靠性,我们必须计算它的可靠程度;单纯以相对发生率来计算事件发生的可能性。

75. 杰拉尔德·霍尔顿:怀疑的经验主义。政治和社会的重大决策往往都基于一些根深蒂固的先在假设、意识形态和教条思想,或者说,基于只顾眼前不思长远的轻率的实用主义,因此,建议采用怀疑的经验主义,它已被科学研究反复思考和验证了其优越性。

76. 菲尔利·库什曼:虚构。虚构为什么是我们日常生活的重要概念,无意识的影响。人们在气味难闻的房间里会做出更严厉的道德评价,这说明了厌恶作为一种道德情感的作用。女人在排卵期的时候打电话给她们父亲的可能性会降低,这体现了一种乱伦回避,而在母亲身上则不存在这样的模式。流感期间,在卫生间附近投票的学生会表现出更强烈的政治保守倾向,这反映了环境威胁对意识形态的影响。人们在拿着冰咖啡而不是热咖啡时,更容易对陌生人有所警觉,这也说明了我们平时为什么用“温暖”来形容人际关系。

77. 黑兹尔·罗斯·马库斯:文化循环,它不仅能描述文化如何起作用,而且能指导如何将其变得更好。文化循环是一个反复的过程,人们创造文化,然后适应它,同时文化会塑造人们使其能不断延续下去。文化和人(包括一些其他的灵长类动物)互相构成。这一过程包含四个嵌套水平:个体自我(个人的想法、感觉和行为)、体现和塑造个体的日常实践和工具、坚持或阻止这些日常实践与工具的体系(教育、法律和媒体),以及普遍的是非观念。人类影响着这四个水平,也受到这四个水平的影响,

78. 尼古拉斯·卡尔:认知负荷,就是某一个时间点我们需要加工的信息数量。

79. 马修·里奇:系统性平衡。热力学第二定律认为(俗称的“时间之箭”),随着时间的推移,一个封闭的系统会越来越均衡,最终达到一种系统性的平衡。

80. 琳达·斯通:投射性思维,是由爱德华·德·波诺提出的,用来描述那些创造性的而非被动的思考。

81. 格尔德·吉仁泽:风险素养,就是在信息充分的情况下处理不确定性的能力。统计思维是一种能理解和客观估算不确定性和风险的能力。

82. 戴维·巴斯:先别选择。选择进化发生在凭借可遗传的差异而形成的差异化繁殖竞争中,而不是发生在生存竞争中。随着时间变化,进化是期待特质频率增加和不利特质不断减少的结果。

83. 戴安娜·哈尔彭:“统计上的显著性差异”是研究和统计中的核心概念。当我们说“统计上的显著性差异”时,“显著”表示的是,结果不可能是误差引起的(如果零假设是真的),但结果本身可能很重要,也可能不重要。而且,有的时候结论可能是错误的,因为研究者只是在某种概率水平上确认自己的结论。这个概念的常识性理解能包括:(1)结果可能是不重要的;(2)不管是基于统计上的显著性差异还是基于非显著性差异,结论都可能是错误的;那么我们的常识水平将会大大提升。

84. 克莱·舍基:[[帕雷托法则]]。累托分布(Pareto distribution)延伸出很多其他概念——80/20原则、齐夫定律、幂律分布以及“赢者通吃”效应,这些定律的数据曲线走向基本一致:系统中最富有、最活跃或联系最紧密的个体最能解释整体的财富、活跃度和联系的紧密程度,它们远高于平均水平。预测失败的一部分原因来自高斯分布(即正态分布)。

85. 塞缪尔·阿贝斯曼:哥白尼原则,即我们在任何意义上都不占据特殊的位置,也并不备受偏爱。

86. 迪伦·埃文斯:比较优势法则,它解释了为何在交易一方相较于另一方拥有绝对优势时,双方依然能达成双赢的交易。

87. 凯文·汉德:吉布斯景观。生物生态系统可以标记为反应的景观和利用能源的通路,这就是吉布斯景观(Gibbslandscape)。

88. 叶夫根尼·莫罗佐夫:定势效应。我们试图用过去奏效的方式来解决眼前的问题,而不是从新问题本身去进行评估和定义,就是定势效应。

89. 格雷戈里·科克伦:“维克效应”,即为了获得想要的结果而调整证据的标准。

90. 比阿特丽斯·戈洛姆:假安慰剂效应,指的是在不参考某个理论的相关概念和假设推论的情况下,简单粗暴地直接使用它解释问题,从而引发理解偏差。

91. 乔纳·莱勒:“注意力策略性配置”(strategic allocation ofattention)。意志力真正关乎的是调整注意的焦点,学会控制工作记忆中的思想,也就是说,如果我们一直想着棉花糖,就会把它吃掉;要想不吃棉花糖,就必须转移目光。我们的决策通常因大脑中思考的事实和出现的情绪而产生,而当我们有意识地选择那些我们愿意思考的问题时,配置注意力能让我们主导那些偶然事件的发生过程。

92. 丹尼尔·卡尼曼:聚焦错觉。如果每个人的教育水平都相同,收入的不平等现象减少的比率不到10%。如果只聚焦于教育水平,就会忽略许多其他决定收入的因素,毕竟同等教育程度的人的收入差异也是非常大的。收入水平是决定人们生活满意度的重要因素,但这也不像大多数人认为的那么重要。如果所有人的收入都一样,人们的生活满意度差异的缩小幅度也不超过5%。当我们在想象瘫痪者、盲人、中彩票的人或加利福尼亚州居民时,我们会更多关注他们的特殊之处。这种对生活条件和实际生活的关注失衡产生了聚焦错觉。

93. 斯图尔特·法尔斯坦:命名游戏。最糟糕的可能是“理论”和“法则”这两个几乎对立的概念。“理论”在科学里是很强的观念,但对大众来说却是模糊的;而“法则”在社会语境下则比在科学语境下要强势得多

下接:[[认知工具-4|2020年05月05日周二下午11:20:06]]

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

 上接:[[认知工具-3|2020年05月04日周一下午10:29:26]]

"""
94. 理查德·尼斯贝特:简化抽象概念。
96. 唐·泰普斯科特:爱因斯坦的记忆法。当有人问爱因斯坦他为什么会去翻通信录查自己的号码时,他说他只会记住那些他没法查到的东西。

97. 约翰·麦克沃特:[[路径依赖]],指的是那些今天看起来十分平常或必然的东西往往源于过去某个时间的某个合理决策,尽管现在它们的合理性有所下降却得以保存,因为它一旦被建立,外部因素就会尽力排斥其他选项。仅限于当下的解释是不协调的,只有基于历史发展的解释才行得通。

98. 格洛丽亚·奥里吉:糟糕经济学。标准的博弈论假定,无论人们交易什么,每个人都想从对方那里获得高质量的东西。糟糕经济学则不同,在交易中,我们不仅倾向给别人坏东西,也倾向于接受坏东西!糟糕经济学由质量打折的隐性社会模式来规范,交易双方共同接受一个马马虎虎的结果,只要双方都公开承认这场交易是高质量的,那么结局就皆大欢喜。如果一方或双方都给出好结果而非坏结果时,对方就会憎恨这种背信弃义的行为,即使他们并不会公开承认这一点。标准的囚徒困境相反,只有确保对方会给出一个坏结果,双方才能继续互动,否则就只有终结了。糟糕经济学的主要问题,以及它成为一种无法根除的群体性荒谬行为的原因在于,每一次低质量的交易都让交易双方感到满意。

99. 恩斯特·波佩尔:认知工具库里的内容是[[自指性]](self-referentiality)的,即简化抽象概念是以它们未直接反应的用途来进行自我定义的。

100. 丹·斯珀伯:文化吸引子([[模因]] meme)。文化节点(即文化模因,我们可以稀释这一概念叫它文化节点)保持自我相似性不是因为它们的不断复制,而是因为每一次复制传播中围绕文化吸引子的变化,它并没有导致原始模型向各个方向“随机漫步”式地散开。

101. 罗伯特·萨波尔斯基:八卦主义,八卦主义是一种潜在的失真与扭曲。“[[涌现]]”(emergence),它是“还原论的终结”,即不承认理解复杂现象的唯一科学工具就是将其分解为不同的元素,对每个元素进行单独的研究,然后将这些微小的碎片组合起来即可。

<完>

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

历史学家顾颉刚自幼开始做读书笔记,终身受益。

<<<
自肄业北京大学,略识为学之途,乃于记中自抒意见,而年少气盛,工于呵斥,前代权威与并世英贤俱无所避。其后学力少进,知成才之匪易,必当宽于责人而严于自督,遂力屏浮词,唯寻实证,每记一事,随时加以修正补充。友朋编辑刊物,索取文稿,即于此中求之,取其已有什五把握者施以陶熔,且更集新材连缀为长篇文字。读者弗知其积累之苦也,辄惊予记忆力之强。
<<<

读书笔记是大脑的外延,顾颉刚如是说:

<<<
“举记忆力言,诚无有弱于我者。我之生也,重闱爱之甚,期其早达,故未能步行,已令识字;未能自食,已读《大学》;未能自衣,已读《左传》。以就塾年龄之太稚,斫伤其神经,故开卷虽了了,掩卷即茫然,予之不能治文字学、读外国文者以此。所以尚得自厕于考索之工者,只缘随地肯留心,而此腕又不厌烦,有得辄书,作不断之探讨耳。《中庸》曰:‘人一能之己百之,人十能之己千之。'此若为予言之也。”
<<<

顾颉刚做读书笔记的风格和方法。


<<<
学者当先从笔记下手。笔记者,或长或短,悉如其分,不多衍一字,有简洁之美。其为文可以自抒心得,亦可以记录人言,其态度可以严肃,亦可以诙谐,随意挥洒,有如行云流水,一任天机。此学术界之小品文也。学者诚当求大成,勿自安于小品。然初学画者必以一山一石始,稍久,胸中具丘壑,然后渐进而为巨幅,事岂可以躐等。故为笔记既多,以之汇入论文,则论文充实矣。作论文既多,以之灌于著作,则著作不朽矣...... 分工言,自工作阶段言,俱宜若此,是以学者之事,其最后标的固在大通,而个人修学,循序渐进,必先肆力乎一曲,此正所以为大通之试验、之练习、之准备也。
<<<

然则。

<<<
二十余年来所记殆近百册,又性好聚书,穷束修而罗致之,塞屋充栋,撷取材料又至便,自分终老此身于书城中...... 至“七七”难起而被迫离其旧窟,只身逃死,不仅图书一册未携,即笔记稿本亦都弃掷,偶一执管,怅望踌躇。斯时也,恍若商贾之破产,士兵之缴械矣。
<<<

"偶一执管,怅望踌躇"!感同身受。现在想写点东西,如果脱离了我的读书笔记,亦彷徨踌躇。


<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

读到下面这段文字,深被震撼和折服。大家修成之路,是书山文海铺就,确非一日之功。这也应了我之前关于读书的总结之一,读书越早,发酵越长,功效越好。顾颉刚青少年不仅酷爱读书,还能有如此藏书,真让现代人汗颜!

<<<
我辈以茗谈之便,日必趋之,视囊中钱多少,选购一二,挟至茶座,交互览之,兼施评判,以为人间至乐萃于是矣。 伯祥喜史地书,圣陶爱诗词集,我以父祖俱治朴学,又受两君熏陶,四部书无所不收,浩漫至无畔岸。诸戚长对幼辈,岁终赐压岁钱,岁初予拜年钱,平时家中又给饼饵钱,予遂悉索敝赋而散诸书坊。及与柜上人交稔,不付钱亦可携归,于是贪得之欲日扩。商人定例,平时所欠书价,端午、中秋二节必求清偿,届时无以相酬,则唯有恳告重闱,甘受斥责,必得请而始已。推度两君,谅亦尔也。伯祥买书有定程,日以得一卷为率,及暮抵家,燃灯读之。予所罗既广,倍蓰不止,则唯有略加翻 ,识其大凡,未遑深入也。久之,''彼此插架俱盈,则辟专室以储之''。若《四库提要》、《汇刻书目》及《书目答问》等书,定为专业课本,则长日翻览,目录版本之学以此益熟。明、清人书刻于何时何地,触目了然,有如秦、汉间人之望气然,什中可得七八。是时虽在青年,亦宛然有藏书家鉴赏之风度矣。
<<<



<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

这是去年看的一本书,我试图并尽力把此书概括并说明白,给您一个“微阅读”的感觉,不用再去读此书了。
这本书的核心信息是:知道感、正确感、确信感和确定感并不是反复揣摩得出的结论,也不是自觉意识的选择,它们是自动发生在我们身上的心理感觉。

确定(certainty)无处不在。
确定、准确、确信、正确等类似的感觉都是作者所说的确定感,也即平时我们所说的“我就是知道”,与此相关的是熟悉感,“我知道,就是想不起来了”,如“似曾相识“、“素昧平生”、“陌生的熟悉感”等。”确定感与理智无关,不受我们的控制。知道感和类似知道感的感觉应当被看做是跟恐惧和愤怒状态一样的原始情感。

正如上期提到的:[[要了解某件事物是如何发挥作用的,你必须首先要知晓这件事物是如何发展的|https://rizime.substack.com/p/4a1]]。知道感是如何产生的?先应该知道大脑的信息加工方法和路径。这里涉及到一个隐藏层的概念。隐藏层为大脑的信息加工提供了一种强有力的比喻说法。在隐藏层中,生物学所有的要素和过去所有的经验 —— 不管是记得的还是早就忘记的,都影响着输入信息的处理。这是输入数据和最终感知之间的分界面。(目前AI协会把进行权衡的虚拟空间列为隐藏层进行研究和开发方向。)

[img width=70% [http://one.rizi.me/Photos/rizime/yincangceng.png]]

如上图。人类的神经网络处理输入的信息就像一场秘密的投票活动。例如,当看到一道闪光时,视网膜把闪光转化成电流数据输入隐藏层,它将在这里通过一个审查委员会的审查,这个审查委员会代表你所有的生物倾向和过去的经验,也会对灯光进行评估、讨论、审查。于是就开始了一场投票竞赛:童年记忆成员投票同意把闪光传递到意识中;恐怖主义警示网络成员唯恐闪光意味着爆炸,于是也投票表示同意;摇滚音乐会记忆成员厌烦音乐,在摇滚音乐会上无数次看到同样的闪光,觉得闪光应该忽视,于是它投票反对;遗传倾向成员也反射性地投票同意……每位成员都代表着带有自己特定倾向或偏见的神经网络(固执和顽固不化也由此而来)。最终的输出结果,决定于投票的多少,无关乎正确与否。

还记得之前一期[[关于“风筝”的心理实验|https://rizime.substack.com/p/ef7]]吗?以此为例,在还没有读到答案之前,评估描述风筝那段话的神经网络的社区成员会投票给不熟悉感、陌生感,甚至是怪诞感或不真实感,而没人投票给理解感。当“风筝”这一解释信息被输入进去时,代表陌生和不熟悉的委员会突然沉默,而代表熟悉——“是的,那是正确的”和确信感的委员就会凌驾于这些委员之上。最终表现出来的结果就是,这个解释感觉上去是正确的。

一旦将这段话代表风筝的结论被嵌入到意识中,正确感就不会被自觉意识驱逐出去或贬低,我们可以自觉地输入新的相反信息。不过,只有神经网络系统中的隐藏层会重新权衡这些信息的价值。

有一部著名的电影《美丽心灵》,是以博弈论的创始人诺贝尔奖获得者数学家约翰·纳什维为原型。非常不幸的是,他患有精神分裂症。他在精神病发高峰期认为外星人试图跟他联络。他不能接受麻省理工学院的正教授职位,因为“我被选定去做南极洲的皇帝”。当一位同事问他说,像他这么出色而睿智的人怎么会相信这样的胡言乱语时,纳什回答说,他感觉到的信息和睿智的思想一样,都来自同一种途径。

完全确定的态度会使人放弃对不同意见的思考,而这种“确定”往往是彻头彻尾的错误。

意识到自己的局限性,而后在内心产生宁静感的感受奇妙非凡。

[[Λ-Reading #39期|https://rizime.substack.com/p/e7b]]

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

一八五零年十一月六日,他在日记中写道:“我觉得心里有种想法成熟了,但就是不知道那是什么,权且放到一边不管。”同年,他还在日记中写道:“我的天职就是不断在大自然中发现上帝的存在……”

回忆自己对自然科学产生兴趣这一戏剧性变化时,梭罗写道:

<<<
 记得当时我看着湿地,心想:要是我能认识这里所有的植物该多好!要是我能叫得出这里一草一木该多好!……我甚至想到要进行系统学习,从而能了解这里的一切……真没想到两年以后我就轻轻松松做到了……我很快就开始对植物进行密切观察,记下何时长出第一片叶子,何时开了第一朵花,不论早晚,不计远近,都认真观察记录,就这样有好几年……就这样,我跑遍家乡方圆三十英里的地方。有的特殊植物长在离家四五英里远的地方,而我半个月里会去观察十余次,就为了能确切知道它的开花结果,这同时还要去不同方向的一些地方观察另一些植物……
<<<


<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

哈佛大学斯比较文学教授斯维特兰娜·博伊姆在《[[怀旧的未来]]》中写道,“怀旧是一种丧失和位移,但也是个人与自己的想象的浪漫纠葛。怀旧式的爱只能够存在于距离遥远的关系之中”,

德国浪漫主义诗人诺瓦利斯曾提出一个著名的问题:“我们究竟去哪里?”在那个狂飙突进的年代,绝大部分人的答复可能是“去往未来”,但他的回答则是:“永远在还乡。”他以一种诗人的敏感,意识到看似不断进步、不断奔忙的现代社会,也是一个人们普遍疑惑方向在何方的时代,好像奔忙本身就是目的,而不知道在忙什么。正因此,他才强调要抽离出来,他说:“同外在世界相比,内在世界仿佛更多地属于我。它如此真切、如此秘密。人们情愿全然生活于它之中。它就是故乡。” 说起来,这是现代人都能理解的

那些现实中完全离不开现代城市生活的人们,还更向往重返田园梦想。这乍看起来是“想要回到过去”,但其实却又是“想要一个更好的未来”,只是这个“未来”的样子像是一个被美化了的过去。 生活在别处

简单地说,怀旧本是人之常情,但在现代处境下,这种情绪本身也被意识形态化了,它通常源于一种对现实生活的不满;但是与那种朝向未来不断变革完善的进步主义观点不同,这种“怀旧的未来”在设想一个“更好的未来”时却投射到了一个已经失落的理想上。他们“生活在别处”,但这个别处是在某个已不复存在甚至从未有过的家园那里。

正如本书所说的,“怀旧是一种丧失和位移,但也是个人与自己的想象的浪漫纠葛。怀旧式的爱只能够存在于距离遥远的关系之中”,

德国文艺批评家瓦尔特·本雅明对此有一段被无数人反复引用的描述:“这就是人们所描绘的历史天使形象。他的脸朝着过去。我们以为是一连串事件,他看到的却是一场灾难。这场灾难将残骸层层堆积起来,抛在他的脚下。天使想停下来唤醒死者,把齑粉碎片还原成一个整体。可是从天堂吹来一阵风暴,它猛烈地吹击着天使的翅膀,以致天使再也无法把它们收拢。风暴不可抗拒地把天使刮向他背对着的未来,而他面前的残骸废墟却越堆越高,直逼天空。这场风暴就是我们之所谓进步。”

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

这种误解也许在一定程度上源于一句话,这句话出自刘易斯·托马斯(Lewis Thomas)于1974年出版的那本精彩之作《[[细胞生命的礼赞]]》(The Lives of a Cel)。这句话是这样说的:“不能认为田野里的一只孤独的蚂蚁有多少想法。说真的,他只有被纤维串联在一起的几个神经元,完全不可能拥有一个头脑,更别说一种想法了。”刘易斯·托马斯至少在两点上错了。他说的蚂蚁不应是“他”,而是“她”,因为所有的蚂蚁社会大部分时间都仅包含雌性。至于雄性,正如我们已经讨论过的那样,通常生命短暂,它们唯一的使命是把精子送入蚁后体内的受精囊。更重要的是,不仅仅只有“被纤维串联在一起的几个神经元”。实际上,通过轴突、树突互相连接的神经元有近100万个,它们被组织成了一个神经系统,以及一个彩色插图34所示的结构惊人的大脑。正如我们刚才提到的那样,大脑中化学信号的察知和处理特别复杂。


<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>


香农的信息论:

''情报减去含义即为信息。''

信息到底衡量了什么?它衡量了我们所克服的不确定性。

但当一切都充满确定性的时候,并不能产生信息,因为没有什么可以传达。

即信息是随机的。它既不是完全不可预测的,也不是完全能够确定的。


<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

!! 引子

70多年前生物学家马丁·林道尔偶然发现一撮胡须一样悬挂在灌木丛上的蜜蜂:蜂群上的几只蜜蜂在跳摇摆舞,有的沾着烟灰而发黑,有的沾着砖尘而发红,有的沾着泥土而发灰。它们为什么这么脏?这一疑问从而揭开了蜜蜂的一段“最美妙的经历”:寻找新家。

!! 神奇的民主之旅

蜜蜂作为群居型动物,在严冬之后春暖花之时,为了给新出生的蜜蜂腾出生存空间,一个蜜蜂群落都会进行几次分家。和我们想想的不同,在蜜蜂群落里,不是由一个仁慈的独裁者蜂后统治的,也不存在一个无所不知的中央计划者来监督成千上万的工蜂。虽然蜂后处在整个运作的中心,由其成千上万的殷勤的子孙所供养,其最终目标都是为了促进蜂后的生存和繁殖,她仅是产卵者。初夏时节,当第一批卵开始孵出,蜂后会被工蜂们生拉硬扯的赶出蜂巢,开始第一次分家。

飞离蜂巢的老蜂后会带着三分之二的蜜蜂离开,暂时栖居在离蜂巢不远的树枝上,像悬挂着的一团云。其中有数百只工蜂会充当侦察兵的角色,开始在方圆十公里之内寻找新家。在最迟2-3天内,他们必须找到新家,要不然离开蜂巢所携带的蜂蜜将被耗尽,致使全体死亡。当寻找新家的侦察蜂陆续携带者自己找到的潜在蜂巢信息回来的时候,一场有趣的“民主选举”开始了。

每个携带新巢信息的侦察蜂返回之时,都会在蜂群上进行一场报告或演讲 --- 通过表演一种摇摆舞,把其发现的方位、距离、合意性加以公布。舞蹈的幅度代表着这只蜜蜂对其发现巢穴的宣传力度,认为自己发现的巢穴的价值越高,它表演的舞蹈循环次数就越多。这种强烈的舞蹈宣传可以引起那些保持中立的侦察蜂注意,在亲自考察后并认同,会跳同样的舞蹈,以示支持。而那些找到的巢穴并不太理想,舞蹈也不强烈的侦察蜂,在不久就会停止自己的宣传和推介。当支持某新巢穴,为某跳舞的蜜蜂达到一个法定的数量之时,也就是达到一定的阈值时,此巢穴即被认为是最终选项,蜜蜂们的民主选举即告结束。此时那些侦察蜂们会在蜂群上爬来爬去,并鼓起下腹向蜜蜂们吹哨,好像在说,“快醒醒,要搬家了!”,被唤醒的蜜蜂开始蠕动起来,振动翅膀,把自己加热到适合飞行的35度。在侦察蜂的引导下,保护着蜂后乔迁新居。

蜜蜂以一种非常巧妙的方式做到了这一点,支持各种巢址的侦察蜂进行坦率的讨论。这种讨论的运作是不是非常像政治选举?因为有多个候选者(巢址),有为不同的候选者做的互相竞争的宣传(摇摆舞),有支持这样那样的候选者的个体(支持一个巢址的侦察蜂),有一个中立选民群体(尚未忠于某个巢址的侦察蜂)。每个巢址的支持者也有可能变得无动于衷,重新成为中立的选民。选举的结果非常倾向于支持最佳巢址,既是因为这个巢址的支持者会制造最佳的舞蹈宣传,因而能最快地争取到改变立场的蜜蜂,也是因为这个巢址的支持者会最慢地回归中立选民地位。支持一个巢址(通常是最佳巢址)最终彻底主导竞争,以至于每只侦察蜂都仅支持一个巢址。一种没有异议的一致达成了。
!! 
!! 超级个体

在《哥德尔、埃舍尔、巴赫:集异璧大成》中,道格拉斯说,“蚂蚁群落在很多方面和大脑别无二致”。我之前在某一期提到过威尔逊的《蚂蚁的社会》(忘记哪一期了,威尔逊与《蜜蜂的民主》的作者也是师承关系),解释了为什么蚂蚁被称为超级个体。蜜蜂也类似。

蜜蜂的这些机制巧妙、复杂,把行为、通信系统、反馈回路结合在一起。一只侦察蜂相当于蜂群内的一个感觉单位,它把一个巢址的质量转化成了一种舞蹈信号的强度,信号的强弱促使其裁决团进行表决并作出反馈和行动。这与对猴子(代替人类)的决策认知实验完全一致(这里略),利用基本相似的信息处理方案,进化已经在蚂蚁(或蜜蜂)群落和灵长类动物的大脑中构建了的智慧力量。蜂群是一种民主决策团体,在非常简单的部分中创建一种复杂的认知单位。作者喜欢把蜂群想象成一种暴露在外的大脑。

!! 启示

来自渐新世的化石证明蜜蜂至少已经存在3000万年了,这是一个惊人的存在。在这漫长的岁月里,蜜蜂的这种民主抉择体系经受了千百万年自然选择的锤炼,它无疑是一种经过时间检验的获取集体智慧的方法。人类与蜜蜂一样是没有单独存在全知全觉个体的群居生物,我们从小小的蜜蜂那里可以受到什么样的启发那?我们现行的民主决策体系又是怎么样个情况那?

首先,蜂群整个决策过程中,没有权威者存在。它是一种完美的民主过程,权力在蜂群的侦察蜂之间平均分配,没有一个领导蜂指挥其他蜂该做什么。即使是蜂群遗传核心、无比重要的蜂后,也只是一个旁观者。这无疑让蜜蜂避开了群体决策的最大陷进,即一位颐指气使的领导者。也许这是根植于蜜蜂DNA里的自动程序,但对于具有独立意志的人类来说,在团队决策过程中,领导者的存在有其现实的意义,但其权力仅止步于维持程序的良好运转,而非其结果,也许这才是“公务员”的真正意义。

第二、蜂群的决策兼顾了公平、效率和精确度。每只侦察蜂都可以公平的表达自己的信息,他们相互依赖又各自独立。相互依赖是因为他们需要互相沟通,并把自己的消息最大化在蜂群中流传;相互独立是因为他们都有平等的表达机会,以便不遗漏最佳蜂巢选项。而某一选项的支持者一旦达到法定阈值,就立刻行动,这兼顾了效率。如果任由的民主争论无休止的进下去,群峰将受到天气、食物短缺等严重威胁。而人类在这一点上似乎最为欠缺。

第三、高度的利益共同体和相互尊重。工蜂的不能繁殖,意味着工蜂必须保护好蜂后及其有繁殖能力的后代,以便其基因可以延续和扩展,这是工蜂们的共同利益和终极目的,也是蜜蜂们紧密合作、相互尊重而不存在冲突的基础。如果用人类的表达方式,这被称为“共同福祉”。人类在共同利益的利用上可谓“灵活”,积极的一面,如在全球气候变化上做出的努力;消极的一面是,树立某种共同目标或利益而达到政治的目的,如特朗普竞选宣传的对华政策。

第四、值得引起注意的是蜜蜂这种决策机制,在人类社会中的极端性应用,我称之为“蜜蜂民主的倒影”。蜜蜂相对简单和机械的头脑促成了集体高效的决策。在人类的历史中,这种现象并不鲜见,如希特勒时期高度集权的独裁统治是建立在个体被洗脑而简单的基础之上的;某国某段时期的绝对集体主义,人民利益高于一切等。

第五、畅想一下人类未来的超级个体。道金斯在《生命》中说,“鸟巢可以说是鸟的一个器官,它的意义和一个心脏或肾脏意义一样,只是恰好在躯体外的...... 通过对鸟蛋或雏鸟的保护来延续鸟的基因。” 这被称为基因“扩展的表型”。就像蚂蚁、蜜蜂一样,人类对联网电子设备的无限的依恋,未来人类是否会借此进化为一个超级个体那?

.......

有人曾经说,蜜蜂是上帝派来的信使,要向我们展示,我们应该在甜蜜、美好、和平中生活。

希望是这样。

[[Λ-Reading #56|https://rizime.substack.com/p/952]]

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

通过进化心理学的知识求证佛陀当初说的关于人类的5大认知真相:

# 我们的快乐其实是基因设计出来的,基因的设定就是不满足(苦);
# 快乐和烦恼都是“感觉”(非我);
# 人本质上是由感觉驱动的(无我);
# 我们无法客观看待世间万物(空);
# 我们能够从烦恼和苦中解脱出来(冥想)。

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^202010]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; <$view field="description"/> -《<$view field="book_title"/>》 //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget"  open="no">

<$transclude/>

</$details>



<$transclude mode="block" tiddler=booklogsinfo/>

人和人的智商差别其实并不大,而为什么在现实生活中人和人又有那么大的差别那?除了情商之外,就所谓的聪明的人和愚笨的人之间的区别,主要来自思维方式,对事物的认知和理解。而好的或者科学的思维方式的唯一检验标准就是看其是否能够尽可能的接近真相,或者本质。什么是本质?本质是决定事物为何为其的属性,是引起问题或现象发生的、隐藏于背后的真正原因。这也是为什么Λ-Reading不厌其烦的在这一块下功夫,强调认知而非现象、工具、技巧以及事物的细枝末节,因为本质的反义词是表面,也可以说是不重要的细枝末节。当下的我们身处信息泛滥的洪流,如果囿于细枝末节或者表面,无论花费多少时间,都无法得出逻辑清晰的答案。

科学界有一套公认的行之有效的基本研究方法,还原论,或者称之为还原主义。其基本方针是将复杂的事物逐一分解,找出构成要素并分别理解,以此来理解整体。比如在物理世界里,将分子分解成原子,原子分解成原子核与电子,最终分解成构成物质的最小单位——基本粒子,再借此窥探宇宙全体。我深受这套方法的影响,许多事情我会不自觉的按照这样的思维方法见招拆招。例如说,男性对女性所谓好身材 --- 胸部和臀部 --- 的痴迷,其本质上是人类基因里最原始的对生殖需求的遗留。这种方法确实效力惊人,但也有一些问题,在具有庞杂关系的事物面前就会让人迷惑。最近看到一个来自MIT(麻省理工)明星课程 --- 系统动力学 --- 方法论,似乎有用,或至少是一种辅助思维工具。

(系统动力学 System dynamic,是美国麻省理工史隆管理学院于1950年代综合了系统理论、 控制论、伺服机械学、信息论、 决策理论以及电脑模拟所发展出来的。)

系统动力学特点就是其不囿于表面现象及细枝末节,去发掘事物背后隐藏的模型及动力机制。所以这套深度思考的方法的核心就是:模型+动力机制,即,“本质”=“模型”ד动力机制”。

举个最简单的例子:声称可以轻松赚大钱的投资大半都逻辑不通。为什么那?通过运用系统动力学仔细思考,就会发现轻松赚大钱这类事情根本不成立。

如果真有这样轻松赚大钱的机会,跟谁都不说,自己一个人闷声发大财多好,为什么特意要塞给别人去做呢?轻松赚大钱这一模型本身就有问题。再退一百步说,假设轻松赚大钱这个模型是真的,这时就产生一个新的疑问,钱究竟从何而来?在不发掘新资源的情况下,这世间大半是零和游戏。考虑到动力机制,如果很多人都知道有这个机会,每个人赚的钱就会大幅度减少,这个模型很快就有了破绽。

结合例子理解一下两个核心要素:模型和动力机制。

模型是什么?模型是剥离无用的细枝末节后的一张抽象图,是指产生某种现象的结构,包括构成要素及其相互关系。在系统动力学里把称之为“因果循环图”、“因果连锁图”,通过圆形或矩形展示构成要素,辅以箭头表示相互关系。双11要来了,就两个企业的价格战来说,是这样的模型:


模型中广告内容及手法都是不重要的细枝末节了。只要模型不改变,这种正反馈的循环就会一直持续到双方精疲力竭。

而所谓的动力机制,是以长远目光观察模型产生的现象,以及今后将会产生怎样的结果及动向,即会出现怎样的模式。说的简单点,就是把模型放在时间轴上进行观察,互联网行话就是跑一下数据,静态图中绝不存在动力机制。从刚才广告费日益增长的模型中可以看出,随时间流逝广告宣传费在交替增长的动力机制,如下图。思考动力机制的关键是看清楚模型中的因果连锁。


“本质”=“模型”ד动力机制”。通过动力机制产生的现象,发现问题,而改变模型才是解决问题的真正方法。

所以,系统动力学深度思考法,就是思考事物的模型及动力机制。越复杂的事物,用模型与动力机制来思考的话就越简单。

[[Λ-Reading #57|https://rizime.substack.com/p/57]]

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

无保护攀岩与一般攀岩的最大区别就是没有了维系生命的那根绳索。攀岩过程中哪怕是最微小的突发事件:一颗沙砾的松动、一棵小草、一只小鸟以及一滴汗,都有可能造成手滑、分心、惊吓而坠入深渊,并绝无生还的机会。所以在整个过程中容不得半点的错误。而身处绝壁之上,回头望是云、是无尽的远方和恐惧。

> (前三个绳段相对容易),等我爬到“阻隔板”(一个困难点)的时候,那就像是“游戏开始了”... ... 我一完成那个向上抢一小步的动作并抓住那个关键的手点时(这夸张了,在悬崖上小跳👍),我知道我不会脱落了,信心大涨。
>
> 在“阻隔板”上方,我开始攀爬那段180英尺长的5.12d难度的夹角线路,那是整条路线的难点。我撑着夹角的两边开始往上爬,把双脚小心地放在中间裂缝两边的砂岩细小的褶皱上,然后平稳地向上,从一个点到下一个。此处的岩壁是完全垂直的,因此你必须精确地判定那些岩点位置。一开始撑着夹角两侧的岩壁向上的这80英尺(约24米),我可以在小的岩点上随处休息。但之后我不得不将对撑向上改为侧拉向上。现在我用双手抓住裂缝边,向左后方靠,双脚在对面的岩壁上向上走,直到我的鞋底只比我下面的手低两英尺。虽然如果裂缝的边缘不很明显或向外张开,或你双脚踩着的岩壁太过光滑,侧拉就会非常吓人。你觉得你会突然抓不住,不由自主地向后翻过去,跌进下方的空中。但是如果双脚放得不够高,你将会滑下去,你抓着裂缝的双手也就不起作用了。不管是哪样,你都会掉下去。
>
> 我把第一指节伸进岩缝,将它们稍微支起,恰好在裂缝中锁住,我感觉绝对安全。不论什么时候,我都只有很少部分的皮肤在岩缝里面——差不多只有两根手指的前半截——并且我的脚趾并不在岩点上,而只是贴在岩壁上。所以其实我身体只有很少的一部分接触着岩壁。耳边有微风吹过,我感觉自己踏入了空中,那是一种不可思议的感受。我百分之一百地确定,我不会脱落,正是那种确定感让我不会脱落。
>
> 在那么高的地方,没有嘈杂的声音,只有平和与宁静。

这真是一场用生命在绝壁上完成的芭蕾。大山不是玩物,大山是共舞者,抓住她、拥抱她,分享你的呼吸,分享你的心跳,在专心、专注和沉静下征服她。

站在山顶,他快乐地咧嘴而笑,说道:“我真觉得它太赞了!”

当面对无数人觉得不可思议而不断的询问,“你害怕吗?你感到过恐惧吗?”,他说:

> 对于恐惧我思考过很多。对我来说,关键问题不是如何无所畏惧地攀爬——那是不可能的——而是当它侵入你的神经末端之时,要如何处理这种情绪。

“风险和后果是两回事。徒手攀岩的风险很低,只是后果很严重。”“我对风险和攀岩的看法让很多人吃惊。我不认为让人丧生的是超级难的路线,甚至无保护独攀。我认为很多中等难度的攀岩反而可能会致命。”

亚历克斯对风险的看法看似奇怪,若认真思考一番,其绝对有其合理的逻辑和哲学意味。就以车祸为例,我们在街上只要遵守交通规则行走,这一行为是低风险而可控的,所以我们不觉得在街上走有啥恐惧。只是一旦出了车祸,这个结果很严重而已。所以关键是怎么做到风险的可控,对亚历克斯来说就是反复的演练,反复的在脑中复盘。而对他来说最大的风险是什么?他说:“不是外界的风吹草动,而是自己,自己内心的情绪和压力。”

NAUTILUS(鹦鹉螺)杂志曾经刊发过一篇文章,对亚历克斯[[如何克服恐惧进行了深度解析|http://nautil.us/issue/39/sport/the-strange-brain-of-the-worlds-greatest-solo-climber]]。文章说,他主要用了两种办法来打造自己的精神盔甲(mental armor),一个是复盘记忆,一个是视觉化预演。 所谓的复盘记忆,就是把你经历过的恐惧事件,进行一次复盘,把其中每一个“恐惧点“列出来,写下自己应对和改善的办法。科学家孟菲尔说,其实每个人都会复盘记忆,只是我们平时意识不到这一点,但是像亚历克斯这样刻意复盘记忆,把每一次的恐惧回忆,都变成可供学习和提升的“经验库”,则是一种非常有效的方法。 他道,可能在自己开始想起“这是我某危险”之前,杏仁核就启动了,所以他的身体开始做出害怕的反应,手心出汗、恐惧的情绪呼啸而来。 但这时,你要通过理智的声音告诉自己,那危险已经不在那了,就算是在,它也没做什么,只是碰巧在那而已。这么想,就能抑制杏仁核(人脑中的危险反应表现系统,可以不经大脑思考的情况下作出快速反应,在基因层面杏仁核很难受到破坏)的剧烈活动,将过往作为一种经历,而不再是单纯的恐惧情绪。 视觉化预演也能起到同样的作用,对自己未来要做的事情在脑海里进行视觉化想象,越细致越好,既要想象自己完美实现目标的样子,也要想象会遇到哪些问题、该如何解决。

正如纪录片所示,对亚历克斯脑部扫描结果显示,他的杏仁核确与常人不同,一般性的危险已经不能激活它了。专家认为这是亚历克斯长期面对恐惧从而降低了杏仁区的敏感度。而亚历克斯并不这么认为,他说:

> 但对我而言,那位神经生物学家弄错了。我跟其他人一样,会感觉到害怕。危险令我恐惧。我的回答还是和过去一样,如果我有什么天赋的话,那就是,在不容许出错的情境面前,我能够不自乱阵脚。我莫名地就知道,在一些关键时刻,比如2008年在半穹顶“感谢上帝平台”上方的那些动作卡壳时,我该如何深呼吸,让自己平静下来,然后从容面对它。

在面对一些人质疑亚历克斯不珍惜生命而冒险,“如果你不相信有上帝或来世,难道这不会让这一生更加珍贵吗?”他的解释也颇具哲学意味:“我想是这样。但仅仅因为某件事很珍贵,并不意味着你就必须去小心呵护它。就好像住在城郊的中产阶层有了一辆新得发亮的SUⅤ,却害怕弄出凹痕一样。拥有一辆很棒的车,但如果你怕去开它,那还有什么意义?我在试着开我的车去没去过的有趣地方,并且我在尽最大努力不撞车,但至少我开它上路了。”

生命的意义究竟何在?

从最现实的维度而言,生命的意义往往就是你把最多时间和精力花费其中的事。是汲汲营营于生存和物质,被生活中的问题和框架推着前进?还是遵循内心的召唤,追寻梦想和理想的脚步?

与村上春树的故事给予我们的启示不同,亚历克斯无保护攀岩的事迹,除了给了我们人生另一种极端体验,让我们认识到精神(个人意志)的力量和边界,以及如何面对极端情况,成就专家或专业人士的唯一途径是:练习,Deliberate practice。还有就是让我们思考生命的意义是什么?

最后用罗素的一句话结尾:

“如你想象的那样去生活,否则,你会如你生活那样去想象。”

[[Λ-Reading #60|https://rizime.substack.com/p/60]]

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^202011]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; <$view field="description"/> -《<$view field="book_title"/>》 //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget"  open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^202012]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; <$view field="description"/> -《<$view field="book_title"/>》 //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget"  open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^202001]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="description"/> //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^202002]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; 《<$view field="book_title"/>》- <$view field="description"/> //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^202003]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; <$view field="description"/> -《<$view field="book_title"/>》 //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details field="caption"  open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^202004]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; <$view field="description"/> -《<$view field="book_title"/>》 //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details field="caption"  open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^202005]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; <$view field="description"/> -《<$view field="book_title"/>》 //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details field="caption"  open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^202006]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; <$view field="description"/> -《<$view field="book_title"/>》 //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details field="caption"  open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^202007]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; <$view field="description"/> -《<$view field="book_title"/>》 //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget"  open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^202008]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; <$view field="description"/> -《<$view field="book_title"/>》 //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget"  open="no">

<$transclude/>

</$details>



<$list filter="[tag[Journal]]+[!sort[created]regexp:created[^202009]]"> 

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; <$view field="description"/> -《<$view field="book_title"/>》 //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget"  open="no">

<$transclude/>

</$details>



<<tabs "[[2020年12月日志]] [[2020年11月日志]] [[2020年10月日志]] [[2020年9月日志]] [[2020年8月日志]] [[2020年7月日志]] [[2020年6月日志]] [[2020年5月日志]] [[2020年4月日志]] [[2020年3月日志]] [[2020年2月日志]] [[2020年1月日志]] [[2020读书目录]]"default:"Most Recent Journal" class:"tc-vertical">>   
"""
2021年1月1日
1. 《



"""



--

[[正读]] | [[想读]]  | [[2020读书目录]]| [[2019读书目录]] |  [[2018读书目录]] | [[2017读书目录]] | [[2016读书目录]] | [[图书检索|Book List]] | [[读书日志|Reading Logs]] |[[Λ-Reading]]

//注: 标 @@color:green;^^★^^ @@符号的为推荐阅读书目//

<$button message="tm-close-tiddler">Close Me!</$button>
<<tabs "[[2021年12月日志]] [[2021年11月日志]] [[2021年10月日志]] [[2021年9月日志]] [[2021年8月日志]] [[2021年7月日志]] [[2021年6月日志]] [[2021年5月日志]] [[2021年4月日志]] [[2021年3月日志]] [[2021年2月日志]] [[2021年1月日志]] [[2021读书目录]]"default:"Most Recent Journal" class:"tc-vertical">>   
<$transclude mode="block" tiddler=bookinfo/>
<a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>

<div class="tc-subtitle">

<<<
@@color:#808080;''书名:''《{{!!title}}》;
''作者:''{{!!author}};
''国别:''{{!!location}};
''系列'':{{!!series}};
''分类:''{{!!genre}};
''相关:''{{!!relation}}
@@
<<<
</div>

<$list filter="[field:book_title[2666]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[50:伟大的短篇小说们]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
[img [https://one.rizi.me/Photos/rizime/philosophy.png]]

Optimist 乐观主义者、 pessimist 悲观主义者、 physicist 物理学家、relativist 相对主义者、utopist 理想主义者(乌托邦)、skepticism 怀疑主义、nihilism 虚无主义。

悲观者常常正确,乐观者可能成功。
<$transclude mode="block" tiddler=booklogsinfo/>

''贝叶斯定理''(Bayes' theorem)是概率论中的一个定理,描述在已知一些条件下,某事件的发生概率。这一定理的主要应用为贝叶斯推断,是推论统计学中的一种推断法。

贝叶斯定理作为普遍的概率,适用于一切概率的解释。同样,也可以用作一些社会现象的阐述。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>

<div class="tc-subtitle">

<<<
@@color:#808080;''书名:''《{{!!title}}》;
''作者:''{{!!author}};
''国别:''{{!!location}};
''系列'':{{!!series}};
''分类:''{{!!genre}};
''相关:''{{!!relation}}
@@
<<<
</div>

<$list filter="[field:book_title[被遗忘的士兵]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$transclude mode="block" tiddler=bookinfo/>
前面提到[[中文阅读是基于词的阅读|为何素心素地素文方是大文章]],在读者阅读过程中会自动的进行对句子进行词组切分。古代中文,也就是文言文是没有词这一说法的,字是最基本的单元,字之上就是句子了。词的概念算起来也就是不到百年,所以在中文阅读中,字仍然是影响阅读的重要因素之一。

西语中词的基本单位是字母。在西语阅读过程中,[[眼球的阅读轨迹|阅读行为眼动模型]]基本上落在一个单词的中间偏后部位。中文字的组成属于部件结构 --- 是由若干个部件组成的,那么中文字的构成部件,也就是偏旁部首等是否会影响中文阅读那?

研究结果显示。中文字如果结构复杂 ---笔画比较多的字与笔画少的字或词相比,读者对笔画数多的字或词的识别更困难,所需时间更长,这被称为“笔画数效应”。读者在阅读过程中,对汉字的注视时间和笔画数有关 --- 西语体系中与字母的长度有关,当汉字笔画从1画增加到24画时,其注视时间增加了106ms。(平均每增加1画,注视时间就增加4.6ms)。

和西语阅读单词长度影响眼球运动轨迹一样,中文字的笔画数也影响眼球注目位置,特别是注目范围内的首字的结构。首字笔画数之所以能对目标词的首次注视位置造成影响,可能是由于汉语读者在阅读过程中从副中央凹区域获得了双字词首字的笔画数信息,此信息将引导着读者的眼跳行为。

邻近词(大小)效应(或称家族效应,neighborhood size effect/family size effect)指对单词的识别时间受那些与该单词具有相似词汇特征的邻近词的影响。单词的正字法邻近词越多,对其加工的速度越快。家族效应同样也适应于中文阅读,在汉语词汇识别时表现出正字法邻近字的促进效应以及高频邻近字的抑制效应。

2018年08月13日周一上午12:14:15////
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>
我在对认知科学和科技哲学方面阅读和整理过程中,经常会产生一些困惑:这样的法则或原则科学吗?什又么是科学?怎么证明证明科学的科学性。例如,[[克拉克基本定律]],还有一些人文性法则 <<tag "Thinking Models">>。后来我主观的认为自然科学法则都是科学的,人文领域的法则都是可疑的。

卡尔·波普尔的可证伪说是目前相对比较经得起推敲的科学理论。他对经典的(通常的)“观测-归纳法”进行了批判(我一直对归纳法持严重对怀疑态度,归纳法是经验主义,也是普罗大众最容易犯错的认知陷阱,心理上会期待自我验证。),提出了科学和非科学的界定标准:''科学的表述在于其是可证伪的''(这与逻辑实证主义<<footnote "❶"逻辑实证主义运动可以被看做是经验主义哲学的发展。">>和“休谟的叉子([[休谟问题]])”<<footnote "❷"休谟对知识的二分法被称为“休谟之叉”,在休谟看来,人类认识的对象可以分为两类:一类是“观念之间的关系”,一类是“事实”。与此相应,人类所有的知识也分为两类:一类是具有直观性和逻辑必然性的知识,包括直观、数学和逻辑演绎的知识,这是关于观念关系的知识,另一类是需要经验才能做出判断的知识,它以经验式推理为特征,包括关于实际的存在和性质方面的知识,这是关于事实的知识。">>又是不同的)。

卡尔·波普尔认为科学证伪原则(或证伪主义)应采用试错法,大胆地提出假说和猜测,然后去寻找和这一假说不符合的事例,用经验对其验证。根据事例对假说进行修正,不断重复这一过程,乃至将最初的假说全盘否定。试错法对理论的修改和完善是没有止境的,试错法的结果只能是一个较好的假说,但不是最好的假说。最好的假说是终极真理的代名词,和科学精神相悖。

这么说来,世界上存在终极真理吗?[[第一原理]]可能仅仅是一个动态概念而非恒定远离。

按照波普尔的“科学标准”,数学、逻辑学都是非科学的,因为它们都不可被证伪(数学和逻辑学之所以被划分到了非科学的原因在于他们并不需要经验去检验它们,他们被休谟称为''必然真理'')。

//2019年09月08日周日下午11:21:21//


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<<<.tc-big-quote
 ''野地里蕴涵着这个世界的救赎。'' ---梭罗
<<<

''博物学''(Natural History)是自然而然的学术、知识、技术和技能,是在有限的好奇心、欲望观照下的产物。博物学产生于远古以来百姓日常生活的正常欲望、自然需要,而不是现代“高端”人群试图获得超额利润、竞争优势的过分需求。

!! 博物学阅读书目:

<$details summary="相关书目">


<$list filter="[field:series[博物学]] +[!sort[created]]">
<li>
《<$link><$view tiddler=<<CurrentBook>> field='title'/></$link>》
</li>
</$list>

</$details>

!! 相关阅读笔记:

<$list filter="[field:topic[natural history]] +[!sort[created]]">

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  @@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> @@  - <$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/>  
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-60]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-60]]"> @@color:gray;^^有点久了^^@@</$list>


<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>
<<<
“博弈论研究的是人们在战略情景下的行为方式。这里的‘战略’是指,对弈双方在平等的对局中各自利用对方的策略变换自己的对抗策略,从而达到取胜的目的。战略思维不仅在跳棋、象棋和棋牌上至关重要,在许多商业决策中也是至关重要的。”—经济学家Greg Mankiw。
<<<

博弈论(Game Theory):一种能够让你的竞争对手的最大优势最小化的策略。
!! 结构

<<textSliderNoButton "''博弈论''" 
"*[[囚徒困境]] (Prisoner's Dilemma)"(Prisoner's Dilemma)
">>

返回[[思维模型|Thinking Models]]
[[雅记清词写流韵]]上有何鹏回忆王国维的一篇文章这样说道:

<<<
当时他研究的经史范围很大,凡甲骨文、经书的注疏、古代的典章文物、元代的史学和西北的地理等,皆无一不精。所作《殷周制度论》及《流沙坠简考释》诸书,义据精深,实近世经史学的名著。在这时期中,他冀求的是安定,他想压伏他的内心的冲突。然而在民国十五年中国又起了第二次革命,并且这次革命的光景与辛亥大不相同,辛亥不过是资产阶级之要求民主意义的革命,这次革命却是农工和小资产阶级的联合阵线,他们的主张是相同的,他们的口号是相同的,凡是社会上复杂的意识都要排除,尤其是一班所谓“遗老”者也,虽不敢反抗革命,至少是不赞成革命,更为他们所深恶的。''所以革命军一到长沙,叶德辉是被杀了,这个消息传到北京之后,他是震恐的不得了,以为祸难若至,或有更甚于甲子之变者。''便在十六年五月初三这一天,在北京颐和园自沉了。留下了这几句遗嘱:“五十之年,只欠一死,经此世变,义无再辱。”那种着重于制伏自己的倔强之态,依然跃于纸上。
载第31期(1937年6月卅出版)
<<<

这位何鹏认为王国维为恐惧革命而死,也就是前文 --- [[五十之年,只欠一死]]所述的“反共及痛恨北伐说”。
<a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>

<div class="tc-subtitle">

<<<
@@color:#808080;''书名:''《{{!!title}}》;
''作者:''{{!!author}};
''国别:''{{!!location}};
''系列'':{{!!series}};
''分类:''{{!!genre}};
''相关:''{{!!relation}}
@@
<<<
</div>

<$list filter="[field:book_title[不成问题的问题]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
''“不二论''”(Advaita),字面解非二元或不二,是一种一元思想体系。''一元论''(Monism)认为世界只有至少一个本原的哲学学说,乃本体论的分支。而相对,或者相异的是''“二元论”'',二元论(dualism)是一种本体论思想,二元论则认为世界由两种不可缺少且相互独立的元素组成,世界的本质是物质和意识两个实体的观点。

''“不二论”''强调自我和梵的绝对“一”和“同”,也就是One and the same。梵,是一种精神产物,仪式(或者祭祀)获取的神秘力量,是宇宙的超越本体和终极实在,这种终极观是实体性的,在思想的最高位置,现世相对来说则只是不真的现象。“不二论”就是指我和梵的唯一、不二,是高度的精神存在,如梵心指清静之心,本体的我思想上达到无我、无它、无世界,我是不二的,无处不在,现实即不存在或“终极实在”一种扭曲、不充分的表现。追求梵心、梵志必须舍弃与现实的根本联系。

《奥义书》主旨是梵我 <<ref "[1]">> 合一,“梵”即我,我即“梵”,人我要没入梵之中,合而为一,了无所限,不死不生。梵与“我”本是息息相关,但由于现象的执迷以致隔断,透过观念与实践,自觉修证,可以恢复本有的大我,实现梵我合一的终极人生境界(有学者研究称,其与服用LSD(D-麦角酸二乙胺)所致的幻觉相似)。

那么“梵”的超越本体的神秘力量从何而来?如果按照“不二论”和《奥义书》所示,“我”和“梵”之间是有一段阻隔或者过程的,要达到“不二”,即“梵”即我,我即“梵”的“同”,即Same,就是修行的过程,依凭内心的历练,消灭“我”之外的一切现世的幻想,从而把渺小的“我”自我,成我为“我佛”,即“梵我合一”的妙境。超自然的力量是在“我佛”之后,至此,可以揭破宇宙的迷幕,超于轮回业报以外,生命获致最终极的自我实现。而从我到“梵”实证的方法论,即法门或梵门,是道;而梵门的术,即为日常修行的布施、瑜伽、烧香、拜佛、口诵等仪式的实践。

以上是“不二论”与“梵”。而佛教,正与之相反。

释迦牟尼实质上是反对梵我这种实质的表达方式。佛家三法印讲的“诸行无常,诸法无我,涅槃寂静”,与正统的梵我表达方式对立。“无常”、“无我”意味着,不但一切法空,而且“我”亦是空的。“梵”与“我”那种肯定性的终极实在观,在佛家的表达中消失了。佛家坚持最终的解脱或涅槃,只能与“无常、无我”这种观念相连,断定梵我的终极性,对于开启无执智慧是有害无益的。也就是说,佛家连“我”也彻底消灭,无“我”,也无不二,是空,是Nothing!

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@ <<footnotes "[1]" "梵语“我”意为真正的我、内在的我。古代汉译典籍中就将其译为“我”,不与普通的人称指代加以区别化,现代常译为“梵我”以示区别,也有意译为主体,或俗称的灵魂。">>
<$transclude mode="block" tiddler=booklogsinfo/>
2018年底我有计划地安排在2019年元旦开始看这本书 —《黑天鹅》。正如这本书的副标题:如何应对不可预知的未来,未来有正向和负向,如何在当下寒冷的大环境中正向而进,逆势而行,应对不可预知的未来?这确实是一个大问题。

王兴在饭否这么点评过去的2018年:“这是过去10年中最坏的一年,也是未来10年中最好的一年”。好狠的一句话!这句话同样适应于评价2019年。在未来的一年,或者接下来的几年,既潜伏着黑天鹅,灰犀牛也会随时奔袭。

!! 什么是黑天鹅(效应或现象)?

''黑天鹅效应''(英语:Black swan theory)是指极不可能发生,实际上却又发生的事件。主要具有三大特性(来自[[维基百科|https://zh.wikipedia.org/wiki/%E9%BB%91%E5%A4%A9%E9%B5%9D%E6%95%88%E6%87%89]]):

*这个事件是个离群值(outlier),因为它出现在一般的期望范围之外,过去的经验让人不相信其出现的可能。
*它会带来极大的冲击。
*尽管事件处于离群值,一旦发生,人会因为天性使然而作出某种解释,让这事件成为可解释或可预测.(此非要件,只是解释人类现象的一环,仅满足前两者即可称之黑天鹅事件)

纳西姆·尼古拉斯·塔勒布在《黑天鹅》中总结“黑天鹅”必须满足以下三个特点的事件:
 

<<<
首先,它具有意外性,即它在通常的预期之外,也就是在过去没有任何能够确定它发生的可能性的证据。其次,它会产生极端影响。再次,虽然它具有意外性,但人的本性促使我们在事后为它的发生编造理由,并且使它变得可解释和可预测。
<<<

!!“黑天鹅”现象
互联网即黑天鹅现象的典型表现。互联网最初发明于二战期间,主要应用于军事行动时各地的互相通讯,战后此技术转为民用,从此以迅雷不及掩耳之势得以发展和扩张性应用,对世界各个行业造成颠覆性影响,并改变着人们的生活方式。互联网不经意的发明和超乎预期的影响,是现代最大的一只“黑天鹅”。在看一只小一点的黑天鹅 — 伟哥,伟哥最初是以治疗心血管疾病被研制,对男性性功能的治疗作用是在后期临床观察中被发现,从此成为给世界上男人带来自信的神奇蓝色小药丸。

!!为什么我们会视黑天鹅而不见:

# 认知自大以及随之而来的未来盲目性;
#柏拉图式的分类概念,或者说人们如何被简化愚弄,尤其当他们在一个不存在专家的学科里获得了学位时;
#错误的推理方法,尤其是不考虑黑天鹅现象的平均斯坦方法。

!!论据和方法
作者在阐述黑天鹅的产生、发现、监控、遏制并行动时提到的一些论据和结论非常值得深思和研究。
忽视黑天鹅现象的两种内在机制:证实谬误和叙述谬误。

''柏拉图化(柏拉图式 Platonic)'',柏拉图化是指事件被学者或者专家归纳、简化的现象。由于只关注那些纯粹而有明确定义的“形式”而导致的错误称为柏拉图化,这些形式包括物体(如三角形)、社会概念(如乌托邦,即根据某种“理性”蓝图建立的社会),还包括国家。由于柏拉图化,所以大部分人对另外一些没有被定义或者没有明确形状或概念的事物忽略,而学者对事物的分类总会造成复杂性的降低,这是黑天鹅事件的发生器,潜伏着黑天鹅。

柏拉图化是自上而下的、程式化的、封闭思维的、自我服务的、商品化的,非柏拉图化是自下而上的、开放思维的、怀疑的、经验的。

''证实谬误'',我们只关注从已观察到的事物中预先挑选出来的那部分,从它推及未观察到的部分:
或者说我们如何错误地忽略了图书馆中未被开发的部分,也就是倾向于看到能够证实我们已有的知识,而不是未知的知识的东西。''读过的书远远不如未读的书有价值。''而被我们忽视的证据称为沉默的证据。

''叙述谬误'',我们用那些符合我们对明显模式的偏好的故事欺骗自己:

叙述谬误指的是我们无法在不编造理由或者强加一种逻辑关系的情况下观察一系列事实。对事实的解释会与事实混在一起,使事实变得更容易被记住,更符合道理。这种倾向的坏处在于它使我们以为对事物有了更好的理解。叙述行为来自一种根深蒂固的简化事物复杂性的生物需要,因为人类的本性里面喜欢简单的故事,喜欢被总结的事物,喜欢简化(也就是减少事情的影响因素)。(但这一点似乎和奥卡姆剃刀有所违背,见[[思维的惰性]])。

怎么摆脱叙述谬误?通过提出假设和进行检验。强调实验而非讲故事,强调体验而非历史,强调客观知识而非理论。另一个方法是预测并记录预测的结果。

''游戏谬误'',游戏谬误——愚人的不确定性。游戏谬误的一个主要表现:那些应该提醒我们注意不确定性的人不但没有做到这一点,还通过一种秘密途径误导我们,让我们相信事物的确定性。赌场是游戏谬误的典型表现案例,在赌场我们知道规则,能够计算概率。赌博是被简化和驯养的不确定性,是温和的不确定性,属于平均斯坦。赌场把数亿美元花在赌博理论和高科技监视系统上,但风险却来自他们的考虑范围以外。

另外,在游戏(赌博)中,用概率论能成功地计算概率。并且,正如我们倾向于低估运气在生活中的作用,我们还倾向于高估它在概率游戏中的作用。
游戏谬误存在于以下随机环境:随机走动、掷骰子、抛硬币、布朗运动(即花粉颗粒在水中的运动)等。这些环境具备一定随机的性质,但并不是真正的随机性,称之为原始随机性或许更准确。

''沉默的证据'':美化的东西和柏拉图式的简化东西天生容易被看见。这是知识问题的简单延伸,只不过我们看不到的那一面容易被人们忽视而已。这也是沉默的证据问题。它解释了我们看不见黑天鹅现象的原因:我们为已经发生的事担忧,而不是为那些可能发生却实际上没有发生的事。它解释了我们进行柏拉图化的原因,我们喜欢已知的模式和有条理的知识,达到了对现实视而不见的地步。

''思维的懒惰'',见[[思维的惰性]]。

!!观点:

''关于历史:''
世界是通过大的随机变化前进的。

''关于知识:'' ''对许多人而言,知识的强大作用在于制造自信,而不是提高能力。''
我们从过去获得的知识实际上顶多是无关痛痒或虚假的知识,甚至是危险的误导。
我们的知识在增长,但它受到自信增长的威胁,它增长了我们的知识,同时也增加了疑惑、无知和自负。

''关于概率'':概率是一种自由艺术。它是怀疑主义的孩子,而不是一种工具,供随身带着计算器的人用来满足他们制造令人炫目的计算结果和确定性假象的愿望。

''关于专家'':可悲的虚有其表。

> 保罗·米尔(Paul Meehl)和罗宾·道斯等研究者否认专家的能力,他们告诉我们“专家”是最接近骗子的人,他们的思考能力比只使用一个变量进行计算的计算机好不了多少,他们的直觉妨碍了他们的思考,并使他们变得盲目。

不论任何人告诉你任何事,对专家思考过程的错误率提出疑问都是有好处的。不要质疑他的过程,只要质疑他的自信。

因变化而需要知识的事物,通常是没有专家的,而不变的事物似乎会有专家。也就是说,与未来有关,并且其研究是基于不可重复的过去的行业则通常没有专家。

专家就是一群习惯“筛选”的思维狭隘的人。专家的问题在于他们不知道自己不知道什么。

''关于预测'':预测之耻

人们喜欢并热衷预测(这是一种认知自大,面对知识局限性的自大。我们高估自己的知识,低估不确定性,低估未知事物的范围。),但是糟糕的是人们不提预测方面的记录。对一个信息不完整或信息缺失的不具随机性的变量的猜测,与对一个随机变量(比如明天的失业率或明年的股票市场情况)的预测是没有区别的。从这个意义上讲,猜测(我不知道但别人可能知道的事情)与预测(还没有发生的事情)是同一回事。

''关于“信息”'':信息对知识有害。

把一张模糊的消火栓图片——模糊到使他们无法认出图片上是什么——给两组人看。对其中一组,分10次逐步提高图片的清晰度,对另一组分5次提高清晰度。在某个使两组人看到相同清晰度图片的时候停下来,请他们说出看到的是什么。经过较少中间步骤的那一组可能更快地辨认出消火栓。这意味着什么?你提供的信息越多,他们就会形成越多假设,他们的结论就越糟糕。他们看到了更多的随机噪点并将其当成了信息。(这让我想起了一个经典故事:一位年轻的炼金术士有一次被通知,他如果能背诵一种公式,便能使铅转变为银,铜转变为金,而唯一的条件是,当他背诵公式的时候,绝不能想到白象。他学会了公式并试图背诵,不幸他不能使公式生效,因为他一直在认真地不要想到白象。)

我建议,如果你想一步跨入更高级的生命形态,与动物的距离越远越好,那么你最好远离叙述谬误的来源,关掉电视机,尽可能少读报纸,不看博客,训练推理能力以控制决策,对重要决策注意避免使用系统1(即启发性或实验性系统,见[[思考快与慢]]),训练自己辨别情感与经验事实之间的区别。这种对毒害来源的避免还有一个好处:它会改善你的身心状况。同样,请记住在概率(一切抽象概念之母)方面我们是多么肤浅。你不需要再做什么旨在对周围事物有更深理解的事。首要的是,要学会避免“过滤性错误”。

预期中2%的错误率通常实际上达到15%~30%。

!!有趣的案例 
''感恩节的火鸡'':“喂你的那只手也可能是拧断你脖子的那只手”。

> 想象一只每天有人喂食的火鸡。每次喂食都使它更加相信生命的一般法则就是每天得到“为它的最大利益着想”(政客们都这么说)的友善人类的喂食。感恩节前的星期三下午,一件意料之外的事情将发生在它身上,从而导致一次信念的转变。(出自罗素)

''自负的泰坦尼克号船长'':无知的经验主义。经验并不可靠。

> 根据我所有的经验,我没有遇到任何……值得一提的事故。我在整个海上生涯中只见过一次遇险的船只。我从未见过失事船只,从未处于失事的危险中,也从未陷入任何有可能演化为灾难的险境。 ——E·J·史密斯,泰坦尼克号船长,1907年 史密斯船长的船于1912年沉没,成为历史上被提起次数最多的沉船事故。

你的幸福感更多取决于正面情绪出现的次数,心理学家称之为“积极影响”,而不是某次正面情绪的强度。

''叙述的力量'':
读一读这句话“国王死了,王后也死了”,同“国王死了,接着王后死于悲伤”比较一下。

> 小说家E·M·福斯特(E. M. Forster)所做的这个练习说明了信息的简单罗列与情节的差别。但请注意一个关键:虽然我们在第二句话中增加了信息,但实际上减少了整体复杂性。第二句话读起来更为轻松和易于记住,因为我们只剩下一条信息,而不是两条。由于我们能够更不费力地记住它,也就可以把它告诉别人,或者说,把它作为一则打包的信息卖出去。简言之,这就是叙述的定义和功能。

''逻辑错误'':喜欢苹果胜于喜欢橘子,喜欢橘子胜于梨,喜欢梨胜于苹果”的错误。

''归纳之谜'':我们画出一条直线,只是因为我们手边有一把直尺;一个数字在过去1 000天都在增长,使你更相信它会继续增长。但如果你头脑中有非线性模型,它可能意味着数字会在第1 001天下降(哲学家纳尔逊·古德曼Nelson Goodman )。

''“帕斯卡的赌注”'',取自哲学家及(思想)数学家布莱斯·帕斯卡。他的观点如下:我不知道上帝是否存在,但我知道,如果他存在,我做无神论者就会损失很大,而假如他不存在,做无神论者也得不到好处,所以我应该相信上帝。

!!结论/解决办法
我永远不可能知道未知,因为从定义上讲,它是未知的。但是,我总是可以猜测它会怎样影响我,并且我应该基于这一点做出自己的决策。

“帕斯卡的赌注”哲学来树立处理不确定性的核心思想:可以根据这一思想建立一整套决策理论。你只需要减轻事件的影响。如果我的投资组合受到市场崩盘的影响,而市场崩盘的可能性是不可计算的,我能做的就只有购买保险,或者退出,把我不愿意发生损失的那部分金额投入风险较小的证券。

对黑天鹅的应对办法是在思维中避免从众。但在避免上当之外,这种态度受制于一种行为方式,不是思维方式,而是如何将知识转化为行动,并从中找出那些有价值的知识。

通过负面例子而不是正面证据接近真相!

正面黑天鹅事件的影响时,我会非常冒险,这时失败只有很小的影响;当我有可能受到负面黑天鹅事件的袭击时,我会非常保守。

一半时间里我对自己的事务超级保守,另一半时间里我超级冒险。这似乎并没有什么特别,只不过我在其他人冒险的地方实行保守主义,在其他人谨慎的地方冒险。

我不担心人们通常担心的问题,因为它们显而易见,而担心我们的意识和正常过程以外的事物。(我也必须承认我担心的东西不多,因为我努力只担心有计可施的事情。)我不担心困境,而担心失去机会。

你凌驾于争斗与名利思想之上,而不是之外,只要你愿意这样选择。

!! 涉及的一些概念
''高斯分布''(Gaussian distribution), 又称为正态分布(或常态发布 normal distribution),是一个非常常见的连续概率分布。正态分布在统计学上十分重要,经常用在自然和社会科学来代表一个不明的随机变量。理论上的正态分布曲线是一条中间高,两端逐渐下降且完全对称的钟形曲线,所以又叫钟形曲线。赌场概率已知且符合高斯分布(即钟形曲线)、几乎可计算的人类的唯一冒险场所(赌博是被简化和驯养的不确定性)。

[img width=60% [http://one.rizi.me/photos/rizime/gaosi.jpg]]


''大数定律'',在数学与统计学中,大数定律又称大数法则、大数律,是描述相当多次数重复实验的结果的定律。根据这个定律知道,样本数量越多,则其算术平均值就有越高的概率接近期望值。大数定律很重要,因为它“说明”了一些随机事件的均值的长期稳定性。在重复试验中,随着试验次数的增加,事件发生的频率趋于一个稳定值;人们同时也发现,在对物理量的测量实践中,测定值的算术平均也具有稳定性。比如,我们向上抛一枚硬币,硬币落下后哪一面朝上是偶然的,但当我们上抛硬币的次数足够多后,达到上万次甚至几十万几百万次以后,我们就会发现,硬币每一面向上的次数约占总次数的二分之一,亦即偶然之中包含着必然。同理赌场中也是大数定律在起作用。

平均斯坦的不确定性在平均化之下消失。这就是人们常说的“大数定理”。

''“分形”''(fractal)一词是曼德尔布罗特创造的,用来描述不规则和支离破碎的几何图形,它来自拉丁语的fractus一词。分形是几何图形在不同尺度上的重复,显示出越来越小的自相似图形。小的局部在某种程度上与整体具有相似性。

''递归'',是对某一事物自身无限使用某种法则。你可以把图形分解为越来越小的图形,永无止境,你会不断看到能够辨认的图形。

''幂律'',幂律存在是因为有幂。幂律来自上世纪20年代对于英语单词频率的分析,真正常用的单词量很少,很多单词不常被使用,语言学家发现单词使用的频率和它的使用优先度是一个常数次幂的反比关系。简单来说,幂律就是两个通俗的定律,一个是长尾理论,只有少数大的门户网站是很多人关注的,但是还有一个长长的尾巴,就是小网站,小公司。长尾理论就是对幂律通俗化的解释。另外一个通俗解释就是马太效应<<ref "[1]">>,穷者越穷富者越富。

80/20法则它是一种标志性的幂律,实际上幂律的发现正是从它开始的。当时维尔弗雷多·帕累托观察到意大利80%的土地被20%的人占有。有人运用这一法则指出,80%的工作由20%的人完成;或者80%的工作只产生20%的结果,反之亦然。

''觅母(memes)'':人类学家、认知科学家及哲学家丹·斯铂佰提出了观点表述上的传染性。被人们称为“觅母”(memes)。也就是以人体为媒介传播并互相竞争的思想,并不真的像基因一样。思想的传播有一定的结构。思想会传播是因为作为媒介的自私人类对它们感兴趣,并且喜欢在复制过程中将它们扭曲。

''锚定'',是一种经典的思维机制。通过设想一个具体数字,你降低了对不确定性的不安,然后你“向它下锚”,就像在真空中抓紧一个物体。这种锚定机制是不确定性心理学的鼻祖丹尼·卡尼曼和阿莫斯·特沃斯基在早期对启发式思维和认知偏差的研究中发现的。研究是这样进行的。卡尼曼和特沃斯基让受试者启动未来之轮。受试者首先看轮子上的数字,他们知道数字是随机的,然后估计加入联合国的非洲国家的数量。轮子上的数字较小的受试者估计了一个较小的数量,轮子上的数字较大的受试者估计了较大的数量。

''[[休谟问题]]'',即所谓从“是”能否推出“应该”,也即“事实”命题能否推导出“价值”命题,它是休谟在《人性论》中提出的一个著名问题。这个问题在西方近代哲学史上占据重要位置,许多著名哲学家纷纷介入,但终未有效破解。休谟指出,大多数人都相信只要一件事物伴随着另一件事物而来,两件事物之间必然存在着一种关联,使得后者伴随前者出现,休谟在《人性论》以及后来的《人类理解论》一书中反驳了这个理论,他指出虽然我们能观察到一件事物随着另一件事物而来,我们并不能观察到任何两件事物之间的关联。而依据他怀疑论的知识论,我们只能够相信那些依据我们观察所得到的知识。因果联系之间其实存在一个信心或盼望的跳跃,比如我们认为明天必定会来到是基于经验中对昨天今天与明天的“知识”,不自觉的把明天作为今天的结果,这是盼望和信心,不是知识!

休谟因果问题——“我们无从得知因果之间的关系,只能得知某些事物总是会连结在一起。” 

休谟归纳问题——:“我们有什么理由从对个别事例的观察中引出普遍性的结论?”“从单称陈述到全称陈述的推论如何能得到证明?” 

休谟伦理问题——“从‘是’中推不出‘应当’”。


//2019年02月16日周六下午08:04:49//

@@color:gray;<i class="fa fa fa-info-circle fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "在社会学中,马太效应有一个不那么文学化的名字:“累积优势”。这段《圣经》中的文字中已经体现了突破性法则:“凡有的,还要加给他,叫他多余;没有的,连他所有的也要夺过来。”(《圣经·马太福音》詹姆斯一世钦定版)">>

<$transclude mode="block" tiddler=bookkeywords/>
<$list filter="[field:book_title[不失者]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>

作者波西格(1928-,Robert M. Pirsig)大学时主修生物化学,后来对哲学产生兴趣,1950年前往印度学习东方哲学。回国后,在当地大学担任写作课教师。1961年,他被诊断为偏执型精神分裂症和临床忧郁症,被多次送进精神病院,接受过28次电击疗法。

1968年出院后,他带着10岁的儿子克里斯,进行了一次长途摩托车旅行。他把旅行的感受和思考,写成了一本书《禅与摩托车维修艺术》(Zen and the Art of Motorcycle Maintenance)。

由于连续被121家出版社拒绝,直到1974年,这本书才出版。但是出版后,销售量惊人,超过500万册,成为70年代美国十大畅销书之一,目前累计销售量已经超过1000万册。《吉尼斯世界纪录》称它是"世界上被拒稿次数最多的畅销书"。

''简要介绍:''

"禅"和"摩托车"有什么关系,怎么会放在一起呢?

这两个词都是象征。"禅"象征一个人内心的心灵探索,是主观哲学思考;"摩托车"象征科学技术,是客观的外部存在。作者把它们放在一起,就是暗示这本书讲的是,如何将主观和客观统一起来,正确地认识自我和外部世界,达到一种和谐存在的境界。也就是说,如果有一天,"维修摩托车"也能成为一种"禅",那会怎样?

作者通过夹叙夹议的叙事方法,一边描述和儿子骑摩托车旅游的过程,一边触物生情引入科技和和人的哲学观点。

正如作者在序言中所说:

<<<
"本书不应该在任何意义上,与东方佛教徒的禅学实践联系在一起。它与摩托车的关系也不是很大。"
<<<

''关联阅读:''

这本书让我想起台湾作家詹宏志的''《旅行与读书》'',这本书早已在读书清单里了,还没有来得及看。倒是看过詹宏志在一席上的演讲:[[旅行人:在路上与在书上|https://v.qq.com/x/cover/1jv433683n9m5h4/v03212aom96.html]]

''书摘:''


<<<
自然的法则是人类发明的,就像鬼的存在一样。逻辑学、数学也都是如此,所有值得赞美的事,也都是人类的发明。这个世界也是人类所想象出来的,整体来说也就是一种灵界的存在。在古代,我们所居住的这个美妙的世界就被如此视之,它由鬼神所统领,我们之所以能看到这个世界,就是因为鬼神让我们看见,他们是摩西、耶稣基督、释迦牟尼、柏拉图、卢梭、杰弗逊、林肯等等,牛顿是非常好的一位,可算其中最好的一位,所以我们的常识就是由过去成百上千的鬼神所构成的,他们企图在人的生命当中找到他们的地位。”
<<<

<<<
你相信鬼吗?” 我说:“不相信。” “为什么?” “因为他们没有科学依据。” 我的答案不禁让约翰笑了起来,我接着说:“他们的存在不占用任何空间,也没有能量,因此根据科学定理,他们只存在于人的心中。”
“当然,科学定理也不占用任何空间,也没有能量,因此也只存在于人的心中,所以完全科学的态度就是既不相信鬼,也不相信科学,这样你就安全了。然而这样一来,你就没有多少可以相信的了,但是唯有这样才是科学的态度。”
<<<
<<<
"在你经过大城市的工业区时,你就会看到整片所谓的科技区。门前围了高高的铁丝网,大门紧锁,告示牌上写着"禁止跨越"。在一片污浊的空气之后,你看到的是奇形怪状而又丑陋的金属物和砖块,也不知用途为何。它的主人你永远也见不着,它为什么在那儿也没有人知道,所以你感受到的只是一股莫名的疏离感,仿佛你并不属于那儿。它的主人和知其来由的人可不希望你在附近闲逛,这些工厂让你在自己的土地上竟有陌生的感觉。它特殊的形状、外观还有神秘感,一切都在叫你"滚开"。
你知道这一切总有解释,而且它们毫无疑问地对人类间接地有些益处,但是这些益处你没看见,你只看见"禁止跨越"和"保持距离"的牌子,你只看见人们像蝼蚁一样为这些庞然巨物做工。于是你想,即使我是它们的一分子,也不过是另一只做苦役的蝼蚁罢了。"
<<<
<<<
有些东西你忽略是因为它们非常细微,但有些却是因为它们过于庞大。
<<<



需科学上网观看:

<iframe width="560" height="315" src="https://www.youtube.com/embed/IomhvaEe2q8" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<$transclude mode="block" tiddler=bookinfo/>
最近看了一些历史研究和哲学方面的书,都提到程朱理学的影响和沿革。我对程朱理学一直处在一种模糊认识的状态,知道点滴,尚不能汇流成河进行全面认识和系统思考。

! 综述
程朱理学,是宋明理学的一派,又称性理学,有时会被简称为理学,与心学相对。在中国古代被成为“义理之学”或“道学”,研究理学的学者称为“理学家”。

! 人物

!! 代表人物
创始人:周敦颐、邵雍、张载(皆为北宋)

继承发展:程颢、程颐

集大成:朱熹(南宋)

其他著名理学家:杨时、罗从彦、吕祖谦、杨简、真德秀、魏了翁、许衡、吴澄、曹端、薛瑄、吴与弼、邱濬、陈献章、陆九渊、王守仁等。

! 源流和发展路径:

来源于宋明理学的儒家学派。理学萌芽于北宋,盛极于南宋与元朝、明朝时代,清朝中叶以后逐渐没落。自元代已降朝代皆把程朱理学奉为国家的官方思想。

!! 历史背景
魏晋南北朝玄学盛行,唐代佛、道思想盛行,儒家思想受到很大冲击,不再独尊于一家。

之所以认为朱熹为义理之学集大成者,也是其深刻之处,在于朱熹把孔孟置于正宗,同时又把董仲舒五行,把张载、周敦颐、二程的观点,以及佛学高度一元化的哲学和道家无为的思辨精神,加以整理,小心而细致地构造出内容精深的新儒学体系。儒学在世界观、方法论上的短处被克服了。这使佛、道等学说再也不会动摇它了。儒学重新被拉入了历史发展大道,成为国家意志的第一理论支持。

! 核心思想
在新儒学之前,“仁”是儒学的核心思想。

程朱理学作为兴起于宋代的新儒学,是对当时儒学思想的一种革新,同时还融合了佛家、道家思想,是当时社会下对中国历史思想的重新罐装。

程朱理学主张:“存天理,灭人欲”。

!! 分支

!!! 程朱理学(程颢、程颐、朱熹)
“存天理,灭人欲”

!!! 周敦颐道学派
!!! 邵雍数学派
!!! 张载与王夫之气学派
!!! 陆王心学(陆九渊和王阳明)
!!! 陈亮与叶适事功学派
!!! 日本朱子学派
!! 反对和批判

# 李贽(明末)针对正统理学家的“存天理灭人欲”的命题,他提出“穿衣吃饭,即是人伦物理”的主张,认为“理”,就在百姓的日常生活当中,对正统思想提出了挑战。 
# 颜元(清朝)力反程朱的守静与虚学;
# 戴震(清朝)认为:“理者,存乎欲者也。”

! 影响

自元代已降朝代皆把程朱理学奉为国家的官方思想,科举考试皆以程朱理学为读本。

! 主要著作
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
《[[如何阅读一本书]]》认为读书有四层次  (见[[此|如何阅读一本书?]]),最高一级是''主题阅读''。一般做学术和科研研究为业者多为主题阅读,即就一个主题从多本或多系列书籍展开阅读。今天看到还有一种类似读书法,准确地说是不读书做研究的方法, “数字人文” 法。

“数字人文”读书法,准确的说不是人读,是机器去读书,用计算机统计一本书某些词出现的次数,总结出此本书“高频词”榜,从而推断出本书的主题大意和风格。

这种读书法有效的应用了《[[阅读心理学]]》一书中提到的研究成果:阅读是基于“词”的阅读,眼动效应也是基于词的运动。年初Google提出的让“让Google更聪明,从书里找答案”,我想就是基于词切分和AI技术,Google学会了怎么读懂一本书。

事实上前年我已经开始利用词切分法,通过大量图书全文检索的模式用在写作上了。这种方法非常适合小众专业领域研究和写作。例如,之前我常在中国古代文学的故纸堆里扒拉寻找一些好玩的东西拿出来写,但是我又不可能熟读中国几千年所有文言文文本,那要找一个藏在几百几千年前书本里的小玩意怎么办?词切分+全文搜索,勾陈索引,把结果领出来,摘掉没用的,润色,注入观点,就是一篇相对专业的文章了。(全文检索软件我用的是~FileLocator,数据库我用的是“古典典籍TXT”“历代笔记TXT”,见此:[[Rizi-Box|https://one.rizi.me/Books/]])

几年前,纽约时报就用这种方法分析了 1789 年到 2009 年之间所有美国总统的就职演讲,让读者一目了然地看到在美国 200 多年的历史进程中,总统关心的核心问题是如何变化的。

<<imageSlider  [[http://f.cl.ly/items/3T0V1p3P2l0u3Z1y300H/1979.jpg]]    "美国总统约翰 · 亚当斯在 1797 年的就职演说">>

<<imageSlider  [[http://f.cl.ly/items/0Q0V1v0G320F2m3I391W/2009.jpg]]    "美国总统贝拉克 · 奥巴马在 2009 年的就职演说">>

当然这种方法最大的问题是,它过分简化了语词和语义之间的复杂关系。例如对“武汉市长江大桥”这句话不同词切分法,结果出来的意思完全不一样。在实际操作过程中,可以引入概率模型和迭代算法的复杂程序(主题模型法topic modeling),做出更高级的玩法。

我在[[BookStore|Helpful Tips and Sites]]里推荐的''中国哲学书电子化计划''这个网站,就是站长德龙(Donald Sturgeon)的研成果。德龙还在读博士的时候就凭一己之力做出了一个巨大的线上开放电子图书馆,虽然名字叫作 “中国哲学书电子化计划 “,但是事实上它收藏了超过三万部中文著作,从先秦到民国,凡所应有、无所不有,总共有五十亿字之多。

<<imageSlider  [[http://f.cl.ly/items/2N0U3Z242E2K3O2s0B3s/wenxianxiangsidu.jpg]]    "中国哲学书电子化计划--早期中国文献的相似度">>

2018年08月03日周五上午12:27:29
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
《零ZEЯRO:世界符号大全》是日本著名的艺术指导/平面与书籍设计师松田行正的代表作之一。

<<imageSlider  [[http://p2.cdn.img9.top/ipfs/QmZ8a4Zoy9aqhRcdKVDq7cufUbWNo9gh6J26SjMfwT2xXq?2.jpg]]    "《零ZEЯRO:世界符号大全》封面">>


这是一本黑色的书,连三个切口都刷了黑漆。正面不着一字的书衣也是黑色特种纸,两边是两张切割出来的脸部曲线,封面上只有九个小孔。这九个小孔是凡尔纳的小说《桑道夫伯爵》中桑道夫伯爵解读暗号的模型纸,配合硬封上的文字阵列,正常包裹时显示出“ZEЯRO松田行正”,将书衣顺时钟旋转90度就变成“ZARRATHUS”,再转90度会出现“TRRASIGNE”,再转90度则会出现“ASINTOERR”。这36个字母去掉作者名,就变成ZEЯRO, ZARRATHUSTRRA, SIGNE, A SIN TO ERR。九个小孔的排列方式来自杜尚的《新娘,甚至被光棍们剥光了衣服=通称大玻璃》中的“九个射击的痕迹”,喜欢玩双关语的杜尚用射击的洞比喻射精。作者解说书名的含义是:''从零(ZERO)出发,逐渐偏离(ERROR),进入记号的世界。''

书衣的背面是一株枝繁叶茂的文字树。书中列出的记号群只是根据形状的趣味性来选择,也有很多记号是已经超越了沟通途径的复杂形状。有很多文字系统因为形状和文法太过复杂而无法流通,自然消失,也有一些像神代文字那般怪异的文字系统。

2018年05月19日周六下午02:04:05
这是查建英主编的《八十年代访谈录》里采访刘奋斗的一句话:

<<<
中国足球队的水平其实也正是我们今天中国文化界、思想界、艺术界的水平。在这些方面我们并没有比足球表现得好了多少,我们大家都是一批机会主义者。譬如搞电影的人,永远摸着石头过河,没有一个很坚定的信仰和热情在后面,总是做了一件事算一件事,慢慢一步一步改,一步一步来。他认为这样做下去不会有好结果,但是为什么大家瞧不起中国足球,却没有很瞧不起中国的文化艺术呢?那是因为“中国有句老话‘文无第一、武无第二’,整个行业容易被遮羞,不像足球似的那么难看,立刻见真章”。
<<<

《八十年代访谈录》首版在2006年。如今,12年即逝,关于中国足球的现状依然没有什么长进。俄罗斯世界杯比赛正酣,有人戏谑世界杯是“美中不足”,世界经济体第一的美国对足球不热衷,经济体第二的中国是想热衷而不得。回到上面那句话,“中国足球队的水平其实也正是我们今天中国文化界、思想界、艺术界的水平。”这句话在12年后的今天来看依然成立,现今中国除了经济总量(仅是总量)在数字上的攀高,思想文化方面毫不谦虚的保持着和足球一样体面的水平。前一段在读《私人阅读史》和《我书架上的神明》,这两本书涵盖从上世纪40年代-到80年代中国近二百多位知识分子的私人阅读史,加上查建英《八十年代访谈录》,我简单整理和梳理了一个书单,一份思想演变脉络。从中不难看出,50、60年代朴素的爱国主义和民族主义,70年代朴素的理想主义、虚无主义,80年代新思想启蒙思潮、理想主义,90年代之后许多原始和朴素的东西开始被瓦解甚至荡然无存,取而代之的是拜金主义、实用主义和犬儒主义以及狭隘的民族主义和网络暴力。虽然近些年新儒教主义有抬头的迹象,但尚存在提倡国学的实用主义层面(详情见读书笔记中)。这些话可能触及一部分人的敏感神经,会说我们现今有“新四大发明”,有Bulinbulin的高铁等等。我只想说,这些只是技术上的进步,绝非科学(见的进步),要不然美国也不会卡中国的脖子了。

上面拉杂一大堆,我只想从另外一个角度解释中国足球为何沦落到今天现状的原因。从社会的基本面 --- 思想层面 --- 思考问题,可能会看出许端倪来。

开什么样的思想之花,结什么样的果!

2018年06月27日周三下午02:48:40
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<<tabs "Wechtpay Alipay" "Wechtpay">>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
在数学与统计学中,''大数定律''又称''大数法则''、''大数律'',是描述相当多次数重复实验的结果的定律。根据这个定律知道,样本数量越多,则其算术平均值就有越高的概率接近期望值。大数定律很重要,因为它“说明”了一些随机事件的均值的长期稳定性。

生活中买彩票现象也是一种大数律,长期买彩票,必定会中的。这就像我们向上抛一枚硬币,硬币落下后哪一面朝上是偶然的,但当我们上抛硬币的次数足够多后,达到上万次甚至几十万几百万次以后,我们就会发现,硬币每一面向上的次数约占总次数的二分之一。

大数律,也可以说是:''偶然之中包含着必然''。
<$transclude mode="block" tiddler=booklogsinfo/>

如何才能克服维度的诅咒呢?你必须对自己的工作保持谦虚谨慎的态度,而不是一味关注结果,难以旁顾。你必须通过附加测试检验这些结果。社会科学家称其为“样本外”测试。你尝试的变量越多,就越需要谦虚。

为了让大数据充分发挥其作用,有一种特殊的调味剂通常是必不可少的:对人类和小型调查的判断,我们可以称之为小数据。

数据的革新将会带来一场革命,但这并不意味着我们可以用数据解决一切问题。大数据无法消除千年来人类探索出来的认识这个世界的所有方法,它们互为补足。

数据革命带来的一个危险是,随着我们的生活不断被量化,这些替代判断因素可能会变得更加神秘,但也更具侵略性。更准确的预测可能会导致歧视更加微妙,也更恶毒。

通过跟踪数据,了解人们实际上做了什么,而不是说了什么。
 
科学远没有人们想象的那么复杂。事实上,最好的数据科学便是一种出乎意料的直觉。因为数据科学的核心在于发现不同模式以及预测一个变量如何影响其他变量。

好的数据科学的方法通常既有本能性又具有直觉性。

随机试验是证明因果关系的黄金标准。

//2020年05月18日周一下午10:17:16//

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

! 关于毛泽东去世的反应

北岛的回忆录《断章》:

<<<
下午四时,从家家户户的窗口传出哀乐,接着是播音员低沉的声音:「中国共产党中央委员会主席.......主席毛泽东,今日零时十分在北京逝世,享年八十三岁…….」 我们对视了几秒钟,会意一笑,但笑得有点怪,有点变形,好像被一拳打歪——这一时刻让人猝不及防。芒克顺手从床底下摸出半瓶「二锅头」,到厨房取来三个酒盅。斟满,三人默默干杯,再斟满,我们的笑容变得舒展,好像跨越了令人尴尬的瞬间。「这回有戏了,」芒克低声说。

下午三时,由华国锋主持追悼会。他用浓重的湖南口音宣布:「全体起立,默哀三分钟……」我母亲和老邻居们慌忙站起来。我迟疑了一下,身不由己也站起来,低下头。我到底为谁起立默哀?自己也说不清,是为了我自幼崇敬而追随过的人,为了献出自己年轻生命的珊珊,还是为了一个即将逝去的时代?
<<<

陈丹青回忆录《幸亏年轻》:


<<<
元月周恩来殁,仲夏是朱德的死,「人心惶惶」,不准确,那年,人心是在默然等待,暗暗地猜……拉萨阳光猛烈,我记得屋里的静,三个人刻意扯些别的话题,闪避目光,不敢对视,抑制嘴角的痉挛,只怕猝不及防,笑出来——「那一瞬间,他没有能够使他的脸色适应于他的过失……他的面孔完全不由自主地突然浮现了他那素常的,因而是痴愚的微笑。」《安娜.卡列尼娜》的开篇这样描写阿卡谛维奇偷情后被妻子发现的一瞬。不合时宜的表情!

三十二年后,此刻,我斗胆写出当年的真实,就是:我们等待最高领袖逝世的这一天,等很久了。

……当我混在挤挤挨挨的葬礼行列中用力低垂头颅,周围数百人的号哭一阵阵如爆炸般轰鸣,怎么办?那些年我为种种理由感伤泣涕,可现在只剩几个人便轮到我上前鞠躬,眼中还是没有泪,怎么办,我绝非无动于衷,但此刻必须痛哭!疯狂搜索悲酸的记忆,忽然想起「美影办」资料中一幅老照片,是当纳粹占领巴黎,有位街头观看的法国绅士被屈辱扭歪胖脸,老泪溢出……一阵眼热,下腭趁势抽搐,几秒钟后,我成功地哭起来。
<<<

阿城的回忆录《听敌台》:

<<<

毛泽东死时,我正在北京,毫无感觉(他已在听敌台的云南知青心里于七一年死去),买些东西,准备回云南过日子。
<<<


//2019年08月29日周四下午12:35:24//

<$transclude mode="block" tiddler=bookkeywords/>
@@.note
''Keywords:'' {{!!description}}
@@

每个人的人生结局都一样,而过程千差万别。

人生,就是活着的过程。

那么,为什么人要还要在乎人生的结果?而不去注意过程、在意每一个当下那?

可能这就是人类的悲哀!

赚钱是目的,赚钱的目的是为了人生过程,如果人生的过程,空有目的又有何用?

人生不能重来。

当消耗了人生10年时间而获取人生未来3年的结果,这样的人生不是空耗7年吗?除非是换取未来23年的结果。即便这样想一想也是不值得的,因为过去的10年再也回不来了。

那么为什么不这样过那:人生10年,每一天都当是等值的、等价的,既不贬值,也不增值。这样不是比上一种人生活法更值得吗?

那么什么样的人生是值得的?这是关键。

肯定不是以金钱多少来衡量,也一定不是以拥有什么样的社会地位来评价,这些都是身外之物。身外之物的对立面是什么?是形而上的本我,即“我思故我在”的我。

本我的人生价值的考量没有标准 — 因为标准都是身外的体系,唯有自我来批判才是最终裁决者。那么自我的人生价值考量的标准活着基础是什么?

我想,唯有:快乐!

快乐是一切形而上的活动基础,例如幸福、满足感、荣誉等等。快乐是一切形而上的元,超越快乐,是更高精神层面的活动。

这样说来,人生价值的基础是快乐!

快乐的活好每一天即等值人生!

//2019年05月14日周二下午11:43:33//
''邓宁–克鲁格效应''(以下简称“达克效应”) ,意即表现最差的人也总是最高估自身能力的那一个。


<<<
我们的无知,大体上以未知的方式塑造着我们的生活。简而言之,人们倾向于做他们通晓之事,并在一无所知的领域手足无措。无知用这种方式深深地引导着我们的人生方向……
<<<


[img width=80% [http://one.rizi.me/photos/rizime/dunning.jpg]]
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>
中国现在的学者不仅是没有人敢说话了 --- 做一个有良知的公知和社会代言人,也没几个甘于寂寞潜心做研究了。现在学者的知名与否的界定标准是:参与会议的多少和忽悠到研究经费的多寡。如果一个社会的中坚不坚,何谈一个国家和民族对身份的认同以及从何来到何处去的探索。这一切的牢骚皆因这本书有感而发:一个老外不远万里来到中国义务支教,进而驻扎东北农村,潜心对中国当代农村进行观察和思考,集结成《东北游记》一书。

《东北游记》与前些年一本叫《江城》的书风格很像,都是第三只眼睛看中国,只不过《东北游记》把目光聚焦在了东北三省。事实上《东北游记》的作者迈克尔•麦尔与《江城》作者何伟(彼得·海斯勒,著作还有《甲骨文》)都是和平队  <<ref "[1]">>  来华志愿者队员,也都为中国女婿。近些年除了每年春节返乡时节大家对三农问题发一两声不痛不痒的牢骚之外,鲜有关于中国农村的书籍和研究。''而《东北游记》的价值就在于作者难能可贵的扎根调研精神与身在其中而又以外国人旁观者的眼光来观察、思考和比较,尽量的剔除政治污染和地域性先入为主的偏见思维,而作为对中国及东北兴趣意志的表象世界。''

如果有人问起我 --- 一个中国原住民--- --- 对东北的了解,我想除了我知道近代历史中东北作为中日俄纷争的苦楚之地外(麦尔在书中是这么形容东北的:''19世纪末,西方旅行者来到这里,把这片冰天雪地的边疆比作阿拉斯加;然而,他们的下一代却写道,这里是“冲突的摇篮”,是亚洲的阿尔萨斯-洛林''<<ref "[2]">> 。),就剩下赵本山、二人转、下岗、妓女、三亚东北人以及直播女这些标签了。这些对东北看法的观念性标签也许只是一些外在的表象,而真正的原因和东北历史的内核是什么?东北作为中国地域板块中最具特色和争议的问题所在又是什么?东北文化的核心价值是什么?东北的潜在力量和未来走向又在哪里?等等这些问题也许除了外省人之外,东北人也更想弄清楚的吧。


__//2018年05月17日周四下午05:53:15//__

PS. 看纪实文学就像看纪录片,是一种现实性体验,和纯文学的区别就是非想象和虚构以及无论美丑但真实的魅力。中国好纪录片少之又少,现存的纪录片不是捧臭脚,就是跪舔式的阿谀;不是洗脑式的价值灌输,就是意淫式的自我高潮。真正好的纪录片是一个真实的过程,记录、信息传递和人性启蒙。同样,中国纪实文学作品也同纪录片一样的现状。事实上中国是最不缺少现实题材的土壤,网友神侃为这是一片神奇的国度,远且不说,就改革开发四十年,经济的飞跃带来的阶级分化、社会价值观的滞后带来的国际和国内问题、被经济撕裂的信仰带来的人性痛苦和社会问题、互联网浪潮下的社会道德底线和政府作为、逐渐分层的社会造成的不同族群的个性化和主流价值观的冲突........这些不都是绝佳的现实题材和魔化题材吗?奈何无人来做!

//2018年05月18日周五下午04:41:17//

-- -- --

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "和平队(英语:Peace Corps),是根据1961年3月1日美国肯尼迪政府10924号行政命令以:“促进世界和平和友谊,为感兴趣的国家和地区,提供有能力,且愿意在艰苦环境下在国外服务的美国男性和女性公民,以帮助这些国家和地区的人民获得训练有素的人力资源。”

而成立的一家志愿服务组织,并于同年得到美国国会以通过《和平队法案》的方式授权。和平队队员需要为其义务服务两年。

截至2013年,先后有接近22万美国公民参加过和平队的工作。目前,和平队在140个国家有活动。

根据和平队自身的宣称,其有三大宗旨:

* 为愿意接受和平队帮助的国家和地区提供训练有素的人员
* 促进受助国人民对美国人民的了解
* 促进美国人民对世界其他各国人民的了解。 ">>

 <<footnotes "[2]" "普法战争后法国于1871年割让给德国的领土。1919年第一次世界大战后,这块土地归还法国。第二次世界大战期间,被德国占领,后又归还法国。 ">>

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

''第一原理''(英语:First principle),哲学与逻辑名词,是一个最基本的命题或假设,不能被省略或删除,也不能被违反。第一原理相当于是在数学中的公理。最早由亚里斯多德提出。


<<<
a first principle is a basic, foundational proposition or assumption that cannot be deduced from any other proposition or assumption.
<<<

这里涉及到[[还原论]]([[休谟问题]])。

! 各领域的第一原理

!! 形式哲学
在形式系统中,第一原理是指一组''相互一致的命题''。

!! 哲学

《自然哲学的数学原理》(Principia Mathematica)中写道:“如果有能同时兼具真理性和充分性的理由来阐释自然事物,我们就理应予以接受。”牛顿视其为哲学推理的第一法则。

!! 物理学
在物理学中,第一性原理,或称从头算,指从基本的物理学定律出发,不外加假设与经验拟合的推导与计算。例如利用薛定谔方程在一些近似方法下解电子结构,但不从实验数据得到拟合参数的从头计算法。 (参考:<$appear show="Musk为什么坚持执行第一原理" $state="pink-button" selectedClass="pink"><$transclude mode="block" tiddler=Musk为什么坚持执行第一原理/>
</$appear> )


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>
耕种和食物的关系好理解,而爱情和前二者的联系是这本书的想象空间变得丰满充盈。读完方知,书名的这三个关键词是本书的三个主题。更准确一点的描述,书名三个词的逻辑顺序应该是:爱情、耕种、食物。因为主人公因爱情而跟随男朋友脱离繁华都市去乡村耕种,又因耕种而收获食物和爱情的果实。

> 这本书记载了扰乱我人生轨迹的两段爱情:一段是与农耕这门脏乱而令人沉迷的艺术;另一段是与一个复杂而令人恼怒的农夫,在宾夕法尼亚州立大学,我与他邂逅。

像作者选择这种返朴归真的务农生活在中国当下是极其难以看到的现象,大家都逃离农村,想尽办法的扎根都市。不管选择什么样的生活本无对错,但人的一生应该怎么度过确是应该认真考虑的问题。作为纽约都市的一名记者白领,作者的选择也经过了痛苦和彷徨。

> 有时我会想,我怎么会来到这里,作为某人的妻子,来到北郡一个古老的农舍中。我有时仍然会觉得自己是剧中的一个演员,真实的我在外面流连到凌晨四点,穿着高跟鞋,拿着手包;而剧中的我凌晨四点就起床了,穿着牛仔裤,拿着多功能工具刀。

然而痛苦彷徨之后是涅槃。

> 包围我的不是城市的声色犬马,而是五百英亩田地。今夜云雾缭绕。这个农场是一个更加黑暗、更加安静的世界,比我想象中的乡村更美丽,也更野性。

作者选择的田园生活并不是我们旅游时候看到的田园风光和世外桃源,而是刀耕火种般的原始农业作业方式。这可不是一种浪漫主义的想象和体验,而是身体力行的参与和土地的亲密接触。“农夫辛勤劳作,大自然笑里藏刀,农夫潸然泪下,这就是农业的发展简史。”

> 我和马克都是第一代农人。我们一起建造的这个农场可以说很古典,也可以说非常现代,这就看你问的是谁了。土壤因为有堆肥和覆盖植物而十分肥沃。我们不用杀虫剂,也不用除草剂。农场大部分工作由马来完成,而不是用拖拉机。种植的作物多种多样,一块一块的田地是由灌木篱墙和小林地隔开的。我们有一片糖枫林、一片果园、一大片草场和干草地,还有四季常青的花木园。我们亲自用手挤奶,奶牛的奶水非常充沛,用这样的牛奶做出的黄油十分鲜美。我们在草地上养猪、肉牛和鸡,到屠宰的季节我们会做生香肠和风干香肠、意大利烟肉、咸牛肉、肉酱,还有几夸脱醇美的汤。

> 盛夏是马克曾经告诫过我的疯狂赛跑的时节,各种事情迫在眉睫,进行时间与速度的比拼。干草!篱笆!收获!杂草!我们全速奔跑,种下晚熟的胡萝卜和甜菜。我们虐待卷心菜秧苗,拿着浅盘一路小跑,将它们扔在地里,然后用膝盖爬行,将每一株幼苗塞到土中,一点也不怜香惜玉。新的一天从凌晨三点四十五分就开始了。黎明之前干杂活儿,太阳完全升起之前就带着役马下田劳作,然后是干活儿,干活儿,干活儿,与天气赛跑,与杂草赛跑,与季节赛跑。一天下午,我坐在中耕机上,在垄沟末端睡着了,梦见自己坐在一条小船上。晚上挤奶从下午四点半开始,清扫和杂活儿要到七点才能结束,但是鸡要到九点才会歇息,我们要在那时候把它们关进鸡笼,防止被猫头鹰吃掉。没过几个小时,这样的一天再次上演。

如果说都市人魂牵梦绕的回归是一种乡愁,是对都市生活的厌烦和柏拉图式的憧憬。但真正敢于逃离都市,敢于平凡而又安静的与土地为伴的人才是真正的生活者。

> 我学到的这些东西中,最艰难的就是,你如何通过农耕改变这片土地,农耕也会如何改变你。它渗透到你的血液中,一如尘土栖居在你粗厚手掌的褶皱和指甲里。它向你的身体不断索取,让你耗尽心力,在你五十岁的时候摧毁你;当你醒来时,会发现自己膝盖劳损,肩膀失灵,耳朵因机器的长期轰鸣而失聪,而且一贫如洗。农耕扎根在你的生命里,排挤掉其他的活动,让它们看起来微不足道。你的土地成为你的整个世界。也许你意识到在这片土地之外,在你遥远的过去,在声光世界和钢筋水泥中,有外卖食物和中央空调,没有这样那样的不便;但在这样的世界中,你实际上是被剥夺了,被剥夺了渴望、努力、艰辛和有意义的成就。农场会向你索取,如果你不做出足够的努力,死亡和野性的原始力量会将你吞没。所以,你自然而然地给予,然后给予得更多,几乎接近极限。这时,也仅仅是在这时,它给你丰厚的回报,不仅填满你的地窖,也滋润了你干涸而杂草丛生的灵魂土地。

PS.书中也涉及到一些植物学,[[《杂草的故事》|杂草的故事]]提到的一些杂草的现实版本。

2019年03月18日周一下午10:29:43

''现代农业相关拓展:''

1 纪录片《最大的小小农场》

讲述了一对夫妇从城市到农村,并用最原始农业的方式建立农场,利用大自然自我循环往复的原则管理农场。

在线观察:[[《最大的小小农场》|https://53ys.cc/play/184133-1-1.html]]

2 The Call of the Land: Meet The Next Generation of Farmers(需科学上网):

<iframe width="560" height="315" src="https://www.youtube.com/embed/OHfUOB6Fe48" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>



<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
读历史,读的是什么?

很多人喜欢历史,有些人读的是故事或者说是事件,有的人想读的是历史真相。这些除了娱乐作业之外,没有什么营养的。

2017年12月08日下午04:10:29

历史到底有真相没有?凡事都有真相,可是历史是没有绝对真相的。在[[思维框架研究|Thought Framework Management]]中我说,"思维模式建立的目的是为了更接近事物的本质,并提出正确的解决方案。"这句话同样适应用历史阅读,或者说历史研究。历史的真相不能还原,也无所谓真相的还原。我们读历史、研究历史,只能说趋于接近真相。而中国的历史研究着重考古,此考古非实物考古,准确的说算是考据,研究一下历史文本,谁曾经说过此话,提到过此人之类。而西方历史研究是唯物论,考古证据,由此为证,方为真相。再加上中国正史皆为官修,官修历史就难免要有意识流的注入和干预,很难客观的记录历史。所以,历史无真相,没有绝对的真相。

历史无真相,那么读历史读什么?只能是读故事了。读故事是没有什么营养的,就像听相声,只能一笑了之。从纵向来看,历史就是一个时间轴,每一个朝代、事件和人物都是时间轴上或长或大的一点,无数个大大小小的点组成了一部人类历史。从统计学来说,样本多了,自然就有相似性存在,就有某种规律,群体样本规律,动态发展规律以及逻辑规律。这种点线面之间的逻辑关系和规律才是历史的奥秘所在,读历史的乐趣所在。

2017年12月08日下午04:54:45
<div class="tc-subtitle">最後更新於<$view field="modified" format="relativedate"/></div>
为什么要设计这个规范那?

是为了更好的读书:读懂,读快。之前读书不少,一些书往往会忘记 --- 这很正常;一些书又会有一知半解的感觉 --- 书的结构、写法、观点和论据缺少总体把我和分析。基于这两点考虑,有必要在阅后花一点时间做一些读书分析 --- 读书笔记的撰写。之前的读书笔记不可谓说不好,但有点随意,不严谨和规范,长久来看无益。故而亟待解决读书笔记写作的规范问题。

根据[[之前对读书笔记规范的总结|Laws of reading]]:

<<alert info "
# 清晰地表现每一章的逻辑脉络;
# 带走书中所有的亮点和核心思想,并用自己的话以最简单的语言进行概况一下;
# 写下自己的看法和心得;
# 发现这本书和以前读过的其他书或文章的联系;
# 问题和疑问进一步的实证和挖掘。">>

上面的总结依然不够严谨。在《[[如何阅读一本书]]》中作者查尔斯·范多伦也给出了一套写读书笔记的方法,就是分析阅读的阅读法。

分析阅读包括如下几个阶段: 
<<alert primary "
# 这本书在谈些啥
##依照书本的种类与主题作分类;
##用最简短的句子说出整本书在谈些什么;
##按照顺序与关系,列出全书的重要部分。将全书的纲要拟出来之后,再将各个部分的纲要也一一列出;
##找出作者在问的问题,或作者想要解决的问题
#诠释整本书的内容
##找出重要的、关键性的词汇,透过它们与作者达成共识;
##从最重要的句子里抓出作者的重要主旨;
##找出作者在论述些啥,重新架构这些论述的因果关系,以明白作者的主张;
##搞清楚作者已经解决了哪些问题,还有哪些是未解决的。在未解决的问题中,哪些是作者认为自己无法解决的。
#评价这本书
##除非你已掌握某本书的架构,也能诠释整本书了,否则不要轻易评论;
##不要争强好胜,非辩到底不可;
##在说出评论之前,你要能区分出书中的“事实”与“观点”。如果要做出批评性的评价,需要做到如下几条之一:
###证明作者的知识不足;
###证明作者的知识有误;
###证明作者的逻辑错误;
###证明作者的分析与理由不够完整。">>

但完全按照《如何阅读一本书》分析阅读的方法来做读书笔记会很啰嗦。故而和之前的结合方为上策。还要结合写作的便利性以及利用Tiddlywiki 代码的自动化实现。

<<alert warning "
# 背景
##作者才是书之灵魂,对一本书的分析先从了解作者开始;
## 本书的写作背景,事件或时代背景等要素;
# 书体
##这本书讲的什么,并用自己的语言表述出来;
###找出书的亮点或核心关键词和重要的句子;
## 这本书的结构是什么,即每一章的逻辑脉络和因果关系;
##找出书中有趣的案例(故事)、文采飞扬的段落、独特的部分或以后可以用得到的素材;
# 书外
## 列出与本书相似或者关联的书,以及异同;
## 读后感:心得、感悟或评价,当然包括不足;
## 书中错误或存疑,以待后续;
">>
以上三大区块式读书笔记,看似简单,但怎么利用Tiddlywiki语言程式化实现那?

在读书笔记中分两部分:

!! 第一部分:常规部分(简短的词句组成),通过field关键词来实现:

!!!代码部分1:

参见:[[booklogsinfo]]

新增存疑标签 <<tag Doubt>>,同时添加到Task  <<tag Task>>,

其它按照[[field聚合规范]]书写和调用。

!!!代码部分2: 与现存读书笔记主题关联内嵌
参见:[[bookkeywords]]

!! 第二部分:发挥部分
这部分弹性非常大,就没有办法程式化结构来实现了。但是怎么提醒自己用这个读书笔记写法框架来撰写那?


当然,在书写的时候,依然按照之前设定的写作指导规范:写作五要素。
<<alert success "
1.简练 ; 2.精准;3.优雅;4.兼具韵律与节奏; 5.同时营造氛围。">>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
惠子谓庄子曰.子言无用.庄子曰.知无用.而始可与言用矣.夫地.非不广且大也.人之所用容足耳.然则厕足而垫之致黄泉.人尚有用乎.惠子曰.无用.庄子曰.然则无用之为用也亦明矣. --- 《庄子·外物》
<<<

庄子和惠子的这段对话可以用来说明读书的有用和无用,或学习和读书的关系。如果学习 --- 指看专业技能性书籍 --- 为庄子所说的“厕足之地”,那么看书 --- 指看文学、哲学以及社会学等所谓的“闲书” --- 则为“夫地.非不广且大也”,如果说看书无用,那么就像庄子所言“夫地.非不广且大也.人之所用容足耳.然则厕足而垫之致黄泉.人尚有用乎”,“像你和我站在上面的大地,难道说它还不宽不厚吗,但此刻对于你和我来说,有用的却只有脚底下这一小块。可是,如果把除了这块以外的地都挖掉,一直深挖到九泉,我和你站脚的这一块还有用么?”这样的比喻来形容看书,看书的作用一目了然。

这也是一种哲学辩证关系,“知无用.而始可与言用矣。”知道什么是无用,便能讨论什么是有用了。

然则。

<<<
庄子曰.知道易.勿言难.知而不言.所以之天也.知而言之.所以之人也.古之人.天而不人. ---《庄子·列御寇》 
<<<

“求知不是为了教化别人,是为了使自己能了解世界,能找到回归自然、通向天人合一境界的途径。一有所知就想宣传,则是为了使别人了解自己,为了从别人那里达到自己的目的。古时(理想)的人取的是前一种态度。”

“古之人.天而不人。”现代人那?半瓶子晃荡!尤其互联网时代下的言论尤甚,看知乎上的答者大半为回答而回答,抖机灵和卖弄者实难入目。

庄子关于知与言这段话也可以用来说明读书的目的,读书是一种求知手段,读书的目的是为了了解世界,更加接近事物的真相或本质,这不正是庄子所言“知而不言,所以之天也”的境界和目的吗?

//2019年08月25日周日上午01:06:08//

<$transclude mode="block" tiddler=bookkeywords/>
许多人谈起读书,都有看得不如忘的快之困惑。我也有,而且忘性特别大,看书犹如雨过地皮湿。这可能和自己没有达到“断诸邪见,缘起性空”的境界(南怀瑾说,人一旦达到性空的境界就会过目不忘,见[[维摩诘]]),这指的是心神专注,专一即为空。抛开这种玄理,不如看一则小故事:

```
一位老者常使小孙坐下来和自己一起读书,而小孩确常看常忘,索性不看,甚至有点不耐烦。于是就问爷爷看了又忘这读书有何用。爷爷就让小孩放下书,指着脚下的竹篮让他领着去门口小河打水。小孩蹦蹦跳跳地跑去了,当回时,竹篮空空如也,一脸迷茫。爷爷说,这次你跑快点试试。就这样反复两三次,小孩子还是没有打回来水。老人说,不要气馁,水虽然没有打回来,你看一下竹篮有何变化,是不是竹篮比之前更干净,更好看了!
```

看书时暂时没有记住,但是长久常看能净化我们的心灵。这和[[我书架上的神明]]上一位作者所言异曲同工:

<<<
读书最忌讳的,就是于心灵积下厚厚的灰尘。所以有说,人生识字糊涂始。知识即力量,只是道出了知识这枚硬币的一个面。知识之币的另一面,是心灵的尘垢。[[见此|开启那遥远时代的漂流瓶2]]
<<<

其实自古读书之人皆有忘书的烦恼,毕竟过目不忘的天赋可遇而不可求。司马光在《资治通鑑》进书表中谦称自己记忆“旋踵遗忘”。相似的话朱子也说过''“读书遗忘此士友之通患,无可救医,只有少读深思其意味,潜治当自有攻亦。“''(截详见❲明❳丘濬 编《朱子学的》卷之上,刊载于同治七年 (1868)《正谊堂全书》)不过朱子的解决办法在时下并不可取,少读多思,不如多读常思,互联网的发达,有些资讯并不需要记忆,只要了解即可,遇之,搜之,取之,即可。

<<imageSlider  [[https://cl.ly/qKXI/zhuzireading.png]]    "《正谊堂全书》截图">>

李慈铭《越缦堂日记》曾记一法或可医此患,书云:

<<<
”我辈素性善忘,随手所过,都不复记。偶有说得,即当笔之于书,不必计前人已及否也。“
<<<
<<imageSlider  [[https://cl.ly/qLNf/yuemangtang.jpgI]]    "《越缦堂日记》截图">>

这就是老话“好记性不如烂笔头”要旨。不过,这还不够,以自己多年实验结果来看,读书要有读书之法(见[[如何阅读一本书?]] 和 [[Laws of reading]]),笔记要有笔记之法。笔记之法,贵在用自己的语言简明扼要的对所读之书总结和点评。总结,即回顾和复习过程;点评,即思考和知识延展过程。此法,我也用在小孩的学习上,久之成习,收益良多。

记得一位哈佛高材生总结其学习之道,也提及了之法,见《
哈佛學霸的學習之道》(需科学上网):

<iframe width="560" height="315" src="https://www.youtube.com/embed/RYPHRat0oXA" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

2018年03月21日周三下午22:02:48
最近感觉读书有点力不从心了,很多书间隔几天已经很难续读了,究其原因,有二:一,年龄增大,记忆力衰减(也有可能是身体气质阶段性导致);二,同时读的书太多。其一,已无力补天,自然规律;其二,忌贪为专。

之前读书,随意为之,六七本书同读同进,甚至更多,无甚规划<<tag 正读>>。今之后,同读同进之书不能超过4本,而且此4本要难易结合、晦涩和趣味结合、进取型和基础型结合。例如,这个月的书目结构可以调整为:[[蒋介石与现代中国的奋斗]](庞杂的证据和人物)+ [[维摩诘的花雨满天]](维摩诘经讲解)+[[闲情偶寄]](李渔的趣味和雅致)+[[文言津逮]](文言文讲读)。事实上,还有一本书-- --[[说文解字]]精读(原典之书) -- -- 想扔进去,因为这本书前后已经读一年了,尚未终结,此书看起来还得推延。//2017年12月12日 上午 06:49:08//

今天看到毛姆提倡的读书法也与我相似:

<<<
按着编年次序看我下文介绍的书,当然比较方便,但如果你已下定决心去读,我看不出有什么理由非按这次序不可。最好,你还是随自己的兴趣来读;我也不劝你一定要读完一本再换另一本。就我自己而言,我发觉同时读五、六本书反而更合理。因为,我们无法每一天都保有不变的心情,而且,即使在一天之内也不见得会对一本书具有同样的热情。在这种情况下,我们不能不为自己打算。至于我,当然选取最适合我自己的计划。清晨,在开始工作之前,我总要读一会儿书,书的内容不是科学就是哲学,因为这类书需要清新而且注意力集中的头脑,这样我的一天开始了。当一天的工作完毕,心情轻松,又不想再从事激烈的心智活动时,我就读历史、散文、评论与传记;晚间我看小说。此外,我手边总有一本诗集,预备在有读诗的心情时读之,在床头,我放一本可以随时取看,也能在任何段落停止,心情一点不受影响的书,可惜的是,这种书实在不多。 ——《书与你》
<<<
2017年12月26日下午10:22:07
“老眼阅人真烂熟,壮心得酒旋消磨。”(陆游 《醉中浩歌罢戏书》)虽然没有老陆阅人烂熟,喝酒闲消磨的境界,但读完《书架上的神明》我也算是阅人多亦,感概和收获颇多。我的阅人指阅人家之阅读故事。书中所列这上百位知识分子,虽然不是每个人都著作等身,但基本上也可称为当代中国知识分子中的翘楚,是真正的知识分子,而非像当下的人多为知道分子。读书的作用之一是解惑,我就是带着疑问读这本书的, 我的疑问是:怎么读书最好?有哪些好书可读?虽然这本书预设的问题是:哪本书对您影响最大?为什么?但历尽这百人读书史,虽然没有从根本上解决我的这些问题,但也有给了我一些启发,继而又产生了一些新的问题。

在回答预设问题一 ——哪本书对您影响最大——时候,大部分人都回答的相当困难,能直接了当回答的并不多。我也尝试回答这个问题,我也同大部分人一样,难以精准的说出一些书的书名。多人引用了鲁迅对同样问题的答案:”我没有想过,所以我不能回答您的问题。“ 而从每个故事中给出的结果来看,影响最大的书往往都是有预设场景的,是在一定的背景和环境下起到的发酵作用,这可能和这批知识分子的成长环境有关,大部分是文革前后不长时间成长起来的。在那个无书可读的年代,可得之书尤显得珍贵,如果所读之书恰又为一本好书——具有启蒙作用,书的价值就会被无限的放大。如果是在当下环境——信息泛滥,获取书籍的成本几乎可以忽略不计,他们会怎么读书?从大部分人的字里行间也可窥见一斑,他们基本上不读时下流行书。更甚者,如张五常,三十年不读书了。我佩服他们的自信。
这百人知识分子研究领域大多集中在文史哲经,而就每个人的答案中被提及到的书来看,是有一定的共性的,甚至可以这么说,这拨人是站在这些书的肩旁上站立起来的。我把它归纳了一下,有时间一定要啃一啃。

见:[[我的秘密书架]]

除这些专业书籍之外,几乎每个人都对历史钟爱,对历史书籍的阅读更放在一辈子的事情,常读而常新。我说的这些历史书,广义的也包含一些诸子百家典籍。现归纳如下:

见:[[我的秘密书架]]

虽然大部分人都很谦虚和诚恳的承认自己读书很杂,很乱,而从结果来看,可以这么评价,大部分这拨人读书广博,但是某一领域是专深的,读书的广度又影响其研究的高度。虽然这些人都是专业读书人,而自己属于江湖人士,而从读书的角度来看,也应该广而有专,不然最后也会成为为读书而读书的杂家。这就需要计划,读书应该计划的!

//2018年02月28日周三下午04:34:38//
<$transclude mode="block" tiddler=bookinfo/>
读文言文有什么用?

有时候我也问自己,有什么用?

经过这几年读下来,些许体会:

1. 技巧方面:对写作是有帮助的。无论是遣词造句还是行文表达,更加自如了。古代文和言分离,书写文和口头语是两套系统,文人书面表达之言比口述之言更加庄主和优雅,真正做到了文以载言。加之古代有字无词,所以文言的行文更加简洁,如果把古之流行的骈体以及词牌曲牌等韵体统一来看,行文读起来节奏有致,铿锵有声。当然,弊端也是有的,就是今天看起来某些文体晦涩难懂。所以,有志于码字书写的人,文言这一关是万丈高楼之基础。近代那些名不见经传的大家,莫不国学基础深厚。

2. 意识流方面:世界几大文化主体,唯有中华文化源远流长,绵延无断。这就是文字的力量,文以载道,道即文化之魂。所以,读文言可知现在的之所以为现在,又何为现在,未来又何去何从。这也是读史的作用,知兴亡,知更替。

但读文言,不盲从文言。任何思想和事件都是有历史场景的,割裂历史场景,以今之思想假以古人之身,要不对古人嗤之以鼻,要不会盲目崇信。人类发展至今,智力的进步是非常慢的,慢到可以用放大镜来看,我们今天进步的只是术而已,而对道,真正的变革又有多少那?看看三大宗教在当世流行不悖,乃是百年之前人类的思想成果。所以,读文言,不要以为古人之愚昧,这是妄,还原历史场景来看就可以了。
2017年11月25日 上午 02:47:04
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
@@color:gray;也许某一天重新拾起来阅读........不是每本书都需要看完。 @@
<<table-dynamic filter:"[tag[而废]]" fields:"tbl-expand title author location genre created" stateTiddler:"exmp03" tblClass:"w-100 thead-dark" tblCaption:"''搁置书目''">>













<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
''本周读书:''

#《枕草子》 日﹒清少纳言(周作人译)
#《芳华》严歌苓 


''冯小刚的情怀底裤''

严歌苓的《芳华》因冯小刚的同名电影推迟上演而炙热。《芳华》是一部年代小说,讲述了七十年代一帮文艺女兵的芳华岁月,青春、成长、爱情和命运构建了整个故事。严和冯是同龄人,皆为58年出生,严歌苓出身书香门第,12岁时加入成都军区文工团,退伍后入籍美国,开始写作,畅销书作家;冯军队大院长大,高中毕业后参加北京军区文工团,后开始进入中国电影界,炙手可热。严冯芳华如出一撤。如果说能把严歌苓的《芳华》看作其年代回忆录,那么冯把《芳华》拍摄成电影,应该是冯追忆那如歌的青春。

同有军旅背景的严冯二人,如今都功成名就。不过在那个动荡的年代,不是所有人都如其有个灿烂的历程,参军也如同高考一样难,更别说作一位女兵。所以在二人的作品里暗透着一股那个时代的精英之气,情怀多于苦难,多与成长的忧伤和时代的迷茫。若干年前有一部叫《血色浪漫》的电视剧,也讲的是七八十年的故事,军队大院孩子的茬架、拍婆子、参军和下海,据说剧中的人物都来自现实原型--王朔、马未都、冯小刚等,电视剧中的冯裤子暗指的就是冯小刚,连长相都酷似。每一个人的青春都值得追忆,或甘或酸或苦,那就是青春的气息。但不是所有人的青春值得留恋,我想这类年代作品--军旅和部队大院既得利益者二代青春追忆作品---更多的是迷恋和不甘吧! //2017.9.29.20:00//

那个战争胜利进行清理战场和收割的年代,部队文工团无疑是一个军队的安乐窝和内部工艺夜总会,
2017.9.30.16:51


<<<
	晚上排练或班务会之前,我们有一小时的自由活动时间。短短一小时的自由,我们得紧张地消费。阴暗角落偷个吻,交换一两页情书,借一帮一一对红调调情,到心仪的但尚未挑明的恋人房里去泡一会儿,以互相帮助的名义揉揉据说扭伤的腰或腿……那一小时的自由真是甘甜啊,真是滋补啊,以至后来游逛了大半个世界拥有着广阔自由的我常为三十多年前的一小时自由垂涎。
<<<


<<<
我们是信仰平凡即伟大的一代人,平凡就是功劳,就是精英,好几十年我们平凡得美滋滋的。时代有它不可告人的用心,教导我们平凡了更平凡,似乎我们生来还不够平凡,似乎刘峰的一生没有被埋没在平凡中。同时埋没于平凡的还有一个能工巧匠刘峰,一个翻绝活儿跟斗的刘峰,一个情操人品高贵如圣徒的刘峰,一个旷世情种刘峰。本来刘峰平凡善良是无妨的,偏偏用他的平凡来大做文章,偏偏无视他可能的非凡之处,抬杠说他平凡就够了,就伟大了,足够被推举上大理石基座。在他生命的最后几天,他或许想到自己的一生,想到此生与林丁丁的错过,全因为他平凡,被塑成平凡的塑像,搁在冰冷的基座上。非得强调他的平凡,定性他的平凡,才能确保那份平凡的不变,平凡了,才好使唤;对我们来说,平凡的刘峰真是好使唤。于是误了他一生,尤其他一生的真爱。因为,偏偏天下女人在心底里,都是不信平凡的;尤其女人如林丁丁,千万年前该跟骏马一并儿,同属于最凶悍骁勇的酋长,怎么可能心服口服地爱上平凡?
<<<
//( {{!!modified}} )//

<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

The Feynman Technique: The Best Way to Learn Anything


<<<
"There are four steps to the Feynman Learning Technique: Choose a concept you want to learn about Pretend you are teaching it to a student in grade 6 Identify gaps in your explanation; Go back to the source material, to better understand it. Review and simplify (optional)",
<<<


There are four steps to the Feynman Learning Technique:

* Choose a concept you want to learn about
* Pretend you are teaching it to a student in grade 6
* Identify gaps in your explanation; Go back to the source material, to better understand it.
* Review and simplify (optional)

Feynman understood the difference between knowing something and knowing the name of something, and it’s one of the most important reasons for his success. Most of us focus on the wrong type of knowledge. The first type of knowledge focuses on knowing the name of something — what it’s called. The second focuses on actually knowing something — that is understanding something.<<footnote "❶""https://fs.blog/2012/04/feynman-technique/">>

[[Λ-Reading]]:#40 如何怼杠精和键盘侠?



<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
如果您看过清代沈复的《浮生六记》(记录与妻卿卿我我恩爱有加的笔记小品),您一定会对《浮生三记》侧目的。//17.9.20//


初以为《浮生三记》也出自沈复,启书方知实乃其本家沈君山,两人相隔上百年,虽邯郸学步其先祖沈复,但绝非狗续貂尾。沈君山如沈复也乃一大才子,与连战、钱复、陈复安(陈诚之子)同被雅称为台湾四大公子。沈君山出身名门,外祖父是最早一辈留学法国的留学生,父母均为民国留美农学博士,可谓农学世家,以她母亲命名的“骊英1号”、“骊英2号”等小麦系列影响至今。内战后随父迁入台湾,后留学美国学习物理,中年后回台任清华大学校长,晚年中风退休开始关心两岸关系和公益事业。沈君山的朋友圈可谓名人大家云集,张学良、胡适、蒋经国、吴光中、梅贻琦、金庸、钱复、许倬云、聂卫平等不一而足,这也是其文字看点之一。

《浮生三记》和其《浮生再记》相比,我更喜欢三记,虽然两本书都是短篇回忆录和之前发表文章合集,但是三记更多收集的是人文方面内容,例如《花莲的白灯塔》记忆其青年恋爱的激情岁月;《一着而为天下法》则是写一代围棋大师吴清源老先生的。当然也有一些评论小品,例如对电视剧《人家四月天》的座谈会,谈徐志摩和他们那代人的爱情,可窥其爱情观,摘抄以飨:

<<<
良人者仰仗终身者,红盖头掀起来,终身便从一而终的情形再不复见,但新的婚姻有新的困扰,一个人一生大多要经过几次痛苦的抉择,几次悲欢离合。完美的爱情和完美的婚姻完全不一定能画上等号,有情人当然最好成为眷属,但不必也不一定要成眷属,婚姻的形式在改,将来也许契约的形式都会改掉,但终久是共同相处的伴侣,有灵性的伴侣,有知性的伴侣,有事业的伴侣,更有生活的伴侣。所谓生活包括柴米油盐日常相处。聪慧才情的男女,在爱情中沉湎于前两者,而婚姻的基石却往往在后两者。林徽音选择梁思成,徐志摩得到陆小曼,在爱情层面上,也许后者更“美”,更罗曼蒂克,但在婚姻层面上,成败得失是十分显然。
>真正懂得爱情的人,不只在获得,更在如何转化,失败了,如何化爱情为友情,成功结果了,也要化激情为温情,使之可长可久。当然,分手总是痛苦的,情感的伤害难免,但时间会让它痊愈,最重要是不要伤害对方的自尊,也不必伤害自己的自尊。尤其是年轻的男女,往往分不开爱情和自信。失恋的时候,最伤心的往往不是缘分已尽,而是“我真的那么差吗?”事实上,爱情是盲目的,人生一生的成败和情场一时的得失,并没有关联,只是太上何能忘情,必须分手时,一定要互相帮助,重建自信的帮助。
<<<


还有记述梁思成与金岳霖及林徽因三人的关系,也破有唏嘘:

>梁思成续娶的第二位夫人林洙,写了本林徽音的传记,对这事经过有生动描述,录之于后:

>我曾经问起过梁公,金岳霖为林徽音终生不娶的事。梁公笑了笑说:“我们住在总布胡同的时候,老金就住在我们家后院,但另有旁门出入。可能是在一九三一年,我从宝坻调查回来,徽音见到我哭丧着脸说,她苦恼极了,因为她同时爱上两个人,不知怎么办才好。她和我谈话时一点不像妻子对丈夫谈话,却像个小妹妹在请哥哥拿主意。听到这事我半天说不出话,一种无法形容的痛苦紧紧地抓住了我,我感到血液也凝固了,连呼吸都困难。但我感谢徽音,她没有把我当一个傻丈夫,她对我是坦诚和信任的。我想了一夜该怎么办?我问自己,徽音到底和我幸福还是和老金一起幸福?我把自己、老金和徽音三个人反复放在天平上衡量。我觉得尽管自己在文学艺术各方面有一定的修养,但我缺少老金那哲学家的头脑,我认为自己不如老金。于是第二天,我把想了一夜的结论告诉徽音。我说她是自由的,如果她选择了老金,祝愿他们永远幸福。我们都哭了。当徽音把我的话告诉老金时,老金的回答是:‘看来思成是真正爱你的,我不能去伤害一个真正爱你的人。我应该退出。’从那次谈话以后,我再没有和徽音谈过这件事。因为我知道老金是个说到做到的人,微音也是个诚实的人。后来事实也证明了这一点,我们三个人始终是好朋友。我自己在工作遇到难题也常去请教老金,甚至连我和徽音吵架也常要老金来‘仲裁’,因为他总是那么理性,把我们因为情绪激动而搞糊涂的问题分析得一清二楚。”
>在《林徽音文集》中,后期的诗文常常提到金岳霖,很多全家福或朋友出游的照片里,全有老金,斜着头仰起脸非常神气的样子。林去世后,他写了副有名的挽联:“一身诗意千寻瀑,万古人间四月天。”后来金和梁的友情一直维持到文革时期,都受尽折磨,也互相激励。我们可以说,在世俗眼光里,他是“退出”了,但在更高一个层次上,他是“进去”了。//17.9.23//


读回忆录的文章,总给人以娓娓之感。如读沈之同辈''黄仁宇的回忆录《黄河青山》'',如同看一部口述历史的纪录片。黄出身寻常百姓之家,在蒋介石的麾下位至上尉参谋,后弃戎从文留学美国,成为一代历史研究名家。黄的文章字里行间虽没有沈文章透露出的贵族精英之气,但多了一份人性和历史的沧桑之感。而读沈之回忆录,别有一种清风佛面之喻,一方面因沈之经历,历经三朝三国;另外就是出身名门,国学深厚,总能在其文字里找到现代社会欠缺的一些东西。//17.9.23//
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

!! 概率的第一条——也是最基础的一条——定律:

两个事件同时发生的概率,永远不会比各事件单独发生的概率大。

所有长度为6个字母且第五个字母为n的英文单词,和所有以ing结尾的有6个字母的英文单词,哪一个更多?大多数人选择了后者。为什么呢?因为相较于一般的第五个字母为n的6个字母的单词,人们更容易记起以ing结尾的单词。

现代数学中的数字0有两个关键性质:在加法中,它是唯一不改变被加数值的数;而在乘法中,它是唯一与任何数相乘却不改变自身值的数。这个概念直到公元9世纪才由印度数学家摩诃毗罗引入。

!! 概率的第二条定律:
概率组合规则:如果两个可能事件A与B相互独立,则A与B同时发生的概率,等于各自单独发生的概率的乘积。

!! 概率的第三条定律:
 如果一个事件有多个不同且互不重叠的可能结果A、B、C等,那么结果A或结果B发生的可能性,等于结果A和结果B各自单独发生的概率之和,而所有可能结果(A、B、C等)各自单独发生的概率之和等于1(即100%)。

''如果你想知道两个独立事件A与B同时发生的可能性,就用乘法;如果想知道两个互斥事件A或B发生的可能性,就用加法。''

2020年12月14日周一下午03:08:25

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
`field`参数设置为`note`,tidder加上下面代码,现实备注或者说明。

```
<div style="background:#c8d4d7">
{{!!note}}
</div>
```
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<<textSliderNoButton 公司与个人 "
#公司是盈利性组织
#个人和公司必须双赢
#在认同公司理念且能够给公司创造足够价值的基础上,为个人发展而工作">>

<<textSliderNoButton 如何做事 "
# 方法论
## 完成一件事有好几条途径,优秀的人的途径最短
##任务拆分很容易得出做事的方法论
##好的「方法论」会让你具备更强的「创造力」!
###时刻问自己:「是否具备创造力?」

#任务拆分
##''成长过程会经历:能力越大、责任越大、事情越多
''

##思路
###拆分细化为多个点
###任务四象限,决定优先级
####紧急重要
#####赶紧搞定
####重要不紧急
#####时刻保持关注,以免沦为「紧急重要」
####紧急不重要
#####少少益善,学会拒绝
####不紧急不重要
#####靠自律

##SMART原则
###S:任务是否明确
####不明确的任务搞起来就是浪费生命
###M:任务是否可度量
####不可度量如何体现价值?
###A:任务是否可搞定
####搞不定就不应该接,接就得有魄力搞定
###R:任务的相关性如何
####决定了任务的价值,相关性越高越能体现价值,比如这个任务搞定了能让团队获得公司、客户等更大的认可
###T:任务的时间
####Timeline:任务时间轴,什么时间点需要搞定什么
####Deadline:任务的最后期限,做评估时最好提前,因为总会有各种意外或拖延本性
####Timeline上一些很关键的时间点我们可以称为里程碑,搞定每个里程碑应该庆祝下
##自己欠缺什么,立马发现
##是否需要寻求帮助,谁能帮你,自己单干? Arrow Link

##团队
###士气第一
###当你有团队时,分配与调度好任务很关键
###做得好是真并发
###做不好会死锁">>


<<textSliderNoButton 沟通、反馈与责任 "
#一个无沟通能力的人,要么是天才,要么是不可爱的人,不过天才也就寥寥无几而已,你并不是
#反馈要及时
##避免出问题不反馈,影响进度
##方式
###正式的:邮件
###临时的:微信等即时通信
###着急的:给个电话
#工作有大小,责任心无大小

#''周报的透明''
##意义:大家互相了解工作与心得,有利于自己的判断与成长
###观察是一种多重要的技能
###不是单纯的给领导汇报工作
##周报需体现本周工作总结、下周工作计划、心得/问题/建议(我们叫唧唧歪歪)
##周报可以很好体现一个人的
###总结能力
###计划能力
###分享能力
####想象下:一个人从来没有心得/问题/建议的沉淀或反馈,这个人是一个相对封闭的人,在团队作战中很难达到默契
####当然,这种分享能力远不仅仅是在周报这种形式里">>

<<textSliderNoButton 团队意识 "

#很多人都说自己具备足够好的团队意识,但是有些人却并不是这样
##举个小例子:一个10人团队约定早上10点开会,而你迟到了10分钟,对于团队来说你浪费了整个团队100分钟(10人*10分钟)的生命。有些人无羞愧之心要么是意识不到这点,要么这个团队的风气就是这样...
#团队意识是建立在互相信任的基础上
#Leader最关键,优秀的Leader一定会有个优秀团队
##兵熊熊一个
##将熊熊一窝">>

<<textSliderNoButton 成长 "
#新事物的敏感性
##保持好奇心
##不要局限在自己的圈子,适当跨界吸收灵感
##订阅国内外优秀博客/资源,Inoreader/深蓝阅读不错
##选择性参与一些必要的会议,听必要的主题,讨论必要的话题
#关于知识
##对知识的渴望程度决定了前进动力的大小
##当知识很廉价地摆在你面前,你反而不会珍惜
##对知识保持敬畏之心
#不要让自己成为矫情/浮夸的人
#和比你厉害的人在一起,和一流的人工作
##指点往往是精华
##杜绝笨蛋爆炸
###二流的人招进来的人不太可能是一流的
###久而久之一个团队就笨蛋爆炸了
#思考
##批判性思考
##换位思考
###对于一个团队来说,这点太关键
#提问的智慧
##遇到问题先独立思考,尝试独立解决,尽最大努力后再提问
##提问时,礼貌很关键(对知识的敬畏),清晰表达很关键
##解决后,分享出来帮助更多需要帮助的人
#小事心态
##越基础的事越关键,越需要细心
##不要一味盲目追求「高级感」,而忽视「小事」/「简单事」/「基础事」
##基础不牢、地动山摇
##小事做不好,别提大事
#无论是个人还是团队的成长都需要不断沉淀知识,没有沉淀根基不稳
">>


<$button message="tm-close-tiddler">Close Me!</$button>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
!! 故事一

一个英俊少年,天天到湖边去欣赏自己的美貌。他对自己的容貌如痴如醉,竟至有一天掉进湖里,溺水身亡。他落水的地方,长出一株鲜花,人们称之为水仙。 

水仙少年死后,山林女神来到湖边,看见一湖淡水变成了一潭咸咸的泪水。

 “你为何流泪?”山林女神问道。

 “我为水仙少年流泪。”湖泊回答。

 “你为水仙少年流泪,我们一点也不惊讶。”山林女神说道,“我们总是跟在他后面,在林中奔跑,但是,只有你有机会如此真切地看到他英俊的面庞。” 

“水仙少年长得漂亮吗?”湖泊问道。 “还有谁比你更清楚这一点呢?”

山林女神惊讶地回答,“他每天都在你身边啊。” 

湖泊沉默了一会儿,最后开口说:“我是为水仙少年流泪,可我从来没注意他的容貌。''我为他流泪,是因为每次他面对我的时候,我都能从他眼睛深处看到我自己的美丽映像。''” 

“多美的故事啊!”

!! 故事二

一位商人派他的儿子去向人类的智慧大师讨教幸福的秘密。少年在沙漠中跋涉了四十天,最后来到一座美丽的城堡。城堡坐落在高山之巅,少年寻找的智慧大师就住在那里。

少年没有遇到圣人,却走进了一个大厅,看见一派热闹的场面:商人进进出出,四周角落里的人在聊天,一支小乐队演奏着曼妙的轻音乐,桌子上摆满了当地的美味珍馐。智慧大师在同所有的人交谈,足足等了两个小时才轮到少年。 

智慧大师认真地听完少年陈述此番来访的目的,却说他此刻没时间给他讲解幸福的秘密。他建议少年先在他的城堡里转一转,两个小时之后再回来见他。 

“‘同时,我想请你办件事。’智慧大师说着,递给少年一把茶匙,并在茶匙里滴了两滴油。‘你走路的时候拿着这把茶匙,不要让油洒出来。’ 

少年开始沿着城堡的大小台阶上上下下,两眼始终盯着那茶匙不放。两个小时之后,他回到智慧大师面前。

 “大师问道:‘你看见我餐厅里的波斯壁毯了吗?你看见园艺大师耗时十年培育的花园了吗?你留意我图书馆里那些漂亮的羊皮纸文献了吗?’ 

少年很不好意思,坦白说他什么也没看到。当时他唯一关注的是不要让那两滴油洒出来,因为那是智者托付他办的事。 

“‘那你就再去看一看我城堡中的奇珍异宝吧。’智慧大师说,‘如果你不了解一个人的家,就不能信任他。’ 

少年放松下来,拿起茶匙,重新开始在城堡里漫步。这一次,他注意到了挂在天花板上和墙壁上的那些艺术品,看到了花园,看到了周围的山岭,看到了娇嫩的鲜花,看到每件艺术品都摆放得恰到好处。

再回到智慧大师面前时,他详细地叙述了刚才看到的一切。

 “‘可我托付你拿着的那两滴油在哪儿呢?’智慧大师问。

 少年一看那茶匙,发现油已经洒光了。 

“‘这正是我要给你的唯一忠告。”智慧大师说,''“幸福的秘密就在于,既要看到世上的奇珍异宝,又要永远不忘记勺里的那两滴油。”''

2018年11月21日周三下午10:12:48
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
今天推荐两个视频//(需翻墙观看)// --- --- 也是我一直以来喜欢的一档节目,都和读书有关。一个是关于读书、选书和读书结果论;一个是关于读书、写作和细节的关系。两个都蛮有真货的。

''1. 《读什么书成什么人》''

<iframe width="560" height="315" src="https://www.youtube.com/embed/3YHIYBqb9kk" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

视频内容大意整理:


<<<
1. 机场书店

 2015年机场卖书达6亿人民币。主要是飞机延误的原因,乘客在机场滞留时间没增减十分钟,机场零售收入增加16%。
机场书店书的类型就是这个社会的封面,反映了这个社会的情绪,例如成功学、禅修、国学类。(人对失去的敏感,远远超过得到)(知识付费的对象:刚大学毕业,踏入职场没多久人群。)(成功类书最大的作用是不能让你成功,但是能让你兴奋起来,是一种兴奋剂。)

2. 书的价值高低

不同的书有不同的存在理由。
 一个人读书,如果读书使自己变得越来越有心理优越感,那么书就白读了。不要衣冠看人!

现在的社会,部分人已经丧失了读一本厚书的能力。

读厚书就是一种延迟满足。

3. 掌握一种新的语言(例如管理学、金融学等)可以增大自己能力,改变自己的思维模式。

4. 一部分畅销书只是换了一种语言或者说法来讲一些通识,从而看起来很有理。

 一个人到了一定年龄就会有功能性文盲症,很难接受新的东西,读书只是为了印证自己的想法和认识。

5. 一些功能性书,如教人如何做什么的书,很难看书学会。就像看书学会游泳是不可能的。

6. 很多书籍排行榜都是人为做出来的,并没有什么意义。

7. 读书能力要看读什么样的书,它未必就是一路增长的,甚至会退步的。没有了吸纳新知识的能力,没有了知识的敏感性。做学问和读书不能停,停则退步。

8. 目的性颤抖。做事目的性太强有可能反而更糟。
<<<


2. ''《魔鬼藏在细节里》''

<iframe width="560" height="315" src="https://www.youtube.com/embed/OO8bo_fpoQg" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

细节需要自己深入体会。


2018年05月01日周二上午10:44:24 
最近在做一个关于儿童阅读的互联网项目,有机会接触一些家长和孩子,也在一些场合演讲分享了一些自己对阅读历程和阅读感悟,大致总结一下。

!! 一个故事

<<<
20世纪初,在山东省平原县一家农户里,住着一位老人和他的小孙子。每天早上,老人都坐在桌边带着他的小娃,摇头晃脑地读着《诗经》《春秋》《三国志》等古籍,书声琅琅。

    一天,小孙子问道:“爷爷,我试着像你一样读《道德经》,但是不知怎么回事,我都猜不透那里面的意思。有时,我似乎理解了一丁点儿,可是一合上书,又立刻忘记了。这样读这些书有什么收获呢?”

    老人安静地将一些煤投入火炉,然后说道:“用这个装煤的篮子去河里打一篮子水回来。”孩子照做了,可是篮子里的水在他回来之前就已经漏完了。孩子一脸不解地望着满脸沧桑的爷爷。他对爷爷说道:“用篮子打水是不可能的。”

    “你真的认为一点儿用处都没有吗?”老人微笑着说,“你看看这篮子。”孩子看了看篮子,发现篮子已经十分干净,没有煤灰沾在竹条上面了。“孩子,这和你读古典书籍一样,你可能只记住了只言片语,它的意思或许你一点儿也不理解,但是,在你阅读的过程中,那些文字,以及你朗诵时的气氛,它会影响你,会净化你的心灵。”

    这位小孩记住了这句话。后来,他一直本着这样信念,终生与书籍为伴,不断进取,最终成为我国宗教学的泰斗——他就是已故国学大师任继愈先生。
<<<


!! 不要错过脑发育黄金期
哈佛大学儿童发展中心研究数据显示,儿童90%的脑发育在5岁之前完成。

美国心理学家布鲁姆则认为,如果把一个人长到17岁时达到的普通智力水平计为100%,那么从出生到4岁时他已经获得50%的智力,4-8岁又获得30%的智力,8岁到17岁只获得剩下的20%。

!! 种下一粒种子

就个人的经验,小时候偶然看到的一本书,书中的某种文字或场景,会深深的埋藏在记忆中,就像镌刻在脑子中磨之不去。这些记忆或成为未来的目标、方向或者动力,甚至成为塑造性格的关键性因素。

小时候看的小人书《悲惨世界》中有一个画面一直到现在清晰可见:一个瘦小羸弱的小女孩提着一桶水走在漆黑的大街上,面部充满苦难。

还有一本书应该是小学时候看到的,柯云路的小说《成功者》。这本书对我影响也很大,虽然故事细节我已经记不得了,但是我依然非常清晰的记得那是在一个冬日上午的校园里,我坐在墙根底下晒着太阳,默默的定下一个目标,长大后要成为一名记者或者是一个成功的商人。就是许多年前埋下的这粒种子,使我后来成为了一名记者,和在成为商人的路上行走。

这就是读书种子的力量。

!! 让读书发酵时间越长越好

上面我提到了“读书种子的力量”。如果把读书放在人生历程来看,无论从是读书的实用主义,还是从人生发展阶段(启蒙、成长、成型)角度,读书要趁早!我也是毕业多年后才开始对读书发起了猛攻,每年读书以百计,虽然什么时候开始读书都不晚,然而这句话总带着鸡汤味,每当我读到一本好书或者看到一则让我醍醐灌顶的故事,我总难免发出感叹:这他妈的为什么不让我早点遇到!

读书虽然是一辈子的事情,但是读书越早越好。如果把读比喻为酿酒的过程,那么就让这坛酒早点酝酿、发酵。从经济学来看这个行为,越早读到一本好书,这本书的后期边际效益越大,成本越低。

!! 不要错过人生的读书黄金时间

上面提到人生读书时间的问题。从人生成长自然和社会属性来分析,人的一生读书的黄金时间并不多,一旦错过有可能错过了一辈子。我说的黄金时间指的是能最大限度集中读书的时间。在我看来,人生黄金读书时间有三段:小学前、大学期间和老年。这里面大学期间尤为珍贵,我称之为“钻石读书时间”,因为这段时间无论是身体状态和智利水平都是最佳,读书环境也是最为便利。学前时光,读书虽然也很重要,然而基本上是亲子读书(这是另外一个话题:亲子阅读)模式,其受父母教育程度限制,尚不能自主阅读(亲自阅读)。老年阶段我们不要去管它了,强弩之末,唯是夕阳红。

这里补充一点,我所说的读书非读课本,读课本那叫学习,非真正的读书。
(待补)

2018年09月23日周日上午11:07:25
!!结构
 <<textSliderNoButton "''管理科学''" "
*[[奥卡姆剃刀 (Occam’s razor)|简单,简单,再简单]] ([[参考|http://www.safalniveshak.com/latticework-mental-models-occams-razor/]])
*[[帕金森定律 (Parkinson’s Law)|https://www.farnamstreetblog.com/2013/12/parkinsons-law/]]
*[[过程与结果 (Process versus Outcome)|https://www.washingtonpost.com/business/barry-ritholtz-outcome-or-process--what-investment-focus-succeeds-over-time/2014/02/21/66e5b4c4-98cb-11e3-b931-0204122c514b_story.html]]">>

返回[[思维模型|Thinking Models]]

<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
!This is an encrypted Tiddler
<$transclude mode="block" tiddler=booklogsinfo/>

''还原论''(Reductionism,又译还原主义、简化论、专简论与化约论)是一种哲学思想,认为复杂的系统、事务、现象可以通过将其化解为各部分之组合的方法,加以理解和描述。(维基百科)

还原论的思想在自然科学中有很大影响,例如认为化学是以物理学为基础,生物学是以化学为基础,等等。植物学的发展也逐步走向还原论哲学思想,从古典的植物学分类框架发展到分子植物学以及以DNA为基础的植物分类思想和标准。在社会科学中,围绕还原论的观点有很大争议,例如心理学是否能够归结于生物学(我赞成这个观点),社会学是否能归结于心理学(所以产生了社会心理学),政治学能否归结于社会学,诸如此类。

在产品设计或者计算机科学领域,关注点分离原则(或思想)是还原论哲学思想的的具体应用。

''关注点分离''(Separation of concerns,SOC)是对只与“特定概念、目标”(关注点)相关联的软件组成部分进行“标识、封装和操纵”的能力,即标识、封装和操纵关注点的能力。是处理复杂性的一个原则。由于关注点混杂在一起会导致复杂性大大增加,所以能够把不同的关注点分离开来,分别处理就是处理复杂性的一个原则,一种方法。展现关注点分离设计的程序被称为模组化程序。


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
!!! 哈维尔:《哈维尔选集》

<<<
“意识形态的花言巧语,成了一座无穷的大山,当权者不断希望借此影响人们的思想,而由于这些花言巧语全无内容,公众通常不大察觉在其深处流露了一个明确而有意义的讯息,一项现实的忠告,‘如果可能的话,别碰政治……那你就平安大吉’”(41页)。
<<<

说的真好!意识形态就是当权者楔进人民脑中的病毒,一是为了秩序控制,二是为了歌功颂德。


<<<
“现代国家和现代政治权力的本源就在这里,即就在那一瞬,人类理性再次开始离弃人性,离弃个人经验,离弃个人良知和个人责任”。
<<<
哈维尔在《否定政治的政治》一文中,把它称为“权力匿名化和非个人化”,于是,它把自身化约为仅仅是统治技术和操纵技术(136页)。

葛兆光的评论:

<<<
其实,集权政治就是如此,不仅仅是现代中国,在传统中国也一样,比如明代初期的情况,就是把道德与政治权力合理化,把统治技术赋予道德化的意义,于是同一性再度确立。
<<<

葛老师虚晃一枪,皮里阳秋。三个代表、科学发展观、构建人类命运共同体等都是统治技术赋予道德化,只是走马灯似的换的太勤了,就失去了本身的意义了。

!!! 萨义德:《东方学》

近来的研究也开始从“真实历史与文化”的预设转向“建构的文本与话语”,于是,一切历史分析都仿佛文学叙述,而研究者又赋予这种“叙述”以话语的“真实性”。因为他们说,当这种话语或文本一旦拥有权力,它将取代“真实的存在”而成为“存在的真实”。

“一切历史分析都仿佛文学叙述”这种现象还好,学人明星化这种现象才是真正的堕落,贻害无穷。

2019年02月26日周二下午09:55:29
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
!!! 鄂兰:《极权主义》

<<<
二十世纪给人最深刻记忆的历史,除了技术的增长、生活的富裕之外,最重要的是极权主义、战争恐怖和贫富差异。而这种历史的根源之一,就是“极端的追求”或“极权的形成”,按照霍布斯邦的说法,二十世纪集成了十九世纪以来的“世俗宗教思想,如社会主义与民族(国家)主义,个中的神话,则是抽象的教条,或被当作神人般的政治人物”(中文本,853页)。

那么,极权主义从何而来?鄂兰在其What is Authority一文中依照统治结构、管理方式、政体组织,区分三种政体:一是权威形式的政府(the authorian government),这种金字塔式的政治体制,其权威的依据来自政体之外的、超越政治的力量(如“天”、“上帝”),由此整个结构异常一体,而中心在金字塔之顶部,如教廷或罗马政治体制,其权力依据一为上帝,二为传统;二是专制独裁之政府(the tyrannical government),这是“平等”的政体,一人专制下所有人均无权力,公众无空间发表其不同政见,亦无团体保护其自由,这一政府的权力依据是武力;三是极权主义形式之政府(the totalitarian government),它如同一个洋葱式的结构(the structure of onion),中心是空的,政治领袖恰在此中,其凭依的权力来源是一种虚幻的“真理”或“理想”,如民族主义、共产主义等普遍被认同的幻想,只是一旦幻想幻灭,其结构即崩溃(参见译序的说明)。
<<<

China应该是属于二三交集。

!!! 萨义德:《知识分子论》

<<<
萨义德指出,“知识分子的公共角色,是局外人、‘业余者’、搅扰现状的人”(outsider,“amateur”,and disturber of the status quo)(28页)。

“不管个别知识分子的政党隶属、国家背景、主要效忠对象为何,都要固守有关人类苦难和迫害的真理标准,扭曲知识分子公开表现的,莫过于修饰整扮、噤若寒蝉、爱国情绪及事后自圆其说的变节”(51页)。
<<<

修饰使人爱惜羽毛因而不能勇敢直率,爱国情绪则使人盲目服从政治主流或者听任狭隘的感情,事后自圆其说则更不消说,是一种怯懦,正如萨义德所说的“变节”。

萨义德指出,当社会权威借由媒体、政府和集团铺天盖地的控制和压迫,使得人没有半点改变的机会的时候,人会感受到沉重的压力,因而特别需要知识分子具有“反对的精神”(a spirit in opposition)而不是“调适的精神”(a spirit of accommodation)(33页)。

原本怀着不同思想、目标、信仰的个人就被“国家”、“我们”这样的词汇笼罩在那个大一统的真理象征中,似乎不在这里就不是“我们”,而是“异端”或“另类”,甚至被革出这个“国家”成为“叛国者”。可是,这个政府却被视为“国家”,而“国家”却被先验地预定为“祖国”。所以,我们常常在电视上可以看到“我们万众一心”、“好大的一个家”,“我们”、“祖国”有何等巨大的笼罩性力量。

2019年02月23日周六下午08:15:55
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
梁文道在《[[我读]]》里提到一个“''监狱视角''”的概念很有意思。

<<<
一个人,在他失意或是坐牢的时候读历史,会从历史里面读出阴谋诡计,读出一种被我叫做“监狱视角”的东西:把历史看成是一种规律,认为我只要摸懂这个规律就能东山再起,这是一种为现实服务的阅读。
<<<

“监狱视角式阅读(监狱式阅读)”更准确的说是一种探究自我救赎的过程,是一种心理修复和自我催眠。按照梁文道的说法是“现实服务的阅读“,不如说是一种情绪阅读。这种阅读很要命,或陷入自我挖掘的陷阱,坐在陷阱里遥望天空,只能看到寥寥星辰。

与“监狱式阅读”相对的应该是“成功学式阅读(或 机场书店式阅读)”,这种阅读同样是危险的。成功学书最大的作用是不能让你成功,但是能让你兴奋起来,是一种兴奋剂。(参见[[关于读书的两个视频]])

还有一种写作,叫''监狱式写作''。

<<<
如果你没办法写出畅销的通俗小说,没办法完全靠写作为生该怎么办?有一个办法就是去坐牢。很多有名的作家都是在监狱中完成他们的作品的,比如法国情色文学大师萨德侯爵 <<ref "[1]">> ,他那些充满鸡奸、诱奸、变态、性虐待情节的书都是在监狱里面完成的。或者像王尔德,后来坐牢的时候也写了很多好东西。最妙的是你坐牢之后就不用再担心生活费用的问题了,有国家养着你。换言之,某种程度上你像是加入了作协,有政府给水给米,你在里头专心写作,不过前提是你坐牢的时候犯的问题不是太大,不是连写作的纸笔都不能给你的情况。如此说来,狱中创作的确是作家们可以考虑的出路之一。
<<<

梁文道说的不错。监狱确实是一个写作好环境,但是梁文道分析的还不够透彻。监狱里之所以写作高效、高产和具有作品高潮,不是空间的静谧和对生计的无忧,真正起作用的是无欲。在监狱里一切欲望和自由都是要被打压和限制,所以就没有了起心、动念,您真正拥有的和自由的只有灵魂和思想,而这又正是写作最需要的。如今有多少人已经具备一定的物质条件可以达到独立空间和无忧无虑的生活,但是没有见多少人可以写出上品佳作,因为在这种条件下欲望可以肆虐、可以到处伸张,何谈灵魂的自由的翱翔啊。

2018年06月11日周一下午02:15:51

-- -- --

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "萨德侯爵(1740-1814),全名唐纳蒂安·阿尔丰斯·弗朗索瓦·德·萨德(Donatien Alphonse Francois Sade),是一位法国贵族和一系列色情和哲学书籍的作者,以其所描写的色情幻想和他导致的社会丑闻而出名。以他名字命名的萨德主义是性虐待的另一个称呼。代表作有《一个牧师和一个临死的人的对话》、《索多玛的120天》、《闺房哲学》等。">>
思维系统1和系统2都有其明显的个性:系统1自主性很强,是不受控的--- ---无法自行阻断,消耗体能也微乎其微,所以运行起来悄无声息,无法察觉。系统2,运算能力很强,同时也是消耗体能的大户,所以系统2天然具有惰性,需要启发和引导其运行。所以,从思维的逻辑上,思维系统会挑选消耗能量小的解决方案从而输出,消耗能量小的解决方案特性之一就是:简单(当然还有直接、明了等其它属性)!

//2018年01月29日周一下午10:50:09//

这一“简单法则”,在其它领域也得到了验证,例如“奥卡姆剃刀”。

`奥卡姆剃刀`,又称“奥坎的剃刀”,拉丁文为lex parsimoniae,意思是简约之法则,是由14世纪逻辑学家、圣方济各会修士奥卡姆的威廉(William of Occam,约1287年至1347年,奥卡姆(Ockham)位于英格兰的萨里郡)提出的一个解决问题的法则。“奥坎的剃刀”简约法则核心即,''“如果关于同一个问题有许多种理论,每一种都能作出同样准确的预言,那么应该挑选其中使用假定最少的。尽管越复杂的方法通常能做出越好的预言,但是在不考虑预言能力(即结果大致相同)的情况下,假设越少越好。”'' 简单的理论比复杂的理论更好验证。后世在他的基础上进行了很多更加丰富的规范化描述和补充。牛顿说:''“我们需要承认,自然事物各种现象的真实而有效的原因,除了它自身以外再无须其他,所以,对于同样的自然现象,我们必须尽可能地归于同一原因。”'' <<footnote [1] "Primary source: Newton (2011, p. 387) wrote the following two philosophizing rules at the beginning of part 3 of the Principia 1726 edition.
    Regula I. Causas rerum naturalium non plures admitti debere, quam quæ & veræ sint & earum phænomenis explicandis sufficiant.
    Regula II. Ideoque effectuum naturalium ejusdem generis eædem assignandæ sunt causæ, quatenus fieri potest. ">>  罗素提供了奥卡姆剃刀的一个特别版本:“如果可能,将已知实体组成的结构,替换为未知实体的推断。”

<<imageSlider  [[https://cl.ly/pFbu/download/%E5%9B%BE%E8%A7%A3%E2%80%9C%E5%A5%A5%E5%8D%A1%E5%A7%86%E5%89%83%E5%88%80.jpg]]    "图解“奥卡姆剃刀">>

虽然“奥卡姆剃刀“并未思维科学领域的研究成果,但结论或者决策结果符合认知科学的运行逻辑。就行其它领域对此的论证一样:

审美和宗教领域:“自然是简单的,关于自然的简单假设更可能是正确的”

数学:奥卡姆剃刀的形式之一,是基础概率论的直接结果。根据定义,任何假设都会带来犯错误概率的增加;如果一个假设不能增加理论的正确率,那么它的唯一作用就是增加整个理论为错误的概率。

哲学:卡尔·波普尔认为,对于简单理论的偏爱并不需要诉诸实践或者审美考虑,只需要使用可证伪性标准即可得出:比起复杂的理论来说我们偏爱简单的理论,“因为它们涵盖了更多的经验内容,因为它们更容易检验”

......

简单!在看看一下“萨顿定律”怎么诠释的。

`萨顿定律`,源于一名耿直的银行抢劫犯匪威利·萨顿,据说他在回答抢银行的原因时回复:“因为钱就在这里。” 够直接!这完全符合奥卡姆剃刀原则,我想法官也不会否认。而萨顿定律的应用主要在医学上。在医学诊断时,先考虑较明显、较可能确认的项目,因此应该针对最可能确认的项目进行测试。萨顿定律也可以用于工程诊断,像是计算机程序的除错等。

“因为钱就在这里!”一切从最简单(显而易见)的入手!

萨顿定律在对需要简单快速做出判断的“除错”是显而易见的有效指导。而在另一需要简单判断的场景,席克定律就能派上用场,尤其是交互设计方面。

`席克定律`,是英国心理学家William Edmund Hick提出,其理论指出当选项增加时,下决定的时间也增加。用现实例子来解释,这就是你''为什么在餐馆经常见到简短的菜单——他们不想把顾客吓跑。''

席克定律运用到设计中。例如设计网站时,尽量保持导航栏可能简洁,只有少数几个选项。如果有必要,将一些页面分组放入下拉菜单,访客就更容易对选项归类,并且迅速做出决定。

席克定律的核心也是简单,因为复杂的选项会导致决策时间加长,从而影响决策。这就充分说明了系统2的懒惰性。

以上三个定律或原则的核心都是简单,只不过从不同的角度或者论证方法就行了总结归纳,并被应用在不同的领域。而归根结底还是系统1和系统2的两个特性造成的。

这就要求我们在实际应用中做到:''尽可能的把事情简单化,从而减少系统2的能量消耗;但是简单不等于要简陋,简陋会导致系统1直觉性判断。''


//
Modified:<$view field="modified" format="date" template="YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss"/>//
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
"""
[img[缪勒-莱耶错觉图|https://cl.ly/ofDV/Snipaste_2018-01-05_23-53-30.png]]

上图线条一样长吗?

现象:第二条线畅读长于其它两条。
事实:而事实是什么样子那?
<<imageSlider  [[https://cl.ly/ofIx/Snipaste_2018-01-05_23-53-49.png]]    "事实是这样子的">>
上面两线条的区别是箭头的方向不一样,但是整个效果给人一种错觉。这就是缪勒-莱耶错觉图 <<ref "[1]">> 。

也就是说,我们思考系统1给出的直觉判断是错误的,系统性失误。我们需要通过系统2进行测量才可以确认等长的真实情况。

现实情况是:即是我们知道上面两条线长度相同,但是我们还是无法视为等长。这是因为系统1的思维是不能被关闭的。很有可能系统2对系统1的错误也毫无所知。

解决问题:当看到两条线和不同方向的箭头时(危险信号),我们必须学会怀疑自己的感觉。要坚持这一规则,我们必须具备识别错觉的能力,调用相关知识储备,从而才可以避免掉入缪勒-莱耶错觉陷阱。也就是系统2对系统1的判断有所警觉。

思考快与慢的作者丹尼尔•卡尼曼在书中对错觉陷阱并没有给出好的解决方案,他的建议是:“最好的解决办法就是妥协:学会区别常会出现重大错误的情景,在风险高的时候,尽力避免这些错误”。这等于正确的废话。

''感知是对真实情况的一种赌注。''

上述错觉不仅是视觉上的,还有思维方面的,统称为认知错觉 <<ref "[2]">>。例如摩西错觉 <<ref [3]>>。而我认为做好的解决办法是建立自己科学的思维框架:而以上所说的坚持的规则,即要建立自己的[[思维框架|Thought Framework]],而要调用和储备的知识则是[[科学思维模型或原则|Thinking Models]]。

物理学和生理学家赫尔曼·冯·亥姆霍兹(Hermann von Helmholtz)给出了有关感知本质的优美阐释,解释了感知错觉的深度、范围以及其他属性是如何生成的。感知需要一种被称为“''无意识推论''”的聪明抉择。

[[常见的视错觉|https://zh.wikipedia.org/wiki/%E8%A6%96%E9%8C%AF%E8%A6%BA]]

//2017年12月28日 下午 08:25:12//
--- 

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@ 
<<footnotes "[1]" "Müller-Lyer illusion,The illusion was devised by Franz Carl Müller-Lyer (1857–1916), a German sociologist, in 1889.">>

<<footnotes "[2]" "认知心理学,(英语:Cognitive psychology)是最新的心理学分支之一,认知心理取向的重点在认知的消息处理模式------ 一种以心智处理来思考与推理的模式。思考与推理在人类大脑中的运作便像电脑软件在电脑里运作相似。认知心理学理论时常谈到输入、表征、计算或处理,以及输出等概念。">>

<<footnotes "[3]" "“摩西上方舟时,每种动物各带了多少?”发觉这个问题有问题的人太少了,因而有人将此称为“摩西错觉”。摩西并没有带动物上方舟,带动物上方舟的是诺亚。">>
<a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=30%></a>

<div class="tc-subtitle">

<<<
@@color:#808080;''书名:''《{{!!title}}》;
''作者:''{{!!author}};
''国别:''{{!!location}};
''系列'':{{!!series}};
''分类:''{{!!genre}};
''相关:''{{!!relation}}
@@
<<<
</div>

<$list filter="[field:book_title[希特勒时代的孩子们]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
''相似主题:''

<$vars tid={{!!relation}}>
<$appear show="<$text text=<<tid>>/>" $state="tiddler-slider" mode="block">
<$transclude mode="block" tiddler=<<tid>>/>
</$appear>
</$vars>
<$transclude mode="block" tiddler=bookinfo/>
Weekly:9.18~9.24

''读书:''《江湖丛谈》 连阔如

什么是江湖?怎么混江湖?江湖有哪些套路?....敬听连阔如播讲!

这位生于大清,长在民国,成名在新中国的满族镶黄旗人,在民国时期以“云游客”为笔名,在报纸上连载《江湖丛谈》,揭露旧社会江湖的那些事。如果当时有BBS,云游客当之无愧一定是一个知名网络ID。这位云游客就是后来响当当的评书艺术家连阔如先生,生于六七十年代的人,对这个名字应该耳熟能详。

《江湖丛谈》 是一本很有意思的江湖揭秘之书,记录的都是作者亲身所见所闻。内容涉及五花八门,有传统文艺和杂耍,如评书杂技,相声戏法等;有街头已经消失的旧行当,如镖局;还有灰色行当,如相面、偏方卖药、江湖骗子等。

这本奇书不仅记录的都是一些奇人奇事,还是一本立身江湖之道的生存指南、暗语春点手册,也是研究曲艺史、评书史、相声史、杂技史、武术史、城市游乐设施、欺骗术等,客观上具一定的认识价值和资料价值必备参考文本。//( {{!!modified}})//


<<<
张三禄不愿说八角鼓儿,自称其艺为相声,相之一字是以艺人之相貌形容喜怒哀乐,使人观之而解颐,声之一字是以话的声音,变出痴苶呆傻,仿做聋瞎哑,学各省人说话不同之语音。盖相声之艺术,能圆的住黏儿,馈的下杵来,较比搭班作艺胜强多多。
<<<


<<<
“治脚气方:用荸荠煎汤洗之,可愈。”
<<<
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
把[[GeneralMacros]]下的有关 “\define imageSlider(tiddlerName caption)"的样式简单修改即解决了`imageSlider`下图片过大的问题。

```
[img width=100% [$tiddlerName$]]
```
去掉`width=100%`即可。
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
世界变得越来越复杂,人们意识不到自己有多么无知。结果是,一群对气象学或生物学一窍不通的人就气候变化和转基因作物等议题吵翻了天,而另一群根本不知道伊拉克或乌克兰在哪儿的人,极力主张要对这些地区采取行动。人们很少发觉自己的无知,因为他们会沉浸在一个高度同质性的环境中,其信念被不断自证与加强,鲜有相左之声。
—尤瓦尔·赫拉利(《人类简史》作者)
<<<


如果您经常上知乎,您可能对上面所说的现象似曾相识。知乎上许多人依靠抽象化的知识,它们模棱两可又未经推敲。绝大多数知识无非就是一堆联结物,是物或人之间的高度相关,而非支离破碎的细枝末节。

我们的大多数为什么总“自以为是”那?由于无法精确地划分知识来自内在还是外在,我们便生活于知识的错觉之中。我们败就败在,这本来就不是泾渭分明的。所以我们常常对自己不知道什么一无所知。

拉链是我们每天必用的装置。请试着回答下面的问题:

1. 请自评对于拉链工作原理的知识了解多少,如果了解程度为1—7,你会给自己打几分?
2. 拉链是如何发挥作用的?请描述使用拉链的所有步骤,越详细越好。

第一题,一定许多人打分都是5+;第二题时候可能就有人卡住了。那么接着回答下面这个问题:

3. 现在,请重新自评你对拉链工作原理了解多少,了解程度依然是1–7,你会给自己打几分?

这一次,你多少会降低评分以示谦卑。在试着解释拉链的工作原理之后,大多数人意识到了他们对拉链的知识其实还是门外汉,因此在问题3上只给自己打一分或二分。这项论证表明人们置身于错觉之中。

当人们调低第二次评分的分数时,我们实质上是认识到,“我知道的比我以为的要少”。拆穿人们的错觉着实简单得难以置信,你只要要求他们对看似平凡的某事给出解释就行。

上面的这项测试原理是耶鲁大学认知学家弗兰克·凯尔(Frank Keil)发明的,他长期致力于研究已有的事物如何运作的理论。但是他很快便意识到那些理论何其破碎且浅薄,但他遇到了一个困扰。他找不到一个有效的方法来科学地阐明人们实际所知与他们自认为所知之间的差距。1998年,他灵机一动,一种符合他预期效果的方法浮现在脑海。这就是被称为''解释性深度错觉''(illusion of explanatory depth,简称~IoED)的测试工具。

现在我们在做一个实验:请把下图中的自行车缺少部分补全。

你的补全是什么样子的?利物浦大学的心理学家丽贝卡·劳森(Rebecca Lawson)向一组心理学专业的本科生测试的时候,将近一半的学生无法完全正确地补全图片(下图是部分结果)。

就上面的测试,弗兰克·凯尔所言,“许多受试者反馈说当他们得知自己远比原先预想的要无知时,一份实实在在的惊讶和从未有过的谦卑涌上心头”。

我们能说明白、讲清楚的知识确实比自以为的要有限。此乃解释性深度错觉之本质。我们发现错觉不仅发生在对日常物品的认知上,它几乎无处不在:人们高估了自己对诸如国家政策和对外关系之类政治议题的理解,在热门科学话题如转基因作物和气候变化方面也全凭想当然,甚至连个人理财都是一本糊涂账。

下次再遇到网上那些键盘侠和杠精,您不妨使用一下解释性深度错觉(~IoED)这个认知工具,让TA解释一下其原理,估计TA就老实了。


''Λ-Reading:''#40 [[如何怼杠精和键盘侠?|https://rizime.substack.com/p/cb9]]

2020年08月20日周四上午07:39:39

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=bookinfo/>
* 3.30 第一天就戒烟失败,吃完饭就想抽一支。好吧,我妥协一下,慢慢降量戒烟。

*3.31 昨晚事实上不想抽烟,身体无任何快感,而心理上念念不忘。心理战胜了物理需求。还有今天早上,同样的感觉。而饭后一支烟,心理和身体都能有一直飘然的化学反应。那么,第一步先把物理部分去掉,可能会减少三分之一。

*4.1 吸烟除了心理上和身体上之外,环境的因素之于戒烟也是至关重要的。我喜欢在打电话时候抽烟,只要电话不停,烟似乎一直就想在手。这是和一个朋友学会的,不过他已经成功戒掉了。所以,戒烟另外一个关键就是注意特殊环境的诱发。如果在关键节点上卡位 ---  如饭后和电话时,应该离成功接近一步。

*4.2 环境,还是环境。环境的诱发因素是至关重要的。除了后发一支烟是生理,是内因,其它的 --- 诸如环境等诱发因素都是外因。内因难治,而外因容易去除。但是事实上大部分所抽的烟皆是外因条件发生的,占三分之二。这就是习惯的力量,在某种环境和条件一下不由自主的动作习惯。这容易戒掉! 

*4.4 又是环境。另外一个至关重要的环境是独处和思考。[[前天看到一位民国文人|爱美人喜华服耽美食好文艺之一]]极其青睐并极力赞扬抽烟环境中那袅袅的细烟对思维的延申是多么的有用,甚至认为抽烟加速了人类文明的进步,至而还鼓励偶尔也可以抽一支鸦片来刺激思维。现在来看,这是何等的郁闷。环境的营造是重要,但是更重要的是肚子里有没有货,什么样的货色。那袅袅的轻烟其实是一个假象的环境,一种脑中意向。换成一杯清茶,一朵插花,一样可以达到意象的力量。所以,抽烟环境的内核其实是一种假象。

<<<
假如把文明史与吸烟发明之日期相较,立刻可以看出人类文明的进步,在吸烟史前是何等迟缓?而在史后是何等的迅速呢? 假如自卑一点,或者可以说客观一点来说,人类不过是一部像钢琴一般的乐器,而烟草乃是音乐家。谁能够证明,所有人类文化不是烟草在人的乐器里奏出来的曲调?([[民风野趣幽然醉]])
<<<

*4.5 文人的趣味总是自以为是,不管好坏,皆宜自己的好恶而标榜,虽然自己在戒烟,但是我还是认为这种标榜就是一种恶趣味。这位老兄 --- 民国文人徐訏 <<footnote "[1]"本名徐传琮,字伯������,著名作家、教授,以写作小说闻名,并以高产著称。林语堂认为徐������与鲁迅是20世纪中国最伟大的作家,对中国新诗一向没有好评的他赞誉徐������是唯一的中国新诗人。">> 给抽烟找出了至尚理由:

<<<
用功一点人可以去算计,科学家哲学家文学家政治家外交家等,凡是有才干有能力的人,不吸烟者要是有一千分之一,那才是咄咄怪事!女子在文化上少贡献,我不相信会不是少吸烟之故,女诗人李清照如果肯多多吸烟,那她的诗词必能更光耀万丈,不会只取材于香炉之烟雾上面的!

烟在一方面是助人以进取的精神,他方面则是给人以疲倦的安慰。她在一方面是起科学的作用,他方面是收艺术的功效的。凡名利情场上的失意者,可以此为安慰,而得意者也可以助其得意。
<<<

*4.8 比之前少抽很一些了。之前记录的这些闲言碎语,意义在内容之外 ---  加固了要戒掉的信念,而其环境诱导等等的致因知道了又能怎么样?如果没有一个强烈的信念,还是起不到作用的。这就像之前流行的一本书,100天养成一个习惯,习惯就是一些规律性的坚持,就像现在读书和写读书笔记,坚持了几年,已经变成习惯了,一天不读不写,感觉今天好像还没有过完。戒烟一样,加强信念,变成习惯。久之,则已。

* 4.11 这两天记录少了,抽烟多了。原因有二:一是工作原因,顺和不顺都有借烟烧心头块垒之实;二是没有了戒烟之紧迫感。如若有箭在铉上之感,我想会好一些吧。
昨晚看[[雅记清词写流韵]],温一如忆顾曼殊一文《曼殊逸事》载顾也是个烟鬼:

<<<
曼殊言动,不假矫揉,自然诙诡;每令人捧腹解颐,有东方淳于之风。性嗜雪茄,初抵东京时,一日囊空,至敲落金齿,付质以买吸之。每于批欧美小说中,有雪茄者,辄批云:“雪茄!又是雪茄!”
<<<

顾曼殊可真是个瘾君子,敲断牙齿为销魂。
<<<
几上,有针,有线,有尺,有剪刀。我母亲,坐几前,取针穿线,为我缝衣。
<<<

上面是民国时期小学语文课本《开明国文讲义》 <<footnote
 "①" "《开明国文讲义》,由夏丐尊、叶圣陶、宋云彬、陈望道合编,立足于多阅读而为之,古今中外脍炙人口之名篇佳作(近150篇)尽入囊中;其讲解、其点评言简意赅,可谓画龙点睛,绝不来什么段落大意、中心思想一类的八股货。是中国中小学语文教材编写史上的传世佳作。>>上的内容。看后心里安静喜悦,情不自禁。我之前一直所念叨的[[素心素地素文|素心素地素文方是大文章]]不就是这样的吗。

<<imageSlider  [[https://cl.ly/qzSc/download/maimingyuwen1.jpg]]    "第二十二课">>

素心,即本色;素地,即真挚情感;素文,即无任何润饰。此即为“''心头一声''”,如“悠然见南山”,“举头见明月”,“衣沾不足惜”,念出便是天下第一妙文。

<<<
小窗外,有梅树,方开花。我欲折之,干大枝高,手攀不及。母谓我曰:“此树乃十余年前汝父所种,比汝大数岁,故甚高也。”《老梅树》
<<<
<<imageSlider  [[https://cl.ly/r0Gb/download/minguoyuwen2.jpg]]    "老梅树">>
亲情在记忆中幽幽芳菲。

<<<
菊花盛开,清香四溢,其瓣如丝如瓜,其色或黄或白或赭或红,种类最多,性耐寒。严霜既降,百花零落,惟菊独盛。
<<<

<<imageSlider  [[https://cl.ly/qzvt/download/minguoyuwen3.jpg]]    "菊">>

境高意远,落落大方。

在萌嫩素简的心地上只有种上真善美的种子,才会开出生命最美的花朵。而逆天道自然而行,用意识流污染的心地,只能长出恶之花,丑之果。

今不如昔,人心不古。

2018年04月19日周四下午02:39:51

都已经躺下了,突然想起中学课本上鲁迅的一句话 ''“在我的后园,可以看见墙外有两株树,一株是枣树,还有一株也是枣树。” ''平铺直叙,确让我至今难忘。

2018年04月20日周五上午01:12:54 
之前我写过一个“人头贸易”故事,今日故事过犹不及。

旧山阳县(今江苏淮安),宋朝乃楚州首县,有一街,名金子巷。金子巷无金,因子而贵。

话说宋太祖赵匡胤未黄袍加身前,效力后周。从周世宗攻取楚州时,州人力抗周师,前赴后继,誓死护城,周朝部队久不能克。既克,周世宗命屠杀血洗山阳城,满城狼烟,尸塞巷陌,血充于野。赵匡胤至一巷,见一妇人,身首异处---头在路上,身在路旁,而身旁有一婴尚在吃奶中。见之,赵匡胤潸然泪流,命手下停止前进,原路返回,并把婴儿抱回,一奶妈专职抚养。

由此,巷中百姓因此婴在屠城中幸存,遂叫“因子巷”,由于日久口音之误,后乃称为“金子巷”。

“一将功成万骨枯”,几百年过去了,今日此巷不知是否尚存?

细思极恐!

[[地址|https://mp.weixin.qq.com/s/A3qCIdJiGzzAZs8ijGmhbw]]
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

> 子曰.不得中行而与之.必也狂狷乎.狂者进取.狷者有所不为也.
> —《论语·子路》

念楼读:

> 孔子说:“与人共事,能找到思想不左不右,言行不激不随的人,那是最理想的;若是找不到,就宁愿找偏激一点、清高一点的人了。偏激的人,起码他还有活力,有追求;清高的人,至少不会无所不为、太不要脸。”

孔子的话也偏激,独爱中庸;念楼老先生(钟叔河)译的也有趣。

除了中行,孔子便宁取狂狷,深恶痛绝的(用朱熹的话形容)却是乡愿。何谓乡愿?朱注云:


<<<
“谓谨愿之人也,故乡里所谓愿人,谓之乡原。”
<<<


那么,孔子为什么要深恶痛绝地称“谨愿之人”为“德之贼”,而宁愿找偏激清高的人呢?对于这个问题,孟子的答复是:

> 非之无举也,刺之无刺也。同乎流俗,合乎污世。居之似忠信,行之似廉洁。众皆悦之,自以为是,而不可与入尧舜之道。故曰,德之贼也。

钟叔河解读:

> 第一句说找不出他什么毛病,第三、四句说考察没发现问题,群众意见更是一致说好,就该进班子了。看来孔子恨的只是他“同乎流俗,合乎污世”,狂狷可取的也只有不同和不合这两点。

乡愿,介乎欺世盗名与老好人之间,可能就是今天所谓的“老油条”、“油滑/油腻之人”吧。

<$transclude mode="block" tiddler=bookkeywords/>
[img width=80% [http://one.rizi.me/photos/rizime/16cichaoche.jpg]]
!!! 鲍绍霖:《文明的憧憬》
近代中国知识人始终处在矛盾之中:

# 国家意识。一方面在观念上接受了西方现代以“民族”为“国家”基础的论述,觉得建设现代型的民族国家就是像西方一样追寻“文明”,一方面又在感情上倾向于中国历史上以“文化”为“国家”基础的现实,觉得捍卫清代以来光被四表的文化大国是保卫中国的“文化”。
# 现代途径。一方面把西方现代国家的法律、民主、科学看成是导致“富强”的必然的和理想的途径,觉得中国也应该从此走向未来,一方面又把西方列强看成是弱肉强食的野蛮行径,是导致中国积贫积弱的原因,觉得中国应当另辟蹊径走出一个新路。
# 文化定位。一方面中国倾向于把自己作为东方文化之大成,与西方相提并论,故中西或东西的说法成为习惯,一方面它又必须证明自己的文化是东方的代表,与日本(东方之西方)相竞争——这是一些相当复杂的冲突,而这些冲突都来源于中国人相信自己是一个历史与文化传统光辉而悠久,又没有经历过殖民历史从而丧失文化主体性的大国。因此,至今学者总是需要在历史论述和理论表达上,调和这两者。

!!! 许倬云:《我者与他者:中国历史上的内外分际》


<<<
“中国自诩为文明中心,遂建构了中国与四邻的朝贡制与内部边区的赐封、羁縻、土司诸种制度。正因为中国中心论,几千年来,中国不能适应与列国平等相处。直到近代,中国人似乎还难以摆脱这层‘心障’,一个原本是胸臆开放的普世主义,却又成为自设的局限”(21页)。
<<<

许先生所谓“我者”与“他者”的历史,就是这样一部不断融合、混杂和整饬的中国文化史。

2019年03月17日周日下午02:00:34
<<textSliderNoButton "''经济学''" "*代理人问题 (Agent Problem)
*信息不对称 (Asymmetric Information)
*行为经济学 (Behavioral Economics)
*比较优势 (Comparative Advantage)
*创造性破坏 (Creative Destruction)
*累计优势 (Cumulative Advantage)
*效用递减 (Diminishing Utility)
*规模经济 (Economies of Scale)
*范围经济 (Economies of Scope)
*[[经济护城河 (Economic Moat) |https://hurricanecapital.wordpress.com/2014/05/14/mental-model-economic-moat/]]-可持续竞争优势 (Sustainable Competitive Advantage)
*弹性 (Elasticity)
*外部性 (Externalities)
*激励 (Incentives)
*收入效应和替代效应 (Income and Substitution Effects)
*市场 (Markets)
*边际成本 (Marginal Costs)
*边际效用 (Marginal Utility)
*垄断 (Monopoly)
*网络效应 (Network Effect)
*寡头垄断 (Oligopoly)
*机会成本 (Opportunity Cost)
*价格歧视 (Price Discrimination)
*囚徒困境 (Prisoner’s Dilemma)
*公私物品 (Public and Private Goods)
*稀缺性 (Scarcity)
*专门化 (Specialization)
*供给与需求 (Supply and Demand)
*[[转换成本 (Switching Costs)|https://hurricanecapital.wordpress.com/2015/10/25/checklist-questions-switching-costs/]]
*[[货币的时间价值 (Time Value of Money)|https://www.khanacademy.org/economics-finance-domain/core-finance/interest-tutorial/present-value/v/time-value-of-money]]
*权衡取舍 (Tradeoffs)
*公地悲剧 (Tragedy of the Commons)
*交易成本 (Transactions Costs)
*效用 (Utility)">>

返回[[思维模型|Thinking Models]]
<$transclude mode="block" tiddler=bookinfo/>
常在书中遇到“静业”一词,不知道此静何意,以至乃成业,想必静业也会带来一定的业报。近日在南怀瑾《[[维摩诘的花雨满天]]》一书中,老先生这样解释到:


<<<
净业不是善业,善与恶像是一阴一阳,是相对的。没有恶业仅有善业还不能算是净业,净业是善恶二边都不着,无着无依,非有非空,连空也空。佛境界是净业,十方三世诸佛国上皆是净土,因为心净所以国土净。 
<<<

按照上面的解释,静业是一种中庸状态,即是善亦不过激。中庸看起来有点世俗化,不如可以这样理解:静业是一种元状态,即人之初为人时的无善亦无恶的原始状态。如果以中庸的思想来解读,符合中国古代唯心主义哲学观点论,《论语·庸也》“中庸之为德也,其至矣乎。”此处德即位静业之人文属性吧。关于善与恶,自古就有两论,亚圣孟子的思想则认为人性善。《孟子·告子上》:“恻隐之心,人皆有之;羞恶之心,人皆有之;恭敬之心,人皆有之;是非之心,人皆有之。恻隐之心,仁也;羞恶之心,义也;恭敬之心,礼也;是非之心,智也。”如果按照佛教说--- --- 佛即我,我即佛,“放下屠刀立地成佛”,佛的境界便是静业,我辈只要秉持[[不二|不二论]]的中庸观,即为修持静业,便可以达到彼岸佛土<<footnote "[1]"佛土,又作佛国、佛国土、佛界、佛刹。指佛所住的位处,或佛教化的国土。佛境界是净业,十方三世诸佛国上皆是净土,因为心净所以国土净。而净土是清净的地方,没有染污的庄严世界。在大乘佛教里指的是任何一个佛菩萨为渡化有情众生,以本愿力成就的佛土,都可以称净土。">>。

//2018年03月04日周日下午10:17:49//
民国大师系列看完了。

这个系列挺杂的,是民国时期一些期刊和报纸专栏文章的合集,里面不乏大师作品,如鲁迅、郭沫若、老舍、钱钟书以及丰子恺等。作品类型基本上是杂文和散文为主,[[雅记清词写流韵]]和[[民风野趣幽然醉]]属于散文,[[旧事新知风雨声]]和[[书卷多情似故人]]属于杂文类型。

说起散文,已经有许多年没有读过散文了,至少是从大学毕业之日起。这个时代可能不适合读散文,这是自己的悲哀,也可能是这个时代的悲哀。一个人需要一点闲暇整理自己的心绪,让思想随着风,随着烟,随着旧事的梦,随着音乐的畅想,自由的飞翔,或者找一个素地栖息。一个时代需要一份温情,让孤独的人可以自由吟唱,让受伤的人可以舔舐伤口,让陌生人可以相视一笑,让怨恨可以减轻痛楚。而现实生活中散文缺席了很久,直到再次拿起,方知暌违之情,心底里的一份缺失的温柔。

如果诗是远方,那散文就是远方之途上那些无名的小花。

2018年04月03日周二下午10:32:25
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>
决策论中 (如风险管理),决策树(Decision tree)由一个决策图和可能的结果(包括资源成本和风险)组成, 用来创建到达目标的规划。决策树建立并用来辅助决策,是一种特殊的树结构。决策树是一个利用像树一样的图形或决策模型的决策支持工具,包括随机事件结果,资源代价和实用性。它是一个算法显示的方法。决策树经常在运筹学中使用,特别是在决策分析中,它帮助确定一个能最可能达到目标的策略。如果在实际中,决策不得不在没有完备知识的情况下被在线采用,一个决策树应该平行概率模型作为最佳的选择模型或在线选择模型算法。决策树的另一个使用是作为计算条件概率的描述性手段。决策树是在估计各种可能情况的概率的条件下,通过决策树来取期望值最大的概率,评估未来的风险。类似的模型包括大名鼎鼎的SWOT分析,加权决策模型等等。

机器学习和数据挖掘中决策树是一种经常要用到的技术,可以用于分析数据,同样也可以用来作预测。

"""
一个决策树包含三种类型的节点:
决策节点:通常用矩形框来表示
机会节点:通常用圆圈来表示
终结点:通常用三角形来表示
"""
[img [http://p1.cdn.img9.top/ipfs/QmNXTNFwgTe6s31gSyrrmf2BL5hrQ5WriTF72kcjjAZVU1?1.png]]

!! ''实例:''

<$details summary="根据纹理判断一下是好瓜还是坏瓜" class="notification">
[img[http://p3.cdn.img9.top/ipfs/QmZURGFfWf7LCKxS1VJbga2aKBsftnKvtvNQXyh4tXwMhd?3.jpg]]
</$details>

!! ''建立方法:''
* 以资料母群体为根节点。
* 作单因子变异数分析等,找出变异量最大的变项作为分割准则。(决策树每个叶节点即为一连串法则的分类结果。)
* 若判断结果的正确率或涵盖率未满足条件,则再依最大变异量条件长出分岔。

!! ''参考:''
[[Introduction to Decision Tree Learning|https://heartbeat.fritz.ai/introduction-to-decision-tree-learning-cd604f85e236]]


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>

<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
阅读就像漫步沙滩,远眺天海一线,脚下波涛汹涌,信步中偶然会捡拾到漂亮的贝壳和从遥远的地方或时代飘来的漂流瓶。下面这些只言片语就是我从书海中捡拾的一个个漂流瓶,带着遥远的人从遥远的地方、遥远时代的寄语:

''注''  <<ref  "[1]">>


```
阅读是一种力量,让我们安静地存在。尼采说,上帝死了,然后,福柯说,人死了。所以我们在活着的时候,必须好好活着。

人生是一种习惯,甚至只是一种阅读习惯,因为天堂大致就是图书馆的模样。

昆德拉曾经预言说:“一旦每一个人心中那个沉睡的作家苏醒了(那一天已经为期不远了),那么我们就陷入了一个相互成为聋子和哑巴的世界,一个互相无法理解的世界。”这一天在中国,其实已经提前来到了。


“中国有幸出了鲁迅,他是中国历史的光荣;中国也不幸,其所走过的道路,往往不断见证鲁迅的远见卓识。中国知识分子有幸,有鲁迅这样的人物为我们作出榜样;中国知识分子也不幸,有了鲁迅这样的人物,益发令我们感到羞耻。”“幸”与“不幸”都是现实,所以我们都应该正视。


大多数经典的写作方式只能是从概念到概念,从推断到推断,从灵感到灵感。这种写作方式往往能创造出很多很漂亮很有启发性的理论框架,但是很难校验这些理论的有效性,又因为不能校验它的有效性,即,没有“证伪”它的可能性,知识很难有效积累。

一切经典本质上都是基于那个作者对他所处的时代的问题的回答与思考,那么要真正读懂它并且读得心领神会,只能是因为:第一,你对他所处的时代及其问题有相当的了解;第二,你认为他所处的那个时代与你现在所处的时代有相似性,而且你能理解其相似性以及不同性在哪,由此批判地理解他的思考对于当下的意义。

世上本没有经典,装得人多了,也就有了经典。

傅山还有“四以”之语:“以好色之情好德,以修名之法修身,以畏神之觉畏人,以救灾之勇救过。”

其一,“经济学家们都知道,为市场辩护比较对人胃口,而为政府辩护则不讨人喜欢。为此,他们就大谈自由”。其二,“逻辑往往不会赢得人缘,一个坦率指出社会的悲剧收场的人,几乎肯定是无法获得众望的”。

托克维尔其实对群众时代的原子化极为恐惧,但他相信大势已定、逃避无益;因此他对理性认同、感情陌生的新时代用尽了廷臣的恭维,这种客套绝不会用在“像自己一样可靠”的老朋友身上。恭维背后,他是想尽可能礼貌地发出警告:“末人”的自私将会普遍降低文明的素质。群众平等的洪水过后,只剩下官僚平庸专制的淤泥。......“末人”的自私将会普遍降低文明的素质。群众平等的洪水过后,只剩下官僚平庸专制的淤泥。

托克维尔也是一位优雅和周到的廷臣。他在弗朗索瓦一世和查理二世的宫廷中都能如鱼得水,能让卖花姑娘在绅士淑女当中怡然自得。这种人从来不会忘记在作品中赞美死敌“心胸高尚”,却可能忘记表扬真正的朋友。其中道理,无异于玛丽·安东尼特在断头台上向刽子手道歉。如果你比敌人更有失风度,你就是输家。

文笔是视野、境界和洞察力的镜子,这些比材料重要得多。

鲁迅少年时求学的“三味书屋”老师寿镜吾所示:“读经味如稻粱,读史味如肴馔,诸子百家,味如醯醢(xī hǎi 见注脚)。”经济学也有读书三味,读理论味如稻粱,读历史味如肴馔,各家学派,味如醯醢。在我已届知天命之年,回味无穷。 

有些经典论述的重要性并不在其内容,而是陈述方式非常精彩。

怀特海曾说过,整个西方哲学史不过是柏拉图哲学的一系列注脚。

——就是这样,从来没有什么“救国文化”,文化就是文化,灵魂世界的装饰品,政治世界的缄默者,它既出于必死之人,它自己也必将死去。凡以文为生者,都当如斯宾诺莎那样感知到命运所给予的平凡。

“已过的世代,无人记念;将来的世代,后来的人也不记念”,因为那出自尘土的,必将归于尘土,那已归尘土的,则不该再看到阳光。寄居特洛伊的希腊美妇人海伦曾经预见到自己死后将会成为后世的歌题,而我们的文人们则应该做好不被后人记念的准备。

身为文人,在对纷纭世事的清明洞察下,以及在对自身的文化职业的有限性的意识中,耕耘自己的园地,做一个安静正义的国家公民,这是文人自身的启蒙乃至救度,它肯定救不了“国”,但却一定能救得了自己。——“这一切原本都甚好。”

俄罗斯文人的命运提示我们,文化可以装点一个盛世中的国家,甚至可以陶醉一群贫乏无味的灵魂,但不能被用来救国度民,因为它自身不具备此等国民政治大业所需要的材质。

19世纪的俄罗斯文人是那么迷醉于所谓“高尚”的“文化”,以至于忘了去培养一种在他们看来极其低贱的文化,一种一个民族藉以克服命运与暴力的威胁并体面地安身立命的文化,一种千秋万代的岁月洪流中的万国立法者所孜孜不倦的、因而也是人之为人所能成就的最高文化,一种古代的摩西和近代的彼得大帝曾经筹建过的文化:政治。

罗马帝国晚期哲学家、政治家塞涅卡的斯多亚式的坚韧:“这个俗世中的事情是渺小琐屑的,我们之所以决定还要在其中活下去,是因为它还有值得研究的地方”(塞涅卡《自然问题》,vii. 31. 2)

要按照人世的本来面目去看待人世,而不要按照我们所希望的样子去想象这个人世(《政治论》I. i-iv,《神学政治论》,序言)。

“当谈论人世间时,决不应当讥讽、悲哀或诅咒,而应当首先去理解”

“每种学科的重要著作是很少的,其他著作不过是把这少数著作里说得更充分而清楚的话加以重复、冲淡和损害罢了……我仅读那具有独创性的东西,并且只要理解了这独创性就不再多读。我所念过的每本书都是最精彩的,免得多读好几百本书。”

```
下接:[[开启那遥远时代的漂流瓶2]]

醯醢(xī hǎi)  <<ref  "[2]">>


//2018年03月07日周三下午10:24:59//

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[2]" "醯 ,醋,醋的旧称。醢,用肉、鱼等制成的酱。">>

<<footnotes "[1]" "由于作者和书籍庞杂,就不注明来自何人和其著作了。">>
上接[[开启那遥远时代的漂流瓶]]


```
科技的双刃剑意味在于:在不停推动文明的同时,不断丧失人文的高度。

读书最忌讳的,就是于心灵积下厚厚的灰尘。所以有说,人生识字糊涂始。知识即力量,只是道出了知识这枚硬币的一个面。知识之币的另一面,是心灵的尘垢。

书本写作,被归入知识的,通常是头脑的思考结果;唯有被视为智慧的,才是心灵的低语。

一战爆发前,世界霸主似要即将易手的局势,更让现代人有似曾相识之感,人类的智慧与天性一直滞后于物质、科技的提高,无法对其抱有过于乐观的估计。

萨拉热窝的几声枪响。这一巨大、重要的事件又一次证明,人类运用理性与智慧来预测社会宏观事件,常常会沦为笑柄。

科学研究发现“我们将其作为‘现在’、‘感觉到的’现在实际经历的时间跨度大约仅为五十分之一秒长”。(Ernst Breisach, Historiography: ancient, medieval & modern, Chicago,1994,2nd ed, p. 2)所以,当你意识到现在是“现在”的时候,它已经变成了过去,而你却正生活在未来。

对过往经典的研究,其要旨就在于从字里行间仔细探究其微言大义,从中找寻永恒智慧的踪迹。

不要为自己做过仰望星空这么简单的事儿而感动。

所谓的正确阅读,怕是从来就没有的。恐怕只有好的阅读,它会不断地启示和塑造,让我们从全新的角度另眼看世界,这个循环往复的过程,才是阅读的目的吧。

人与书的相遇,需要恰到好处的契机。

胡河清讲述自己的写作生涯:“文学对于我来说,就像这座坐落在大运河侧的古老房子,具有难以抵挡的诱惑力。我爱这座房子中散发出来的线装旧书的淡淡幽香,也为其中青花瓷器在烛光下映出的奇幻光晕所沉醉,更爱那断壁颓垣上开出的无名野花。我愿意终生关闭在这样一间屋子里,听潺潺远去的江声,遐想人生的神秘。”

面对现实中的无聊、琐碎和虚无,如果没有精神需求,会遁入犬儒,如果有些精神需求,又很容易委身于灼热的宏大概念。

阿伦特试图为“政治”正本清源,恢复政治与公共生活的关系。她强调政治不应被等同于权力斗争,应通往开放的公共生活。把政治等同为权力斗争,会产生两种结果,一种是参与权力斗争,一种是远离权力斗争,这都是极权政治所期待的——狂热的积极分子和冷漠的袖手旁观者,是谎言得以盛行的条件。

要现代派!卡夫卡是祖宗,威廉·福克纳、詹姆斯·乔伊斯、金斯堡、罗布-格里耶、加缪、萨缪尔·贝克特、尤金·尤涅斯库、胡安·鲁尔弗、略萨、加西亚·马尔克斯、普鲁斯特,一一被圈入现代派。一部《城堡》,让你进不去也出不来。流氓切口似的,球迷称迭戈·马拉多纳为迭戈,文学要称马尔克斯为加西亚·马尔克斯,这样更亲切更内行更见时髦。一时也记不清他们是哪国人,用什么语言,死了还是活着,记不清译者,那时没网络可查。仅仅一个名词就够了:现代派!意识流!荒诞!黑色幽默!
```
待续[[开启那遥远时代的漂流瓶3]]


2018年03月09日周五上午12:36:03
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
《唐研究》主编,荣新江教授,在[[《榮新江談〈唐研究〉》|https://mp.weixin.qq.com/s?__biz=MzA5MDE1NzAwNg==&mid=2650793424&idx=1&sn=46e005bf46de045a425f2c9ec0e17207&chksm=8804bf71bf7336676944f533e444a336dcbf2e87129203e3d9fc1261d9b80941c260835a89fa&mpshare=1&scene=1&srcid=0517sbZYzSuV4G6T6RtSE72l#rd]]一文说:

<<<
看完一本书,不写篇书评就不算看完。
<<<

葛兆光先生在《且借纸遁》一书中也有相似的话:

<<<
年轻时在北大求学时所受所训练“要对所读书作六百字的提要”稍微轻鬆一点,但对我来说也太累了!
<<<

我在 <$appear show="读书即忘怎么办一文中  &raquo;" hide="&laquo; close" $state="slider-buttons">

{{读书即忘怎么办}}

</$appear> 提起过写读书笔记的好处。


PS. 《[[且借纸遁]]》这个书名真好,与毛姆读书随笔《[[阅读是一座随身携带的避难所]]》有异曲同工之妙!

读书的一大妙处就是在各本书之间相互跳跃和连络,发现其或同源、或姻亲、或旁支、或嫁接、或平行关系,从而合纵连横。

//2018年05月17日周四上午11:41:37//

<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>
最近读书时间都献给了小品文,耽爱沉溺不能自拔。

小品文虽然没有大部头作品恢宏气概,但小品文自有其独特魅力,灵活自由的风格,或戏虐诙谐或辛辣讽刺,或给人醍醐灌顶的棒喝,或给人以血淋淋的鞭挞。鲁迅在[[书卷多情似故人]]里说:


<<<
生存的小品文必须是匕首,是投枪,能和读者一同杀开血路的东西;但自然,它也能给人愉快和休息,然而这并不是“小摆设”,更不是抚慰和麻痹,它给人的愉快和休息是休养,是劳作和争斗之前的准备。
<<<

鲁迅的小品文是出了名的利刃,也是其小品的独特气质。而非生存的小品,确另有一番风味。如之前所读李渔的[[闲情偶寄]]、袁枚的[[随园食单]]、张岱的[[陶庵梦忆]],以及沈复的[[浮生六记|2016读书目录]]等,皆是才子佳人式的情趣。正如钱钟书对沈复的《浮生六记》的评价:

<<<
盖做作之美,最高不过工品、妙品,而本色之美,佳者便是神品、化品,与天地争衡,绝无斧凿痕迹。近译《浮生六记》,尤感觉此点。沈复何尝有意为文?何尝顾到什么笔法被澜?只是依实情实事,一句一句一段一段写下来,而结果其感人魔力,万非一般有意摹写者所能望其肩背。称之为化工,也未尝不可。(见[[书卷多情似故人]]之“说本色之美”篇)  <<ref "[1]">>
<<<

虽然小品短小,但从行文结构上看都是一个独立的作品。加西亚·马尔克斯在其小品集[[梦中的欢快葬礼和十二个异乡故事]]的序所言,其花费的精力并不比一部小说少。


<<<
写一个短篇小说需要付出的心血不亚于为一部长篇小说开头。在长篇小说的第一部分,作者必须把一切都确定下来:结构、语调、风格、节奏、篇幅,有时候甚至要确定某一人物的性格特征。而之后的部分,作家体会到的则是单纯的写作的快乐,那是人类所能想象的最私密、最自我的一种愉悦。如果一个作家没有花费整个余生来修改自己的作品,那是因为他在结束时和开篇时一样意志坚定。而短篇小说既没有开始,也没有结局:只有煎熬或者不煎熬。如果没有感受到煎熬,那么不管是我自己的还是他人的经验都表明,在大多数情况下,最好还是换个思路重新开始,或者直接把它扔进废纸篓。不记得是谁用一句令人欣慰的话精辟地总结了这一经验:一个好作家被欣赏,更多的是由于他撕毁的东西而非他发表的。
<<<

2018年03月24日周六下午11:10:35

延展:[[精品短篇阅读]]

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "所以袁中郎、李卓吾、徐文长、金圣叹等皆提倡本色之美;其意若曰:若非出口成章便不是好诗,若非不加点窜,便不是好文。金圣叹谓诗者心头之一声而已;心头一声有文学价值(如“悠然见南山”,“举头见明月”,“衣沾不足惜”之类)念出便是天下第一妙文;心头一声本无文学价值,任汝如何润饰,皆无用也。 ">>
<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

* 定律一:如果一个年高德劭的杰出科学家说,某件事情是可能的,那他几乎就是正确的;但如果他说,某件事情是不可能的,那他很可能是错误的;
* 定律二:要发现某件事情是否可能的界限,唯一的途径是跨越这个界限,从可能跑到不可能中去;
* 定律三:在任何一项足够先进的技术和魔法之间,我们无法作出区分。

以上是''克拉克基本定律''(英语:Clarke's three laws),是英国著名科幻作家亚瑟·查理斯·克拉克积累有关科学文化方面的经验提出的。

这个定律很有意思,不仅是一个认知科学问题,也是科技哲学问题。

定律一涉及经验论和概率两方面问题。“年高德劭的杰出科学家”的先决条件说明了经验论的必备条件;后半部分是在认知边界作出的判断,所以概率要低。

定律二是正确的废话。

定律三是揭示了事物发展的规律。足够先进说明事物的复杂性或处在认知盲区,凡事处在认知盲区的事物都不能接近事物的本质,即事物本质外披着一层神秘外衣。同理,人类对人之大脑的认知程度决定了宗教存在时间的长度。

//2019年04月18日周四下午05:39:17//


<<<
"任何足够先进的外星文明都与上帝无异。"
<<<

这是美国科学家米歇尔·薛莫根据“克拉克基本定律”提出的一个猜想。算是克拉克衍生定律。

薛莫通过这个法则指出,任何与人类接触的外星智慧文明必将远远领先于人类,因为在演化时间尺度上,一个进化稍稍超前人类的外星智能物种所拥有的科技就可能领先人类数百万年。

//2019年04月28日周日下午01:30:56//

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>
关于奥斯维辛集中营的影视作品蛮多,但是看相关的文本作品还是第一次。这本《奥斯维辛的小图书馆员》虽说是小说,然书中的人、事、物都是真实的,书后记部分补述了书中人物的现实原型和人生结局,所以也可以把这本书当作一本纪实文学来读,是对正史的延展性补充。

之所以选这本书来读,是因为书中关于书的故事。

<<imageSlider  [[http://one.rizi.me/photos/rizime/aosiweixin.jpg]]    "抵达奥斯威辛集中营,1944年5月">>


<<<
这不仅仅只是一部关于奥斯维辛历史的小说,同时也是一部关于阅读的小说。小说中提到的那些书始终推动着故事情节的发展。
<<<

在奥斯维辛集中营,每天都有成千上万人被送往毒气室,然后在焚尸炉化作浓浓黑烟,活着是这里人的唯一目标。
 <$appear show="open {{$:/core/images/chevron-right}}" hide="{{$:/core/images/chevron-left}} close" type=popup $state="image-buttons">

<<<
任何一位老囚犯给新来的囚犯上的第一课永远都是:清楚自己的目标——活着。先是几个小时,接着是一天,然后就可能是一个星期。就这样一直延续着,永远不要做大的计划,也不要有大的目标,仅仅就是每时每刻地活着。活着是一个动词,而且只有现在时。
<<<
</$appear>
然而在这人间地狱中,谁也不相信竟然存在着一个图书馆 --- 应该是世界上最小的图书馆吧,只有8本书(分别是:《初等几何》 《世界简史》《俄语语法》《精神分析疗法新思路》《好兵帅克历险记》),外加6本活体书(存在人脑中的书籍)。<$appear type=popup> 

<<< 
事实上,只有八本书,而且有几本还很破。但这些的确都是书。在这个如此黑暗的地方,人性如同他自己的身影一样黑暗,书的出现减少了阴郁的时光而增加了美好的时光。在这个灭绝的时代,语言的力量要远比机枪的力量大得多。就像是托着新生婴儿似的,蒂塔仔细地把书一本一本地放在自己的手上。

.....

他们拥有一个活体图书馆。好几位老师熟知一些文学作品,并把这些作品变成了自己的藏书,于是他们就会轮流去不同的班级给孩子们讲这些他们已经可以背诵出来的故事。
<<<
</$appear>

<<<
房间铺的是木地板,在一个角落,有一块板子是活动的。在那块板子的下面,挖了一个刚好放下这些书的坑,那里就是小图书馆。那些书刚好可以全部放在这个坑里,即使踩在木板上或者用手指敲打木板,都不会发出空空的声音,没有人会怀疑这下面会是一个小小的藏匿之处。
<<<


这个奇迹般的图书馆,成为奥斯维辛集中营地狱中的一片绿洲,一座避难所(毛姆:[[阅读是一座随身携带的避难所]]),为那些饥饿而懵懂着的孩子们提供了片刻的宁静,也为他们插上了一双天使的翅膀 --- 虽然最终这些孩子们大部分都被送进了焚尸炉化作黑雪飘在空中。小说的主人公蒂塔就是这个图书馆的管理员,每天负责秘密的保管和分发书籍,然而当时她只有14岁。小说的结尾,蒂塔依然在分发着书籍,这时她已经80岁了,分发的是她丈夫(同一个集中营的小男孩)写的关于奥斯维辛集中营的书籍。

书籍让人能更好的活下去。活着!

《奥斯维辛的小图书馆员》给我另外的启发是对恐惧和欲望的思考。恐惧和欲望对人来说都是最大的敌人,这两个敌人都拥有生存或者毁灭的力量,无边、无界、无形、无声。恐惧和欲望即是对立的敌人,有时候又狼狈为奸,相生,相克。极度的恐惧中(奥斯维辛集中营毒气室),就像在无边无际的黑暗中,只有把自己消失在黑暗中,融化在恐惧中,才会在黑暗中看清黑暗,即是光明。在极度的欲望中(逃出奥斯维辛集中营的想法),就像太虚幻境中的光明,只有心存恐惧,有所敬畏,才不至于走向自我毁灭,即是冷静。

恐惧和欲望的分界线是什么?我想是信仰。

//2018年10月01日周一下午10:39:03//

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

这是一本试图运用控制论、系统论的某些概念来介绍科学方法论的书。本书首版于1983年,风靡一时。在香港和台湾地区,被很多学校、企业选为教材。

书中涉及到三个基本概念:

!! 什么是控制论:

<<<
控制论(Cybernetics)是一门跨学科研究, 它用于研究控制系统的结构,局限和发展。在21世纪,控制论的定义变得更加宽泛,主要用于指代“对任何使用科学技术的系统的控制”。控制论与对系统的研究有关,如自动化系统、物理系统、生物系统、认知系统、以及社会系统等等。控制论可被应用于研究包含信令回路的系统。信令回路在这里指,当一个系统的运作改变了它所在的环境,而这些改变又反过来反馈于系统上,并导致系统本身的变化。这种循环最初被称为“循环影响”关系。(维基百科)
<<<

书的前言提到控制论思想的源流,它是由至少三条悠长的支流汇合的结果。一条是数学和物理的发展;另一条支流是生物学和生命科学的进展;第三条支流是人类对思维规律的探讨。

控制论是一门综合性、跨学科的科学方法论。

!! 什么是系统论:
!!!系统
系统,指的是由相互联系、相互作用的要素(或部分)组成的具有一定结构和功能的有机整体;准确来说,''要素+结构=系统。''

系统科学主要研究系统的要素(或元素),结构,和系统的行为(性质)。

!!!系统科学
从系统的角度观察研究客观世界的学科,就是系统科学。 控制论是系统科学的一个分支学科。

!!!系统论
系统论是解决系统问题的科学方法论,是一门逻辑和数学领域的科学,其目的在于确立适用于一切系统的一般原则。

!! 科学方法的几个步骤
科学方法必须建立于收集可观察、可经验(empirical)、可量度的证据,并且合乎明确的推理原则。

!!!科学方法的几个步骤
[img 
 width=60%
 [https://upload.wikimedia.org/wikipedia/commons/thumb/5/5c/The_Scientific_Method_as_an_Ongoing_Process.svg/1456px-The_Scientific_Method_as_an_Ongoing_Process.svg.png]]

除此三个基本概念,本书分五章对控制论和方法论进行论述:

第一章:控制和反馈  涉及概念:可能性空间、共轭控制、正/负反馈;

第二章:信息、思维和组织  涉及概念:信息的储存、通信、加工和组织模式;

第三章:系统及其演化   涉及概念:系统、系统结构、系统演化和几个系统状态;

第四章:质变的数学模型 涉及概念:质变以及质变的两张方法:飞跃和渐变;

第五章:黑箱认识论  涉及概念:黑箱以及认识论

2019年05月02日周四下午09:15:02

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
 <<tabs "[[2020读书目录]] [[2019读书目录]] [[2018读书目录]] [[2017读书目录]] [[2016读书目录]] [[Book List]] [[三家村公开版权精品书籍]]">>




!!! 芭芭拉·塔克曼:《从史著论史学》

''历史学究竟有什么用?''这似乎成了一个魔咒似的问话,很多历史学家在这个斯芬克斯式的问题面前,总有些尴尬为难。

《从史著论史学》中有一个较好的说法:

<<<
“一个民族为了觉得自己是国家,不但必须有独立和领土,并且还要有历史”(165页),这就说明,历史学最重要的意义就是通过同一个历史的溯源来“建构文化上的认同”。
<<<

只是很多历史学家害怕承认这一点,担心一旦承认了这一点,历史学就再也不是“科学”。

芭芭拉·塔克曼正色说,不要幻想历史犹如科学,

<<<
“如果历史是一种科学,我们应当能够掌握它,认识到它的情况,制定它的模式,知道明天将要发生什么事。为什么我们不能?答案在于我称之为不可知的变数(unknowable variable),也就是人”(307页,原文是1966年10月在芝加哥历史学会上的演说)。
<<<

而历史的魅力在与他的无序和充满变数:


<<<
“想象之于诗人犹如事实之于史家。史家判断力之运用在事实的选择,其艺术在事实的排列,他的方法是叙述,他的主题是人类过去的故事,他的功能是将人类过去的故事公之于众”(37页,原载《纽约时报·书评》1964年3月8日)。
<<<

!!! 丹尼尔·布尔斯丁:《隐藏的历史》

丹尼尔·布尔斯丁批评过于执著和专注于历史年代学的弊病,认为这种“年代学”(Chronology)觉得,历史主要是由某些主要的日期所组成,日期像是历史的骨骼,由历史家赋予血肉。

<<<
“但是,如果我们把历史看作年代学来讲授,界标则会使景观失色”,“重视日期的历史必然是一个突然开始和立即结束的故事,历史的伟大时代和重要人物像是大肆宣扬并以正式的告别辞离开”(104—105页)。

“我们观察历史上的过去通常方法之另一效应,是以我们熟悉我们已经熟悉之事的方法,来增强我们的思考习惯。我们实际上用我们的年代学缩小我们历史的景象。例如,当我们使耶稣的生日成为历史系年的转折点,就是用年代学缩小了历史景象,西元和西元前二词表明一件实际上只被人类一小部分认为是有支配性之事的重要。”(106页)
<<<


2019年03月02日周六上午10:48:06
把张贤亮的《[[灵与肉|张贤亮文集]]》和他的代表作《
男人的一半是女人》看完了(电视剧事实上是上面两部作品杂糅在一起的新作,至少主人公的名字很多都一样),也算是补了我对那个时代文学作品无知的缺。张贤亮的作品除了时代意义之外,文学性并不强,有些章节我都是跳读的。除此之外,伤痕文学也不能多读,作品灰蒙蒙的色彩感觉很压抑,除了作品展示的人性善恶永恒话题,贯穿始终的悬在人人头上的政治狼牙棒让人绝望,甚至有一种错乱感,你会想到当下,其实并没有多少改变,变的只是形式和内容。

就说那个时代听收音机这回事吧:


<<<
不知是从什么时候开始,收音机就和“特务”与“反革命”联系在一起。这种意识渗入到每一个人的神经细胞,凡是拥有收音机的人家,都会引起别人特殊的警觉。一个小小的黑匣子,深不可测,里面藏着一个罪恶的世界;光明的、革命的世界只存在于一天播三次音的大喇叭里。除此之外都是谎言,都是魔鬼的咒语。但科学技术不断地突破森严的国界,突破不可逾越的意识形态的界限,用看不见的无线电波把世界牢牢地网罗在里面。把支离破碎的土块箍成一个整体。我激动地装好电池,拉出天线,戴上耳机。在这一瞬间,我自己都有一种犯罪的感觉,尽管我认为收听广播并不是犯罪——既然自信真理在握,为什么害怕人民听到谎言——可是我的手指仍然抑制不住地颤抖,在齿盘上寻找一个个波段。电波穿过太平洋、地中海、红海的上空,越过喜马拉雅山的最高峰,带着暴风雨的沙沙声传到我的耳鼓膜。这一晚上,我一直听到所有的华语广播结束的时候。 结果,我非常失望。
<<<

这是五六十年前作者的感受,也是那个时代过来的人集体记忆的一个点。时下,如果有翻墙经历的人读到上面一段文字,也一定是同样的感受:除了我们在网上发表言论不由自主的自我审查外,翻墙的犯罪感也是不由自主的,甚至有时候看到地铁里警察翻看路人手机时会有一种马上删除梯子的下意识反应。半个世界过去了,进步的是技术,意识形态在徘徊。

技术的进步是无止境的,但是[[政治永远是影响技术进步的最大因素|区块链科技的哲思之一]],意识的进步也远远落后于技术。技术同样裹挟着意识的进步,但这是有代价的。就像互联网技术改变了信息传播的方式,促进了一些意识的觉醒,但同时也摧毁了旧有的传统,文革之后 --- [[80年代的启蒙思潮|中国百年思潮迭代和探究]] --- 一些抬头的思潮重新被瓦解和粉粹。改革开放加上互联网时代的冲击,旧有的思想和传统已经彻底被摧毁,是继文革扫荡之后又一巨大文化断层。这也是为什么近代以来中国难出大家和大师,难有科学进步(中国进步的是技术而非科学)。这也是为什么中美贸易大战,中国被人卡着脖子的本质之一 --- 没有扎实的基础科学(想一想,美国在上世界80年代已经登月了,中国现在还在意淫什么新四大发明)。

前辈历史学家得出:历史的发展呈螺旋上升态势。可惜,我这辈子是看不到历史的拐角和大师辈出的年代了。这种历史的转折需要一段时期的阵痛之后才会到来,俯瞰一下中国时下社会意识流:一团乱麻 --- 思想混乱、信仰缺失(新儒教有抬头迹象,但仍在提倡国学的原始阶段以及功利主义心态),庙堂和草民都沉浸在自娱自乐意淫的前奏阶段,只有等高潮泡沫的破裂,落寞和冷静才会到来。但何时这个彩色泡泡才能爆裂?短则10年,长则50年,我的孙辈可能会享受到那相对美好的时代。又是什么力量使这个彩虹般的泡泡破裂?是内因,吹的过猛?还是外因,如贸易战导致经济崩溃?这一切充满了太多的变数和未知。

2018年06月23日周六下午11:55:09
写了几百字关于蒋介石的日志,由于插件崩溃一下子不可逆,不可得,不复存在。一下子兴趣全无。

冥冥之中也许暗示正如同蒋介石的一生,一时的优柔和清忍,造成蜗居小岛从头再来。

Jay Taylor的[[蒋介石与现代中国的奋斗]]终于在春节前看完了。全书以编年体和纪传体杂糅写法,记述了蒋介石跌宕的一生。史实之详尽蔑视了国内史书之浮躁,引用蒋的日记又还原了一个真实的历史现场。从书中不仅了解了中国近现代历史的真实一面,而且让我对蒋重新在认识。看到了一位殚精竭虑力挽民族与狂澜的民族主义者,看到了一位刚柔并济内敛笃信的新儒教主义者,一位克己复礼的道教主义者,一位毕其一生践行三民主义者,一位至死不渝魂归他乡的老人。

历史都是胜利者的赞歌。而读历史真正的意义在读历史背后的历史,在太阳的一面你会自我催眠、会恍惚和眩晕,而在太阳的另一面也许清冷凄切,但让人保持清醒警惕。

眼前的未必真实,也许只是一块华丽的幕布;历史没有胜利者,大势只是一种偶然的必然性。周遭环境的突变是其偶然,而历史的执牛耳者的人性多寡是其必然,多则屈,寡则起。

2018年02月04日周日上午01:38:38
<$transclude mode="block" tiddler=bookinfo/>
<a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>

<div class="tc-subtitle">

<<<
@@color:#808080;''书名:''《{{!!title}}》;
''作者:''{{!!author}};
''国别:''{{!!location}};
''系列'':{{!!series}};
''分类:''{{!!genre}};
''相关:''{{!!relation}}
@@
<<<
</div>

<$list filter="[field:book_title[利维坦与空气泵]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
系统1的主要特性之一是联想,联想与质量和数量无关,主要取决与连续性和就近性。

联想机制的不断激活也是自动完成的。我们(系统2)具备某种能力去控制记忆的搜寻活动,也能对其进行编辑,这样一来,在特定情况下我们才可以集中精力去追踪某个事件。

佛学中的断念。

//2018年02月19日周一上午12:04:00//
梁遇春散文大多青年时期写就(英年早逝,还能是什么时候),虽然风格是漫话絮语,带点南方文人的温文尔雅,可遮挡不住青年人内心燃烧的火,这有点像其后世学弟北大余杰,只是余杰身上刺多与温情。


<<<
怯懦无能的我在高楼上玩物丧志地读着无谓的书的时候,偶然听到警钟,望见远处一片漫天的火光,我是多么神往于随着火舌狂跳的壮士,回看自己枯瘦的影子,我是多么心痛,痛惜我虚度了青春同壮年。
<<<


<<<
“上海是一条狗,当你站在黄浦滩闭目一想,你也许会觉得横在面前是一条恶狗。狗可以代表现实的黑暗,在上海这现实的黑暗使你步步惊心,真仿佛一条疯狗跟在背后一样。北平却是一只猫。它代表灵魂的堕落。北平这地方有一种霉气,使人们百事废弛,最好什么也不想,也不干了,只是这么蹲着痴痴地过日子。真是一只大猫将个个人的灵魂都打上黑印,万劫不复了”。
<<<

<<<
会笑的人思想是雪一般白的,不容易有什么性狂。
<<<

<<<
为维持面子的缘故,渐渐造成虚伪的习惯,所以智识阶级特别多伪君子,也因为他们对面子特别看重。他们既然对自然对人情不能够深切地欣赏,只好将快乐全放在淫欲虚荣权力钱财……这方面。
<<<

<<<
生不是由我们自己发动的,死却常常是我们自己去找的。
<<<

<<<
只有死才能够使人了解自己,指示给骄傲人看他也不过是个普通人,使他厌恶过去的快乐;他证明富人是个穷光蛋,除拥塞在他口里的沙砾外,什么东西对他都没有意义;当他举起他的镜在绝色美人面前,他们看见承认自己的毛病同腐朽。呵!能够动人,公平同有力的死呀,谁也不能劝服的你能够说服;谁也不敢想做的事,你做了;全世界所谄媚的人,你把他掷在世界以外,看不起他:你曾把人们的一切伟大,骄傲,残忍,雄心集在一块,用小小两个字“躺在这里”盖尽一切。
<<<

<<<
我们对生既然觉得二十四分的单调同乏味,为什么不勇敢地放下一切对生留恋的心思,深深地默想死的滋味。压下一切懦弱无用的恐怖,来对死的本体睇着细看一番。我平常看到骸骨总觉有一种不可名言的痛快,它是这么光着,毫无所怕地站在你面前。
<<<

<<<
杀(人)犯当临刑时节,常常唱出滑稽的歌曲,人们失望到不能再失望了,就咬着牙齿无端地狂笑,觉得天下什么事情都是好笑的。这些事都可以证明滑稽和愁闷的确有很大的关系。
<<<

<<<
“我不得不老是狂笑着,怕的是笑声一停,我就会哭起来了。”这或者也是愁闷人所以滑稽的原因。<<footnote "[1]"法国的戏剧家Beaumarchais的话>>
<<<

<<<
我承认偷情的少女,再嫁的寡妇都是造福于社会的,因为没有她们,那班贞洁的小姐,守节的孀妇就失丢了谈天的材料,也无从来赞美自己了。
<<<

<<<
我们既然知道人类理智的能力是有限的,那么又何必自作聪明,僭居上帝的地位,盲目地对于一切主张都持个大人听小孩说梦话态度,保存一种白痴的无情脸孔,暗地里自夸自己的眼力不差,晓得可怜同原谅人们低弱的理智。
<<<

<<<
“流浪汉如入生命的波涛汹涌的狂潮里生活。”<<footnote "[2]"近代小品文家Jackson在“流浪汉”文里的话>>
<<<


2018年03月16日周五下午11:44:22

<div style="background:#c8d4d7">
{{!!note}}
</div>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<div class="tc-subtitle">最後更新於<$view field="modified" format="relativedate"/>
<p>''关键词:'' {{!!description}}   |  ''综述:'' {{!!summary}}  
 | ''相关:''  {{!!relation}} </p></div>

!! 笑案
闽、粤有二命案,均可发笑。其一为强奸致死,审其实,则死者非牝乃牡,致之死者非雄乃雌也。盖粤东地虽苗疆,有燕六者,臬署之承差也,貌白皙,年仅念二三,捧檄催某县案卷,行程苦热,小憩于树下,袒裼偃卧,俟凉而后行。适遇苗家妇女,姑嫂宛若,共三人,挑菜而来,见燕肉色如雪,咸悦之。本省皆熟苗,可通情语,燕以走卒,素习此,浮词相挑,递野合于绿阴深处。娣姒争先,姑以女子独落后,然睹媟亵情状,早不自禁。燕自负色中卞庄,可刺三虎,无如精力已竭,至女竟委顿不起。女情极,百计抚摩,究难振作,隳颓益增,一时忿忿不已,谓燕薄己,以刓菜之镰狠割厥物,随手而落,其嫂皆不及防,燕遂死于牡丹花下。二妇大惧,方牵女思遁,而行人踵至,见血渍,诘得其状,擒以首官。燕虽少苏,逾日竟死。官因以戏杀置女于法。至于闽案,可笑而尤奇。某县邑宰检验一尸,项下胸前,致命数伤,固其常,惟后庭方寸地,以刃穴之而去,洞然无余肉。宰愕然询之,凶手不少讳,竟毅然曰:“刳之矣!”讯以安在,又毅然曰:“烹而食之矣!”宰骇且笑诘曰:“此何物而可啖,得毋欺甚?”对曰:“非敢欺也。死者年十四,吾悦其色,诱之以利,遂成奸。自是饮食衣服,无不取资于吾。吾犹惴惴焉,恐不当其意,以此耗斁予家。父母詈我,妻子怨我,戚族不齿于我,维渠之故。今未弱冠,而弃我如遗,欲与之欢,始犹规避,渐且拒绝,再强之则老拳将奋矣。情实不甘,绐以他事,与之游,乘其无备,刺而杀之。既而思败家之由,见绝之速,刳此归付釜鬻,烹而下酒,始泄此忿。今日虽万死不辞。”供讫,公堂上下,无不粲然。庭鞫再三,矢口不移。宰因事甚猥亵,删之弗录,仅以奸杀具详,而责令尸亲掩其骸。迄今入幕之宾,囊琴而游两地者,相对剧谈,犹举此以为笑柄。

!! 田再春


//2019年07月17日周三下午02:58:17//
<$transclude mode="block" tiddler=booklogsinfo/>

由英国的哲学家菲利帕·福特提出的:

假设你是一个列车司机。突然,你发现列车运行轨道前方有5名工作人员,慌忙中你踩下刹车,结果发现刹车莫名其妙地失灵了!

如果就这样一直开下去,肯定会撞到那5个人。

但是,你仔细一看,发现在右前方还有一条轨道。只要拉动把手,就能把列车转向右侧轨道。

可是,在那里竟然也站着人,但是只有1个人……

如果你什么都不做,列车直接撞向人群,就会夺走5条生命;如果你拉动把手,改变方向,就等于亲手夺走另外1条生命。

那么,你会怎样选择呢?

2020年11月17日周二下午08:10:51 

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=bookinfo/>
CCAV上正在热播电视剧《灵与肉》,看了两眼,不像时下作品。一查资料,原来是张贤亮的同名小说改编。花了一个小时把小说看完,短篇小说;电视剧很长,40集。恰好这几天正在整理[[中国百年思想史|中国百年思潮迭代和探究]]和[[近代阅读史|私人阅读史]],张贤亮恰是一个时代的写照。

从电视剧《灵与肉》里面看到张贤亮的影子,主人公和张的出身背景、时代遭遇以及成长基本相似,都具有一个美国留学的父亲,因此在上山下乡和文化大革命中被牵连,分配到大西北进行劳动改造,从而扎根西北娶妻生子。张的作品之前接触不多,所以索性就把《[[张贤亮文集]]》读了下来。

张贤亮的作品对标[[近代阅读史|私人阅读史]],属于70、80年代流行的伤痕文学(苦难文学)或寻根文学,这类作品基本上都是一股灰蒙蒙的基调。苦难文学,如果说是一代人对时代的控诉,不如说是一种集体回忆,对青春苦难的悲情叙事。因为回溯那个时代的教育和思想潮流 --- [[中国百年思想史|中国百年思潮迭代和探究]],这代人具有朴素的价值观和高度统一的世界观,所以他们做不出控诉的壮举,最多也是一种宣泄式牢骚。

伤痕文学有最大的特点是压抑 ,思想压抑和性压抑。这是时代造就的,这些正值澎湃青春的精条汉子懵懵懂懂的被丢弃在了荒北大漠、崇山峻岭或者戈壁滩头,改造地球,与天斗与地斗,赶英超美。所以他们是在扎根在土地中,成长在人民中,具有一种原始的朴素注意和价值观。

就说对劳动和土地的热爱之情吧。

<<<
劳动创造了人,因而人的原始本性天生地倾向于体力劳动;紧张的体力劳动会激发起已被文明淹没了的、早已经变为人的潜在意识的本性,突然使人又倒退回若干万年,感受到一种自身正在发展,自身正在变化,自身的品质正在丰富的心理上的快感。

回到若干万年以前去再现进步的过程,在这个过程中去享受满足与愉快吧!

从我和海喜喜比试体力劳动以后,从我被马缨花喂养成一个有正常体力的劳动者以后,五年过去了,我无数次地在劳动中享受过这种返祖的满足与愉快。
<<<

这是多么原始、朴素而由衷的价值观啊。

而对于性压抑,这群敢于天地试比高的汉子看起来就没有那么好了,身体可以被画地为牢圈起来,而思想确不能自主。

<<<
纯洁的如白色百合花似的爱情,战战怯怯的初恋,玫瑰色的晚霞映红的小脸,还有那轻盈的、飘浮的、把握不住的幽香等等法国式罗曼蒂克的幻想,以及柏拉图式的爱情理想主义,全部被黑衣、排队、出工、报数、点名、苦战、大干磨损殆尽,所剩下来的,只是动物的生理性要求。可怕的不是周围没有可爱的女人,而是自身的感情中压根儿没有爱情这根弦。于是,对异性的爱只专注于异性的肉体;爱情还原为本能。


有思考能力的人靠思考生活,没有思考能力的人靠本能生活,但本能使人坚强,思考却使人软弱。
<<<

他们从精神层面对恋爱的美好向往,发展到无法阻挡的身体原始性的冲动,到心理畸形的幻想,这一切都是那么自然、不可阻挡而又痛苦和扭曲。一群精条汉字发起了一场对吊死在所住屋里的一个女孩子的集体意淫:


<<<
在渠坝下躺够了,劳改犯们舒臂伸腿地活动起来。 “操!夜黑里来个女鬼就好了。” “来的女鬼可别是披头散发的,最好是涂脂抹粉的。” “熊!吊死鬼都伸着舌头,老长老长,通红通红,在你脸上舔一下,可够你呛!” “一个女鬼不够分,最好来一帮,十三个,咱们一人搂一个。” “咱们组长不要呀,咱们组长是个读书人。” “读书人咋啦?读书人也长着一个……”

“咦!俊着哩!还穿着红鞋,两条大辫子,唏溜个光!脸白森森的,眼睛毛毛长刷刷的。咱们给她抬下来的时候,身子骨还软软的……”

有的老劳改犯说她尿湿了裤子,说她舌头伸得老长老长,据说吊死的人都是这副模样,可是大多数老劳改犯都认为这是对她的亵渎,坚持把她描绘成一个仙女,我们这些后来的劳改犯,没有亲睹,对她当然不具有那种崇敬的情感,只是一个劲儿地想把她还原为活生生的肉体。“熬着点吧”,在受煎熬的时候,不由自主地会把她当作精神上的慰藉。

啊,贞洁的、勇敢的、不知姓名的姑娘,原谅我们吧!
<<<


<<<
豆大的油灯伴着我夜读。当我只见我一个人的身影,模糊地印在泥皮斑剥的土墙上的时候,我就会想到“十三”。“十三”!这是个极不吉利的数字。这个数字会把她召唤出来。

果然,她从梁上飘落下来了。先是一团不成形的彩色的雾气,落到地面上,便立刻凝聚成了一个活生生的美丽的姑娘。和老劳改犯说的一样,两条大辫子油光水滑的,长长的睫毛,水灵灵的眼睛,皮肤即使在昏黄的油灯下也显出白中透红的光彩。她还穿着冬天的红棉袄,脚上果真穿的是红鞋。简陋的小土坯房因为她的到来而变得喜气洋洋了。

她轻轻地掸拂着衣衫,怯怯地向我靠近,并发出一声暖人心意的深深的叹息:“哎,苦啊——”

“来吧,”我向她伸出手去,“你苦,我也苦,让我们两人在一块儿吧……”

“我说的就是你呀。”她将手搭在我的肩上,弱不禁风的、但又很温暖的身躯紧贴着我,眼睛看着摊在我面前的书。“你苦,我不苦。人死了,什么苦恼也没有了。每天晚上,我都看着你等人睡下了,又爬起来看书,何必呢?别把身体搞坏了。”

她的声调是幽怨的。我搂着她那娇小的腰肢。我被她不自以为苦却关怀着我的精神感动了,我含着辛酸说:
“你也苦呀。为什么年纪轻轻地就寻死呢?活着总比死了好吧?你要是活着多好!”

“活不下去呀,”她微微地晃动着身子,使我有一种进入梦幻般的感觉。“人要把我嫁给我不愿嫁的人,你说还能活吗?”她又低声地说:“当初,要是你在就好了。我正是要出嫁的那天跑到这儿来上吊的。那天你要在这儿,我就不上吊了。”

我把她揽进我的怀里,让她坐在我的大腿上;抚摸着她光滑的发辫。“这都是社会的原因呀,”我说,“我们还没有达到真正的男女平等,还没有真正的婚姻自由。我看书,就是要探索怎样才能建设一个人与人之间真正平等的社会。”//节选自《男人的一半是女人》//
<<<



2018年06月22日周五下午03:52:49
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
民国文人两大悬疑(或者说秘密),一个之前是王国维之死,之前在[[一个人的书房]]提到过(见[[五十之年,只欠一死]]);一个是鲁迅两兄弟 --- 周树人和周作人 --- 决裂。

鲁迅的母亲曾对许钦文四妹许羡苏说过:“龙师父给鲁迅取了个法名——长庚,原是星名,绍兴叫‘黄昏肖’。周作人叫启明,也是星名,叫‘五更肖’,两星永远不相见”(陈漱渝《东有启明,西有长庚——鲁迅与周作人失和前后》)。龙师父的话,竟成了谶语,自1923年7月始,周氏兄弟突然反目,从此真的“永远不相见”了。

鲁氏两兄弟同是新文化运动的排头兵,号召性人物。而关于鲁氏两兄弟的决裂个中原因众说纷纭。这是鲁氏兄弟的家事,外人的指手画脚均无迹可查,无证可取,只能从当事人话里话外和字里行间也许可以看出个端倪来。

周作1923年17日的日记记载:“阴,上午池上来诊。下午寄乔风稿件,焦菊隐、王懋廷二君函。”其实根据周作人后来写的《知堂回想录》可知,这则日记中原来写了兄弟矛盾的内容,后被周作人自己“用剪刀剪去了”。

鲁迅7月19日日记中记有“上午启孟自持信来,后邀欲问之,不至。下午雨”。周作人的信全文如下:

<<<
鲁迅先生:''我昨日才知道——''但过去的事不必再说了。我不是基督徒,却幸而尚能担受得起,也不想责难——大家都是可怜的人间,我以前的蔷薇的梦原来都是虚幻,现在所见的或者才是真的人生。我想订正我的思想,重新入新的生活。以后请不要再到后边院子里来,没有别的话。愿你安心,自重。七月十八日,作人。
<<<

“我昨日才知道——“。知道什么?什么是周作人如此怅然、委屈和痛苦?

8月2日鲁迅日记:“雨,午后霁。下午携妇迁居砖塔胡同六十一号。”

8月2日周作人日记:“下午,L(鲁迅)夫妇移住砖塔胡同。”

鲁迅搬离二人合租的小院,八道湾胡同六十一号。看似平静。

1924年6月11日鲁迅日记写道:“下午往八道湾宅取书及什器,比进西厢,启孟及其妻突出骂詈殴打,又以电话招重久及张凤举、徐耀辰来,其妻向之述我罪状,多秽语,凡捏造未圆处,则启孟救正之,然终取书、器而出。”

事隔十个月兄弟二人的矛盾再度爆发和激化,甚至到了骂粗口和动手的地步。据说,羽太信子数落鲁迅“罪状”之时,周作人突然拿起狮状铜香炉向其兄头上砸去,幸在场有人接住,鲁迅才免遭血光之灾。

鲁氏兄弟都是五四新文化运动中和北大校园中为人师表的响当当的人物,是什么样的矛盾使两个亲兄弟闹到如此撕破斯文,街头巷里骂街式丑剧?

从当事人的日记中都讳莫如深!事实真相看起来是无人知晓了,外界的猜度各说其词。

与鲁迅交好的郁达夫曾在他写的《回忆鲁迅》一文中透露:


<<<
据凤举他们的判断,以为他们弟兄间的不睦,完全是两人的误解。周作人氏的那位日本夫人,甚至说鲁迅对她有失敬之处。但有时候鲁迅对我说:“我对启明,总老规劝他的,教他用钱应该节省一点,我们不得不想将来,但他对于经济,总是进一个花一个的,尤其是她那位夫人。”从这些地方,会合起来,大约他反目的真因,也可以猜度到一二成了。
<<<

在鲁迅被推上神坛之后,许广平在她的《鲁迅回忆录·所谓兄弟》中,再次引用了鲁迅与她的一段谈话,鲁迅说:

<<<
“我总以为不计较自己,总该家庭和睦了罢,在八道湾的时候,我的薪水,全行交给二太太,连周作人的在内,每月约有六百元,然而大小病都要请日本医生来,过日子又不节约,所以总是不够用,要四处向朋友借。有时借到手连忙持回家,就看见医生的汽车从家里开出来了。我就想:‘我用黄包车运来,怎敌得过用汽车带走的呢?’”
<<<

在许广平另一篇文章《略谈鲁迅先生的笔名》中说,鲁迅辑成《俟堂专文杂集》,署名“宴之敖”,后《铸剑》也用此名。许广平回忆,鲁迅对“宴之敖”笔名这样解释:

<<<
“先生说:‘宴’从门(家),从日,从女;敖从出,从放(《说文》做……游也,从出从放);我是被家里的日本女人逐出的。”
<<<

1949年后,在诸多的文人回忆鲁迅的文章中,在提及周氏兄弟反目时,一边倒地站在已成为伟大的革命家、伟大的文学家、伟大的思想家的鲁迅一边。于是周作人在他的《知堂回想录·不辩解说》中,说了下面意味深长的话:

<<<
大凡要说明我的不错,势必先说对方的错。不然也总要举出些隐秘的事情来作材料,这都是不容易说得好,或者不大想说的,那么即使辩解有效,但是说了这些寒碜话,也就够好笑,岂不是前门驱虎而后门进了狼吗?
<<<

除了上面有文有节的猜度,坊间和网上还有人说是因为鲁迅偷看弟媳妇洗澡之说。

不管事实怎么样,二兄弟不说,那是因为人家还是打折骨头连着筋的亲兄弟,不说是为了保护兄弟之间的面子。如果说了,那谁也没有面子和尊严了。

2018年07月05日周四下午02:07:23
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

!! 罗素悖论:

<<<
“没有将自己作为其中要素的集合”的集合,是存在的吗?
<<<

!! 自涉(自指)性悖论
“提及自己的悖论”也被称作“撒谎悖论”,是克里特人埃庇米尼得斯所说的一句话,他说

<<<
“克里岛的人,人人都说谎”
<<<


<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=bookinfo/>

<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
毛姆在《阅读是一座随身携带的避难所》中首先强调,''阅读是一种享受''。正如书名:阅读是一座随身携带的避难所,所以“不管学者们对一本书的评价如何,不管他们是多么一致地对一本书盛赞,要是你对这本书不感兴趣的话,你就不必去理会这本书。”这和之前读民国名家关于读书的合集《怎樣讀書》几位大家读书观一样,尤似钱钟书。当然这里指的不是学校里面的学习性阅读,而是我们日常生活之阅读,而这些阅读“书籍既不会帮你拿到学位,也不会教你谋生的本事;不会教你如何航船,也不会教你如何修理停运的机器,但是这些书会让你活得更加丰满。”

而对于小说的阅读,毛姆认为则不必逐字逐句贯穿阅读,要跳读。

<<<
我对在《红书》上发表的书单做了一个简短的注释:“如果聪明的读者能学会跳读的技能,他便总是能在阅读中获得最大的乐趣。”''一个明智的人不会把读小说当作一项任务,而是把它作为一种消遣。''
<<<
事实如此,诸多名家大腕之所以读书充栋,一些人能一目十行,在一些书目上实在不必字字必到,只要掌握其核心思想,或者故事发展趋向,以及主人公的故事脉络即可。“ 如有需要的话,他(小说作者)会牺牲掉真实度和可信度来完成他想要达到的效果,而那并非科学类或信息类作品的创作方式。小说家的目的不是指引,而是愉悦。”当然这是指大多数的小说,不是绝对的,对一些经典,之所以誉为经典,就是没有芜杂繁复,也无法压缩和裁剪,这类小说非但不能跳读,更应该复读。前面指的使小说,对一些非小说类的书籍,个人经验来看,也应该跳读,看完目录,掌握整本书的结构,一般来说第一章讲述本书的写作起因,第二章输出主要观点,之后的章节皆为论据。所以,重点读第二章即可。

2017年11月19日 下午 04:01:39
<$transclude mode="block" tiddler=bookinfo/>
[img width=80% 
 [http://one.rizi.me/photos/rizime/Metcalfe's law.png]]

梅特卡夫定律,即网络效应,指当一个产品的用户数越多,该产品对用户的价值就越大,这反过来又能吸引更多用户使用该产品。同时,该产品的价值跟用户数的增长成二次方关系。产品的价值等于用户数量的平方。

返回[[思维模型|Thinking Models]]
<<<
这是最好的时代,这是最坏的时代;这是智慧的时代,这是愚蠢的时代;这是信仰的时期,这是怀疑的时期;这是光明的季节,这是黑暗的季节;这是希望之春,这是失望之冬;人们面前有着各样事物,人们面前一无所有;人们在直登天堂,人们在直下地狱。

It was the best of times, it was the worst of times, it was the age of wisdom, it was the age of foolishness, it was the epoch of belief, it was the epoch of incredulity, it was the season of light, it was the season of darkness, it was the spring of hope, it was the winter of despair, we had everything before us, we had nothing before us, we were all going direct to heaven, we were all going direct the other way.
//《双城记》 查尔斯·狄更斯//
<<<


<<<
我羡慕那些来自乡村的人,在他们的记忆里总有一个回味无穷的故乡,尽管这故乡其实可能是个贫困凋敝毫无诗意的僻壤,但只要他们乐意,便可以尽情地遐想自己丢殆尽的某些东西仍可靠地寄存在那个一无所知的故乡,从而自我原宥和自我慰藉。
//《动物凶猛》/王朔//
<<<

<<<
洛丽塔,我生命之光,我欲念之火。我的罪恶,我的灵魂。洛一丽一塔;舌尖向上,分三步,从上颚往下轻轻落在牙齿上:洛一丽一塔。

Lolita, light of my life, fire of my loins, my sin, my soul. Lo-lee-ta: the tip of the tongue taking a trip of three steps down the palate to tap, at three on the teeth. Lo.Lee.Ta. //
《洛丽塔》/ 弗拉基米尔·纳博科夫//
<<<


<<<
幸福的家庭都是相似的,不幸的家庭各有各的不幸。

All happy families are alike; each unhappy family is unhappy in its own way.
//《安娜·卡列尼娜》/列夫·托尔斯泰//
<<<


<<<
很多年以后,奥雷里亚诺上校站在行刑队面前,准会想起父亲带他去参观冰块的那个遥远的下午。当时,马孔多是个20户人家的村庄,一座座土房都盖在河岸上,河水清澈,沿着遍布石头的河床流去,河里的石头光滑、洁白,活像史前的巨蛋。

Many years later, as he faced the firing squad, Colonel Aureliano Buendía was to remember that distant afternoon when his father took him to discover ice. At that time Macondo was a village of twenty adobe houses, built on the bank of a river of clear water that ran along a bed of polished stones, which were white and enormous, like prehistoric eggs.
//《百年孤独》/ 马尔克斯//
<<<


<<<
他是个独自在湾流中一条小船上钓鱼的老人,至今已去了八十四天,一条鱼也没逮住。

He was an old man who fished alone in a skiff in the Gulf Stream and he had gone eighty-four days now without taking a fish.
//《老人与海》/海明威//
<<<


<<<
我已经老了。

有一天,在一处公共场所的大厅里,有一个男人向我走来。他主动介绍自己,他对我说:我认识你,永远记得你。那时候,你还很年轻,人人都说你很美。现在,我是特地来告诉你,对我来说,我觉得现在你比年轻的时候更美,那时你是年轻女人,与你那时的面貌相比,我更爱你饱经沧桑的容颜。

ONE DAY, I was already old, in the entrance of a public place a man came up to me. He introduced himself and said: I’ve known you for years. Every-one says you were beautiful when you were young, but I want to tell you I think you're more beautiful now than then. Rather than your face as a young woman, I prefer your face as it is now. 
//《情人》/玛格丽特·杜拉斯//
<<<


<<<
白嘉轩后来引以为豪壮的是一生里娶过七房女人。
//《白鹿原》/陈忠实//
<<<


<<<
婊子无情,
戏子无义。
婊子合该在床上有情,
戏子,只能在台上有义。
每一个人,有其依附之物。娃娃依附脐带,孩子依附娘亲,女人依附男人。有些人的魅力只在床上,离开了床即又死去。有些人的魅力只在台上,一下台即又死去。一般的,面目模糊的个体,虽则生命相骗太多,含恨地不如意,胡涂一点,也就过去了。生命也是一出戏吧。
//《霸王别姬》/李碧华//
<<<


2018年04月21日周六下午03:42:17
<$transclude mode="block" tiddler=bookinfo/>
[[我书架上的神明]]上下册上周已经看完并简单做了一些归纳(见[[我的秘密书架]])。但总感觉对此书应该写点什么,也许读完意犹未尽吧。

严格来说此书是百人短文合集,不算传统意义的书。也正是其合集形式,才是其价值,能一口气了解书中上百人的读书故事和历程。每个人性情不同,读书的方向不同,书架上的秘密自然各异。而相同的是,这波60年代(或更早期)人,都对书有如饥似渴的渴望,对读书之事有敬畏之心,对治学有谦逊和严谨的态度,对人生有珍惜和知足心态,对现实有冷眼旁观的冷静,对政治有欲言又止的苦恼,对未来有不惑和期望。这在每个人的读书故事中,笔墨之间,皆别有机杼(见开启那遥远时代的漂流瓶 [[1|开启那遥远时代的漂流瓶]]  和 [[2|开启那遥远时代的漂流瓶2]])。这是此书价值之一。

价值之二,在于百位学人对所列书单的解读和荐语,书单道在其次。所荐书目之所以被称作“我的秘密书架”(又名 我书架上的神明),都和作者有不一般的因缘,或是雪中之碳,或黑暗中的灯,或是痛苦时的避难所,或是困惑时的醍醐,或是彷徨时的棒喝,或是学术之径的阶梯,或是拂去心灵灰尘的甘露。有些书目被作者列为枕边书,一辈子常读常新之书。所以荐书者对所荐之书都有非一般的认识和解读,或人,或事,或物,言语不虚。故此两本书可以作为以后找书籍的重要参考资料。

2018年03月13日周二下午09:45:38
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$list filter="[field:book_title[民国清流:大师们的抗战时代]]+[sort[created]]">

<$link><$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/></$link>  
@@color:gray; <$view field="title"/>- <$view field="description"/>  - <$view field="caption"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---

<$list filter="[field:book_title[民国清流:大师们的战国时代]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[民国清流:大师们的中兴时代]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$list filter="[field:book_title[民国清流:那些远去的大师们]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$list filter="[field:location[明代]]+[!sort[created]]">

<$view field="book_title"/> @@color:gray;<$view field="author"/>- <$view field="description"/> - <$view field="relation"/>@@ <$link><$view field="title"/></$link>  
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$details summary="点此预览"> 

<$transclude/>

</$details>

<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
请问:“摩西上方舟时,每种动物各带了多少?”

......

很少人注意到这个提问本身是有问题的,是诺亚带动物登上方舟,而非摩西。这种现象叫做“摩西错觉”。

造成摩西错觉有三种原因:

1. 摩西和诺亚两个名字的英文元音和音节数都是相同的,容易产生混淆;

2. 动物登上方舟营造了圣经的文化背景,而您对摩西出现在这个文化背景中并没有特别期许;

3. 您的注意力聚焦在了“带了多少动物”,从而忽略了带动物上方舟的人。

人脑之所以产生摩西错觉,罪魁祸首是系统1,因为:


```
系统1:“她最得意的姿态是忘乎所以,最喜欢做的事就是仓促下结论。”所以她容易产生偏见,同样,她也是好骗的。

系统2:易变和怀疑是系统2的职责,但是因为要消耗体能,所以她又是懒惰的。同样她也是容易擅离职守的。

```

那就唤醒系统2来解决摩西错觉,给系统1设置障碍。

再请问:“乔治·华盛顿上方舟时,每种动物各带了多少?”

这样的问题您是不是感到别扭?是别扭,但是不容易出错,您马上会发现问题所在,这就是系统2被唤醒了。

所以我们要杜绝相信哪些荒谬之词,或者说避免被洗脑,被广告麻痹,就需要调用系统2,使其工作起来,抑制系统1。

//2018年02月19日周一上午12:07:38//
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<<<
''“凡是可能出错的事都会在未来出错。”(Anything that can go wrong will go wrong.)。''
<<<


''墨菲定律(Murphy's Law)''是日常生活中经常会发生的一种因果现象。严格来说,墨菲定律应该被成为墨菲效应 <<footnote "①"什么是效应:效果或效应,是指在有限环境下,一些因素和一些结果而构成的一种因果现象,多用于对一种自然现象和社会现象的描述,效应一词使用的泛围较广,并不一定指严格的科学定理、定律中的因果关系。例子如温室效应、蝴蝶效应等等。">>, 因为墨菲定律并不具有定律的普适性并不具有定律的普适性,在某些条件下并不会发生,例如具有容错机制(参见:[[控制论与科学方法论]])的环境下。

<<<
''墨菲定律'',又译为摩菲定理,核心内容是“凡是可能出错的事必定会出错”,指的是任何一个事件,只要具有大于零的概率,就可确定它必会发生。“若缺陷有很多个可能性,则它必然会朝往令情况最坏的方向发展”。
<<<

墨菲定律在日常生活中的表现通常为“第六感”或“事后诸葛亮”。“直觉告诉我要出问题”,“我就说吧,这样不行”。中国人身上最容易发生墨菲效应,因为华夏文化中的缺少一种科学精神,准确的说缺少科学的严谨精神,取而代之的是“差不多”态度,所以在中国人日常生活用语中,充斥着大量“差不多”、“还行吧”、“马马虎虎”、“凑合”等含糊辞令。

那么怎么避免墨菲效应的发生?

首先,意识到存在问题时去解决问题,而不是心存侥幸。

其次,行为设计时做好充分假设,并做好应对措施和容错机制。

当然,这一切都建立在具有科学精神或严谨的态度的基础之上。


//2019年04月20日周六下午01:30:03//
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

某种意义来说,批评的价值胜过赞誉。

+ 阿特兰(人类学家):智商。智商是一种能被大众所接受的、衡量人类分类及推理能力的通用评估方法。智商测试是在行为主义的鼎盛时期被发明出来的,而那个时候人们对认知结构之类的理念还没什么兴趣。打分系统被做成工具,能够输出呈正态分布的分数,均值为100分,标准偏差为15分。所谓的“智商”测试,在任何情况下都无法反映一个人的基本认知能力,更不能用来给人类的心智做自然分类。

+ 夏卢帕(华盛顿大学校长):大脑可塑性(大脑训练)。“大脑可塑性”无形中已经被用于描述所有神经元结构及功能的变化。许多研究成果还未曾证实神经元发生了变化,就搬出大脑可塑性来解释行为变异。

+ 戈尔登菲尔德(教育心理学家):在物理学领域,我们习惯性地用后缀“on”表示某种物质的量化单位(质子proton、中子neutron、介子pion,π介子meson等),个人(person)那?你和其他人之间有强烈的交互,这说明你是社会的一部分,并且只有在社会环境下,个体才能表现正常。再进一步说,你就像空间场中的一个量子,这个场描述的是每个点的人口密度,而不是电磁场强度。从技术上讲,这种表述方法可以很好地描述生态系统在时空内的行为模式,特别是解释了非连续变化对物种灭绝现象的重要性。说到这儿,似乎可以自然而然地引出“个体”这个模棱两可、充满矛盾的术语了。

+ 泰格马克(麻省理工学院物理学家):无穷。德国数学家格奥尔格·康托(Georg Cantor)用对角线法证明了:有一些无穷大比另一些无穷大更大。“无穷大也有无限个层次”,我们找不到证据来证明存在无穷。

+ 希利斯(计算机学家):因果之道。因果之道只是一个我们用来与外界打交道、按照我们的理解来诠释外界的框架而已。所谓“树以前因,报以后果”只是我们头脑的产物,大自然中并不真的存在。

+ 理查森(加州大学教授):人性。人性”这个词暗示着它界定的是人类物种普遍的核心特征,而进化生物学告诉我们,这种本质主义的概念是错误的,和本质主义一样过于泛泛而谈。

+ 卡罗尔(加州理工物理学家):可证伪性。哲学家卡尔·波普尔曾提出“可证伪性”的划界标准:如果存在一种理论能够说明一种预测是绝对可证伪的,这种理论才能被认为是科学的。这种理念很好,但还不够。现代物理学早已延伸到了远离日常生活经验的领域,这也导致了有时候甚至连实验都没法做。

+ 伯格斯特(计算机教授):“科学”。大多数“什么什么的科学”之类的书籍,无论是与神经化学相关的、计算学相关的,或者经济学相关的,关注的是其相关主题的物质或素材形式。但是,某一主题的物质承载实体与相关科学之间,根本没有必然关系。科学一直在致力于成为世俗知识的最高形式,但具有讽刺意味的是,不经意间,科学从一种实践演化成了一种意识形态。

+ 胡德(认知学家):自我。自我是被构建出来的,自我是一个错觉,自由意志应该被抛弃。

+ 梅青格尔(哲学家):认知能动性。思考并非是心理活动或是行动。大多数时候,它只是一种结果。我们大多数的意识,就像呼吸或胃肠道器官的蠕动一样,是非自主行为的产物。根据研究,在我们醒着的30%~50%的时间里,我们都被各种不知从哪儿突然冒出来的、与眼下事无关的想法占据着思绪。保守估计,在我们一生中一半以上的时间里,思维是不受意识主动控制的。

+ 普罗文(马里兰大学神经科学家):常识。所谓的常识只是想当然的结果,我们并不是对自己的认知拥有全部控制权的理性生物。研究表明,我们所形成的印象并不是一个对现实事物、事件的精确复制,而只是一个对外界物理刺激的最佳估计而已,感知错觉也是由此而来的。

+ 乔治·戴森(科学史家):科学和技术。可能存在着没有技术的科学,也可能存在着没有科学的技术。中国在古时侯,大量复杂的技术被开发出来,但科学并没有跟上。实在很难想象一个社会只拥抱技术而抵制科学。也有可能某一特殊种类的技术已经占据了主导地位,以至于技术本身出于自我保护的目的,而阻碍了科学的发展。

//2020年07月12日周日下午11:50:03//

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

上接:[[哪些科学观点必须去死-1]]

蒂莫·汉内: 先天与后天。这个概念由达尔文的表弟高尔顿创造,他是优生学创始人,一位博学者。不幸的是,就和他的那些作恶多端的观念一样,“先天与后天”建立了一个错误概念和受政治影响的混合体,流毒不浅、罪大恶极,是那些已经流入现实社会、造成了实质性伤害的错误观点。当人们在剖析基因和环境的影响时,一个最基本的错误就是假设这两个方面是可以分开的。而当一位伟大的加拿大神经心理学家唐纳德·赫布(Donald Hebb)被人问到,先天和后天哪个对人性影响更大时,据说他是这么回答的:“哪个对矩形的面积影响更大,长度还是宽度呢?”拿身高来说,在发达国家,身高的遗传力大概可以发挥到80分。可这只是因为在发达国家里营养水平普遍比较高。在营养不良或饥荒盛行的国家里,环境的因素就起主导作用了,身高的遗传力就会低很多。“先天与后天”的错误概念使得那些有头脑的人在孩子的教育这件事上,混淆了平等主义和法西斯主义,误解了自己所奉行的政策结果,最终形成了毫无事实根据的信念。

罗伯特·萨波尔斯基(斯坦福大学神经科学家):“基因-环境交互作用”,就像去问一个矩形的长度与它的面积有什么关系时被告知:在特定情况下,存在长度和宽度的相互作用。

高普尼克(心理学和哲学教授):先天性。先天和后天这种区分从根本上来说就是错误的。研究表明,几乎我们所做的每一件事都不仅仅是先天和后天相互作用的结果,而是两者同时作用的结果。

埃弗里特(语言学家):“本能”与“天性”,”这样的说法之所以值得怀疑,还因为很大程度上我们以为是本能的特性,随着环境的剧变,也会发生很大变化。

奥尼什(临床医学教授):大样本随机对照试验。越来越多的人认识到样本容量并不总是很重要,随机对照试验也可能会存在其特有偏差。

查尔斯·塞费(新闻系教授):统计学显著性。“统计学显著性”这一概念是平庸的人、易受骗的人、不诚实的人以及无能者的福音。

尼斯比特(心理学家):多元回归,发现因果关系的方法。认为研究对象数量多总比数量少好,理由是我们更可能发现不明显的结果。但是我们对研究是否有信心,不是基于对象的数量,而是基于我们对结果的判断是否公正,以及该结果是否具有统计学意义。

布莱克莫尔(认知神经科学教授):左脑?右脑?社会上流行的“左(右)脑思维”的说法,例如说,具有逻辑性、分析性和准确性的左脑思维模式,有创造力、直觉、情感和主观性的右脑思维模式。这些都是伪科学,并没有建立在大脑如何运作的基础之上。几乎在所有的情形、任务和进程中,大脑的两个半球都是一起工作的。它们总是在不停地交流,根本不可能出现一个半球独立运转的情况,除非在一些罕见的病人大脑中。也就是说,你不属于左脑思维或右脑思维,而是全脑思维。右脑损伤的病人往往也有创造力,而左脑受损的病人可能不具备语言能力(超过90%的人群依赖左脑说话),但依旧善于分析。

科斯林(心理学家):左右脑理论。这样的理论对教育和认知危害颇深,是时候抛弃了。 人是全脑工作。例如,左半球优先处理我们所看到物体的细节,而右半球则先处理它的整体外形;左半球先分析句法(字面意义),右半球则优先分析语用(间接或隐含意义)。这样的例子还有很多。大脑的两个半球和我们的左右肺不同,它们不是各自可有可无的“备用品”。

埃尔德·沙菲尔(心理学教授):对立的两面不可能都对。在经典的“好撒玛利亚人实验”中,约翰·达利和丹尼尔·巴特森招募神学院学生,针对好撒玛利亚人的寓言进行布道。其中有一半的学生被告知,他们赶往布道地点的时间很充裕,而另一半学生被告知时间非常紧迫。在他们去布道的途中,所有参与者都会遇到一名因受伤而倒在路上的人,这个人看上去需要帮助。大多数时间充裕的学生会停下来帮助这个受伤的人,但只有10%要迟到的学生会停下来施予援手,而其他人会继续赶路,不帮助受伤的人。尽管他们都受过道德教育,也学习过《圣经》,然而“时间约束”竟成了神学院学生是否愿意停下来救人于危难的决定性因素。每个神学院的学生都有慈悲和冷漠的两面,而究竟会表现出哪一面,则受当时情境的影响。

//2020年07月17日周五下午07:41:53//

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
如果说五四新文化运动代表的是历史潮流和方向,那么与之相对的是旧学和旧势力。陈独秀和胡适为代表的改革派,是想借白话文做钟馗,打封建思想余孽这个恶鬼;想借新文化运动做利剑,讨伐旧势力那个稻草人。不过新和旧是不能完全割裂的,新是从旧所脱胎换骨,易容革命,完全隔离就变得激进而无益。君可见,当下社会信仰之缺失,道德之沦丧,风气之败坏,均可在历史中找到罪魁和祸首。

[[民国清流:那些远去的大师们]]里面所谓的旧势力、老朽或旧文人,如章太炎、辜鸿铭等,同样具有可爱、可敬的一面,不仅学富五车,而且思想道德之高远影响深远。

就说这位奇人辜鸿铭吧。


<<imageSlider  [[http://p3.cdn.img9.top/ipfs/QmTaeXKhL3kkGtxyQYg5BG58XvvDDnePFjb7fpKxAXYP81?3.jpg]]    "辜鸿铭">>


<<<
中国文人多有放诞传统,放诞即是真性情流露,更是对抗专制制度的一种无奈姿态。就群体而论,晚清和民国时期的文人最为放诞,最为淋漓尽致,表现了有操守文人的崇高人性,章太炎将袁世凯授的勋章做扇坠,辜鸿铭拖长辫教训毛姆,金岳霖与鸡共舞,钱玄同“人到四十就该死”……一个个鲜活的灵魂,跃然青史。
<<<


辜鸿铭是位“三洋”之人,生在南洋、学在西洋、就职北洋。辜精通多国语言,林语堂有这样评价“英文文字超越出众,二百年来,未见其右。造词、用字,皆属上乘。总而言之,有辜先生之超越思想,始有其异人之文采。鸿铭亦可谓出类拔萃,人中铮铮之怪杰。”在北大就其西文造诣无人可望其项背,但其中文可就马马虎虎了。一次他在北大课堂上讲《晏子春秋》,不小心把“晏”误写成“宴”字。学生向他指出,他边改边发牢骚说:“汉字之晏与宴,不过是日字上下调换一下而已,却字义大不相同,英文就少了如此麻烦。”学生不服,站起说英语也有将“god”(上帝)倒过来写成“dog”(狗)的。老先生竟只有耸肩无语的份儿。

辜鸿铭不仅把中国古典典籍,如《论语》等翻译到西方国家,也经常自愿担当起中国文化推广大使的角色。他到东交民巷外国使馆区的六国饭店用英文讲演《春秋大义》,开演讲售票先河。令世人瞠目的是,票价竟比听梅兰芳的戏还贵。听梅兰芳的戏,是一元二角大洋,听辜鸿铭讲演却要两块大洋。外国人趋之若鹜,一票难求。

别看辜鸿铭学通中西,但其思想是个"老古板",是个典型的保皇派,在北大被称为“辜鸿疯子”。他总是梳着大辫子,带着书童走进教室,上课时还让仆人给他点烟倒茶。学生们见此无不片哄堂大笑,辜平静确平静地说:“你们因我有辫子而笑我,我的辫子是有形的,可以轻易剪掉,然而诸位长在脑袋里面无形的辫子,就不那么好剪了。”闻听此言,狂傲的北大学生一片静默。

辜鸿铭不仅持才傲物,也是一位真性情中人。胡适刚到北大上台讲演时,不时用英语。当胡适在掌声中走下讲台时,正襟危坐在台下的辜鸿铭竟当着众人,对胡适说:“胡先生留学七年,可刚才的英语说得实在不地道。记住,在英国那是下等人的发音!”对胡适写的新诗,辜鸿铭也冷嘲热讽:“你那首‘黄蝴蝶’写得实在好,以后就尊称你为‘黄蝴蝶’了。”辜鸿铭一次对胡适说:“按白话文,你不该叫胡适之,该叫‘往哪里走’。还有,今天我当着你的面,为文言文说一句好话,如果家里来电报,说你父亲死了,叫你赶快回家奔丧,白话文多啰唆呀,如换成文言文,只需四个字,‘父亡速归’……”谦谦君子的胡适,也只能对之一笑而过。

辜还喜欢中国姑娘缠足,酷嗜嗅女人小脚,讲究瘦、小、尖、弯、香、软、正七字诀。对于清代文化如缠足、长袍、马褂、辫子、纳妾,辜鸿铭坚持终身。辜鸿铭娶了淑姑不到一年,又纳日本大阪心斋桥人吉田贞子为妾。辜鸿铭最出名的比喻是认为一夫多妻是一把茶壶配几只茶杯。当时诗人徐志摩结婚时,他的妻子陆小曼曾对他说:“志摩!你不能拿辜先生茶壶的譬喻来作借口,你要知道,你不是我的茶壶,乃是我的牙刷,茶壶可以公开用,牙刷是不能公开用的!”

尽管辜鸿铭有各种行为“不合时宜”,但辜是个有一定底线的人。慈禧太后过生日时,他当众脱口而出的“贺诗”是“天子万年,百姓花钱。万寿无疆,百姓遭殃”。而在北京大学校长蔡元培被免职时,他也愤而辞职,曾说:“现在中国只有两个好人,一个是蔡元培先生,一个是我。因为蔡先生点了翰林之后不肯做官,就跑去革命,到现在还是革命。我呢?自从跟张文襄做了前清的官以后,到现在还是保皇。”但他反对袁世凯的洪宪称帝。

毛姆的书如今在中国大热,盘踞各大书籍排行榜。而毛姆造访中国时候,却被辜鸿铭教训了一番。

毛姆读过另一大文豪托尔斯泰于1906年写给辜鸿铭的长信,后又读过辜鸿铭写的《中国人的精神》。毛姆对辜鸿铭和神秘的东方哲学充满了向往之情,所以便有了1921年的中国之行。到京后,毛姆就写了名帖派人送过去请他过来。可辜鸿铭根本不吃他这一套:


<<<
待毛姆明白过来,立刻写了一封十分客气的信,表示将到府上亲自拜访。待毛姆领教了对辜鸿铭轻慢的代价后,得到允诺才乘着轿子在胡同间穿行了一阵子,停在一座有些破败却十分古雅的门楼前。在仆人引导下,走过萧索的庭院,跨入一排堆满线装书的房间。落座后,仆人奉上一听纸烟和一杯香茶。在他打量墙上的字画时,辜鸿铭穿着马褂踱了进来。

二人握手后,重又坐下。辜鸿铭先开口了,那一口流利地道的英语让毛姆吃了一惊,听了他的话更吃了一惊。辜鸿铭说:“先生想来见我,真是荣幸之至。因为贵国人只同苦力和买办打交道,他们大概以为所有的中国人不是苦力就是买办。” <<ref "[1]">>

在毛姆不知所措之时,辜鸿铭又说:“所以你们以为只需招招手,我们就得过来。”

毛姆只得不断向面前这位高大瘦身、戴着小帽、后面拖着灰白小辫,早已在欧洲扬名立万的中国学者道歉,窘迫得无地自容。

交谈时,他们谈到了文化和哲学。毛姆认为西方哲学家影响了全世界,欧洲创造了辉煌的文化,至今还在指导着世界。

辜鸿铭不赞成毛姆的说法,说西方的休谟和柏克莱,他们无法与我们的孔子相提并论。当西方穴居毛饮的时候,我们已是进化的人类了。

毛姆表示不赞同辜鸿铭的见解,问:“那么为什么你们黄种人遭到白种人的轻蔑呢?”

辜鸿铭来气了:“因为你们白种人发明了大炮和机关枪!”

后来,他们又谈到了刚刚来华的杜威的实用主义。辜鸿铭说:“杜威的实用主义,那是那些想要相信不可信的东西者的最后避难所。”

毛姆听了眼前这位雄辩家对西方哲学和现代个人主义的批评后,将话题转到中国新文化运动、罗素、苏俄共产主义方面来。这是他此次来访要探讨的实质性问题。辜鸿铭的谈兴正浓,他说:“新文化运动,就是那些新从外国大学回来的,用那亵渎的手,把世界上最古老的文化破坏无遗的运动。而罗素就是用世界上最庄严的词句把青年教唆成流氓的家伙。至于共产主义么,我还没研究过。记得马克思说过它是个幽灵,让整个世界都不得安宁的幽灵罢了。”

毛姆把眼睛睁得大大的,连连说:“精辟,实在精辟!”

见毛姆对他的辫子很感兴趣,辜鸿铭说,这是一个标记,证明我是一个时代的代表。

在二人告别时,毛姆向辜鸿铭索字,辜鸿铭找了一张写满汉字的纸笺,送给他。毛姆归国后,请汉学家译出后,真叫他哭笑不得,竟然是一首写给青楼女子的情书:你不爱我时,声音甜甜,眼波含笑,素手纤纤。待你爱上我,声音变得凄楚了,满眼是泪,睹手痛惜。伤心哪,伤心之爱使你不爱……

<<<

辜鸿铭被称为清末第一有趣之人,有趣之人自然非议也颇多。对辜的评价也有颇多种声音:

温源宁:“一个鼓吹君主主义的造反派,一个以孔教为人生哲学的浪漫派,一个夸耀自己的奴隶标识(辫子)的独裁者;就是这种自相矛盾,使辜鸿铭成了现代中国最有趣的人物之一。”

胡适在《每周评论》上对辜鸿铭的评价:现在的人看见辜鸿铭拖着辫子,谈着“尊王大义”,一定以为他是向来顽固的。却不知当初辜鸿铭是最先剪辫子的人;当他壮年时,衙门里拜万寿,他坐着不动。后来人家谈革命了,他才把辫子留起来。辛亥革命时,他的辫子还没有养全,他戴着假发结的辫子,坐着马车乱跑,很出风头。这种心理很可研究。当初他是“立异以为高”,如今竟是“久假而不归”了。

作者在《[[民国清流:那些远去的大师们]]》一书中这样总结的:

<<<
辜鸿铭在那个时代是一道文化风景,他活着是个传奇,他去天国后留下太多关于中国文人的神话。他是个充满矛盾又极为和谐的学者,他变态地猥亵女性,他又淋漓痛快地大骂政客,他到西方留学却一针见血地批判西方文明的种种弊端。而最可贵的是他的骂是出于义理和公心。如果编一部《辜鸿铭之骂》或更能看清一位文人的风骨。

当今社会,已再无辜鸿铭。不少学者也时髦地骂骂社会,骂骂人,但他们早已无辜鸿铭的独立人格,忧贫的多,忧道的少。

张中行说:


我想,如果说这位怪人还有些贡献,他的最大贡献就在于,在举世都奔向力和利的时候,他肯定站在旁边喊:危险!危险!


在文学江湖,辜鸿铭或可是个异类。他的存在让文学变得更斑斓,人在此山中,云深不知处。

<<<

2018年06月09日周六下午02:48:50

-- -- --

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "当那哲学家进客厅来时,我即迅速表示我对他容许我拜会他的谢意。他指给我一张椅子,帮我倒茶。“你想见我对我是一种奉承,”他回答,“你的国人只和苦力及买办交易,他们以为每一个中国人如果不是这一种,就一定是那一种。”我想冒险抗议,但我尚未了解他的真意。他把背倚在椅子上,用一种嘲弄的表情望着我。“他们以为若他们已经点头示意,我们就一定会去。”我知道他仍然对我朋友不合宜的通知感到不满。我不知道应怎样回答,喃喃地说了一些恭维话。
	——林语堂《信仰之旅》(From Pagan to Christian)第二章 大旅行的开始">>


<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$list filter="[field:book_title[男人的一半是女人]] -[title[Manage Books]]+[!sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<div class="tc-subtitle">最後更新於<$view field="modified" format="relativedate"/></div>

<$transclude mode="block" tiddler=booklogsinfo/>


世界上有许许多多法则。我一直认为除了自然科学法则,其它法则,如人文法则都经不起时间的考验,时间或环境任一唯独变化都可能引起人文法则失效。

之前我总结过一则人文法则:[[克拉克基本定律]] :
<$details summary="克拉克基本定律" 
state="$:/state/myDetailsStateTiddler_2##details-state">

 {{克拉克基本定律}}
</$details>


其中有一条是关于科技哲学的:

<<<
在任何一项足够先进的技术和魔法之间,我们无法作出区分。
<<<

今天看到一则''尼文法则''<<ref "①">>,其中一条是驳斥克拉克三定律的:

<<<
“任何足够高阶的魔法都是与科技密不可分的。”
<<<

克拉克三定律和尼文法则关于“科技与魔术”的结论都强调了科技的重要性,区别在于对于科技的认知。就表述来说,二者都正确,只是二者观点的适应时间跨度有长短:克拉克三定律适应跨度段,则尼文法则适应跨度长。这种差异是认知进化决定的。

尼文法则法则除“科技哲学”方面论述外,还有一些也蛮有意思,可推可敲。

<<<
# 永远不要向一个全副武装的人投掷粪便。 
#*永远不要向一面镜子发射激光。
#*永远不要站在一个向全副武装的人投掷粪便的人的旁边。
#*同样的观点罗伯特·海莱因也曾写过:“一个全副武装的社会是彬彬有礼的社会。只有当一个人需要用生命为他的行为负责的时候,举止才会礼貌有加。”—飞跃地平线 (1942)
#当你寻欢作乐时,母性就不会起作用。
#为了安全感而放弃自由是十分天真的。(提示:这个本应写作“F × S = k”,表明自由与安全感之积是恒定的,即自由与安全感呈反比。)
#即使真的有心灵力量与/或魔法力量,那也是基本无用的。
#毁灭永远比创造更简单。
#每一个该死的傻瓜都能准确地预言过去。
#历史从不重演。
#伦理随着技术而改变。
#无政府状态是最不稳定的政治结构。
#总会有时间与空间来把话说得圆滑。
#成为人类的方式总是有限制但又是无限多的。
#当你的生活像肥皂剧一样开始时,那就说明换台的时间到了。
#在科幻小说中唯一通用的准则就是:那些与你有着同样想法的意识体必然与你不是同一物种。 
#*尼文释义:跟你聊天的那只经过了基因改造的火鸡必然不是一只普通的火鸡。
#永远不要浪费卡路里。
#找一个傻瓜当跟班不需要任何无比正确的理由。
#没有任何一项技术可以在不被启用的情况下自动工作。
#不被采用的建议无须负责。
#三思而后做出懦夫的选择。娘娘腔永远也等不到老(就死掉了)。
#永远别让服务生逃走。
#假如已知理论允许时间旅行存在并且允许改变历史,那么在这个宇宙中不会发明时间机器。 <<ref "②">>
#如果一位作家是为另一位作家创作,那么请写信。
#千万不要为了你的选题而感到紧张或者羞愧。(特别适用于当你把你的选题寄给编辑之前。)
#全部故事的大结局有一个给定的主题,千万别。
#浪费读者的时间是一种犯罪。
#如果你没什么可说的,那就随便选一种方式把它说出来。错句病句,乱编的故事或者压根就没有故事,指代不明,内部逻辑前后矛盾,或者其他让你的读者想要把你生吞活剥的毛病:没什么大不了。如果你不得不说一些重要而且/或者难以理解的事情,尽可能地用最简单的语言表达。如果读者还是看不明白,那就让它看起来不是你的毛病。
#每个人都会谈论第一稿。
<<<

拉瑞·尼文真是法则高产者。我甚至怀疑世界上有一小撮人,他们一生都津津乐道于总结或企图发现一些规律,然后用最正确的废话写就出来。如果此人有所名望和地位,则可能被称之为真理或者法则等;如果是小弁或无名之辈,则可能被称为沽名钓誉。这就像时不时这个世界上总会冒出一些人,号称发明了永动机。世界不缺少妄人。

//2019年07月04日周四下午05:40:29//

-- -- --

@@color:gray;<i class="fa fa fa-info-circle fa-3x fa-pull-left "></i>@@ <<footnotes "①" "尼文法则是根据科幻小说作者拉瑞·尼文而命名的,他周期性地将这些法则尽可能地以“宇宙是如何运行的”为题进行发表。在2002年1月29日,其中绝大多数被重新修改(并且发表在Analog Science Fiction and Fact2002年11月刊上)。">>

@@ <<footnotes "②" "这是一个令人毛骨悚然的可能性。假如向过去传送信息十分容易,而且因果关系仍旧存在(也就是过去的事实决定未来)。一种可能的解释是,一条向过去发送的信息会因为它被接收到而“改变”全部历史,包括“发送这条信息”这一在未来所发生的事件,以及这一信息本身。因为“改变”存在,这条信息会将过去的历史完全改写,直到历史本身达成一种“平衡态”——最简单的状况就是没有任何信息从未来发送到过去。时间旅行会导致时间旅行这一事件本身被历史清除。。">>



<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
@@color:gray;
@@float:left;
@@font-size:500%;
&#13297;&#13160;
@@ 

<<<@@background-color:yellow;
你觉得自己很了解自己,但其实你错了。@@
<<<

这是人类的通病。除了后天性自负造成对自己的误判外,通常都是大脑思维的系统性错误,即系统1造成的。

当我们看到一个字、一件事或物,系统1首先搜索记忆库中的相关储存,然后进行输出。而调用记忆过程中,如果算是算法的话,有一种搜索算法就是“联想”,联想是人类思维的一种神奇力量。

联想思维活动通常是系统1的特性,大多数联想是无意识的,只有少数的联想活动是有意识的组织,而且联想活动是连贯性的。

当你看到“草原“一词,会联想到“绿色”二字。这种思维活动被称之为''启动效应'',启发联想的效应。联想不仅是思想活动连贯性,有时候也会把这种联想结果直接体验在身体的行动上,例如微笑、身体动作等。

在一项实验中,心理学家约翰·巴奇(John Bargh)和他的同事们让纽约大学的数位学生从一个包含5个单词的词组中(例如“发现、他、它、黄色的、马上”)挑出4个单词来重组句子。其中一个小组的学生重组的句子中有一半都含有与老年人相关的词汇,例如佛罗里达州、健忘的、秃顶的、灰白的或者满脸皱纹的。当他们完成这项任务时,又被叫到大厅另一头的办公室里去参加另一个实验。从大厅的一头走到另一头是这次实验的关键所在。研究者悄悄地测量了他们所用的时间。正如巴奇预料的那样,那些以老年为主题造句子的年轻人比其他人走得要慢得多。这个实验后来成了经典案例。这种效应被称之为''佛罗里达效应''。

上面的案例是联想影响身体行为。反过来,一些常见的身体行为同样也会影响思维活动,例如这个案例:在一项实验中,受试者按照要求用新耳机听一些信息。他们被告知这项实验的目的是检测音频设备的质量,研究人员告诉他们要不断地摇晃脑袋,以检查设备是否有声音失真的问题,其中一半受试者要上下点头,而另一半则要左右摇头。他们听到的内容是电台的社论。那些点头(表示同意的动作)的受试者往往易于接受他们听到的信息,而那些摇头的受试者则易于否定那些信息。要强调的是,受试者并没有意识到上述问题,他们只是习惯性地将否定或接受的态度与其常用的身体语言联系起来而已。


<<<
由此可见,老话讲“不管你怎么想的,都得心平气和”,这真是条很好的建议,只有真正做到心平气和,你才可能有回报。
<<<

这些启动效应都来自系统1,这些现象发生时我们根本意识步到,这是有系统1运行特性决定的。而这些系统1的启动效应有组织、连贯性的出现,就会变成人的信念,是做出选择和展开行动的动力源泉。也就是说,系统1输出了我们对世界的大部分认知模式。人脑活动的自组织,自我修复、自我纠偏的特性决定了大部分快速直觉性判断是准确的,但是不可避免的会有一些系统性错误。

例如这些启动效应:

* 脑子里一直存在钱这一概念的人会滋生个人主义:不愿和他人在一起,不愿依赖他人,也不愿接受他人的请求。<<footnote [1] "心理学家凯瑟琳·沃斯(Kathleen Vohs)的研究结果">>

* 使人牢记“人终将一死”这一说法能让独裁的主张更得人心,因为在人们恐惧死亡的情况下,独裁的主张会让人心安。

* 想到背后中伤某位同事就会使人更想去买香皂、消毒剂或清洁剂,而不是去买电池、果汁或者糖果。当人们感觉自己的心灵受到了玷污,往往也会引发他们清洗自己身体的想法,这种冲动被称为“麦克白效应”。

*  在一个专制国家中,到处挂着领袖的肖像不仅能向你传达“老大哥在看着你”的感觉,还会使你逐渐丧失自主的思想和独立的行为能力。<<footnote [2] "语出乔治·奥威尔所著的《1984》(1984: Big Brother Is Watching You)。《1984》是奥威尔的传世之作,堪称世界文坛最著名的反乌托邦、反极权的政治讽喻小说。他在小说中创造的“老大哥”、“双重思想”、“新话”等词汇都已被收入权威的英语词典。“老大哥”其实是无处不在的权力的象征。——译者注">>

* “这些人都穿着刻板的制服,看到他们时我们的大脑中是不会有什么创造性想法的。”

*“我让自己微笑,这样做我也的确感觉好多了!”

''结论:''

* 主体性:我们身体里面住着一个完全陌生的人控制着我们(系统1),学者了解它和他交朋友,尽量避免错误的输出;
* 思维到行为-启发联想:尽量让系统2参与,避免系统性错误;
* 控制好启发点:保持好的周围环境,影响心情和思维;
* 行为影响思维:保持好的习惯,影响思维正确的输出;
* 心情影响思维:保持好心情避免错误决定。

//2018年01月18日周四下午04:10:34//
''念'',佛学称“一呼一吸是一念,一念之间有八万四千个烦恼”,念念清净才能够证到无量佛土皆严净,念静是通过定慧的法门。这回答了之前我的疑问:[[怎么达到定慧?|2018年01月09日 周二下午 05:32:52]] 那么什么是念?

念,是意识,是一个思维流。修佛要求“[[缘起性空,性空缘起]]” ,性空即念住或无念,念住不是念头断灭,而是不起思惟分别,念念常住清净自在,永远在定中。

''定'',是一种状态。常驻清静的状态。

这就是念和定的因果和果因关系。定,非空(什么都没有,都不想),而是一种专注。这是一种辩证,空即是满,满即是空。当专注了,思想被一种思想占有了,即满。这也是佛家所说的断念,念住,不起思维分别的意思。

那么什么是总持那?

''总持'',佛学中被认为是一种法门 <<ref [1]>>。总是“所有”的意思,持是“保有”。总持第一个是闻总持,听闻、见闻过了就不忘(是不是也是锻炼好记性的一个“法门”那?)。第二个总持是知总持,所知道的没有忘失。第三个是遇有任何疑难,自己会参透解决。这样定力坚固、慧力坚固,才可以得总持法门,才算总持。 

//
Created:<$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss"/>//

---

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "即达到目的的一种方法,密宗所讲的陀罗尼。陀罗尼意译为“真言”、“总持”、“持明”、“咒语”、“密语”。 ">>

<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
''帕雷托法则''(英语:Pareto principle,也被称为 80/20 法则、关键少数法则、八二法则),是由意大利经济学家帕雷托发现的,他指出:约仅有20%的变因操纵着80%的局面。也就是说:所有变量中,最重要的仅有20%,虽然剩余的80%占了多数,控制的范围却远低于“关键的少数”。

''帕雷托分布'',在数学上,80/20规则大体上跟随着一组特定参数的幂定律分布(也称帕雷托分布),许多自然现象也呈现如此分布。

''帕雷托最优''(英语:Pareto optimality),或帕雷托最适,也称为帕雷托效率(英语:Pareto efficiency),帕雷托最优是指资源分配的一种理想状态。给定固有的一群人和可分配的资源,如果从一种分配状态到另一种状态的变化中,在没有使任何人境况变坏的前提下,使得至少一个人变得更好,这就是帕雷托改善。帕雷托最优的状态就是不可能再有更多的帕雷托改善的状态;换句话说,不可能在不使任何其他人受损的情况下再改善某些人的境况。

<$transclude mode="block" tiddler=bookinfo/>
!! 批判性阅读的策略

!!! 在阅读的时候问你自己如下的问题:

#你正在阅读的东西的主题是什么?讨论了什么问题?
#就上面的问题,作者得到了什么结论?
# 让作者产生这些说法和想法的理由是什么?作者正在用事实、理论还是信念?
"""
事实可以被证实
理论可以被证明,而且不会被事实弄混淆
观点则可能基于也可能不是基于有力的推理
信念自然是没有被证明的

作者是中立的用词还是感情用词? 
批判性阅读的读者会跳出文字来看推理是否清晰
应明白你为什么接受或不接受作者的论据

"""

!! 批判性思考者的特点

"""
他们对自己是诚实的
他们拒绝做假
他们会克服混乱
他们会提出疑问
他们会根据证据做出判断
他们会寻找不同事物间的联系
他们在心智上是独力的
"""
//(Bloom’s Critical Thinking/Questioning Strategies )//
<$transclude mode="block" tiddler=bookinfo/>
普赖斯发展了他的通用变异选择方程式,以开放多层级的选择。该方程式对进化生物学家帮助巨大,比如帮助他们清晰地了解亲族与群体选择之间的关联度,从而解决了来源于不一致的数学公式所产生的无休止的争论。

普莱斯假设种群的大小是恒定的,但是分为若干个小的群体。如果某些群体比其他群体更加成功,那它们的发展会以其他群体作为代价。任何时候,都有两种进化过程同时发生:个体vs个体,群体vs群体。在每个群体内,自私的个体胜出,占据更大的份额。自私基因的基因频率因而增加了。但是,合作程度更高的群体也在增长,并以那些合作程度低的群体为代价。普莱斯用费舍尔的数学框架来分析这种情况,决定到底是自私的基因还是合作的基因会取得最终的胜利。答案取决于两件事:第一是合作的成本与收益的比值。如果只牺牲极少的个体利益就能获得巨大的群体收益,则该特征就握有更大的胜算。第二是合作基因的分布情况。如果合作在不同的群体中分布很均匀,那么没有一个群体能比其他群体获得更大的优势,群体选择也就没什么实际意义。相反,当合作的个体紧密联合在一起时,群体选择会发挥最强大的作用。普莱斯方程把所有的这些因素作为输入数据,然后告诉我们,在这种情况下,到底是合作还是自私会胜出。

大卫·斯隆·威尔逊(David Sloan Wilson)意识到了普莱斯的贡献的重要性,并用其来质疑“[[自私的基因]]”的范式。当普莱斯在进行他最重要的工作时,威尔逊还是一名学生。此后,威尔逊在其职业生涯中收集了大量例子,来证明自然界中的合作现象。他经常引用普莱斯的数学方程,将其作为一个逻辑合理、数学严谨的解释,用来阐明合作如何胜过自私。
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<<textSliderNoButton "''会计''" "
* [[基本会计等式 (又名 资产负债表等式,Balance Sheet Equation)|https://en.wikipedia.org/wiki/Accounting_equation]]
* [[一般公认会计原则 (GAAP)|http://www.accounting.com/resources/gaap/]]
*[[会计 (GAAP) 盈余|http://www.investopedia.com/terms/a/accountingearnings.asp]]
*[[经济利润 (Economic Earnings)|http://www.nasdaq.com/investing/glossary/e/economic-earnings]]
*[[净现金流 (Free Cash Flow)|http://www.valuewalk.com/wp-content/uploads/2015/11/042.Owner-Earnings-vs-Free-Cash-Flow.pdf]]
*[[贬值 (Depreciation)|http://www.accountingcoach.com/blog/what-is-depreciation]]
*[[维修资本支出 (Maintenance Capital Expenditures)|http://csinvesting.org/wp-content/uploads/2012/12/A-Thorough-Discussion-of-MCX_Case-Study-and-Capital-Theory.pdf]]
*[[成长资本支出 (Growth Capital Expenditures)|http://www.valuewalk.com/wp-content/uploads/2015/11/042.Owner-Earnings-vs-Free-Cash-Flow.pdf]]
*[[沉没成本 (Sunk Cost)|http://www.businessdictionary.com/definition/sunk-cost.html]]
" >>

<<textSliderNoButton "''生物学''" "*自然选择
*差异化生存 (Survival by Differentiation)(参“差异化优势”)
*遗传学 (Genetics)
*生理学(Physiology)
*遗传学 (Genetics)
*[[普赖斯方程式]]">>

<<textSliderNoButton "''商业''" "*格雷欣法则 (Gresham’s Law, 劣币逐良币)
*内在价值 (Intrinsic Value)
*经营杠杆 (Operating Leverage)
*机会成本 (Opportunity Cost)
*五力分析 (Five Forces)
*品牌 (Brand)" >>

<<textSliderNoButton "''化学''" "*自催化反应 (Autocatalytic reactions)
*玻尔模型 (Bohr Model)
*反应动力学 (Kinetics)
*热力学 (Thermodynamics)
*测不准原理 (Uncertainty Principle)
*黏度 (Viscosity)" >>


<<textSliderNoButton "''工程学''" "*抽象化 (Abstraction)
*算法 (Algorithms)
*条件语句 (If-statements)
*递归 (Recursion)
*[[安全边际 (Margin of Safety) |https://hurricanecapital.wordpress.com/2014/05/12/mental-model-margin-of-safety/]]/ 备用系统 (Backup System)
*断点 (Breakpoints)">>

<<textSliderNoButton "''法律系统''" "*举证责任 (Burden of Proof)
*判例法 (Common law)
*正当程序 (Due Process)
*谨慎责任 (Duty of care)
*诚信 (Good Faith)
*过失 (Negligence)
*无罪推定 (Presumption of Innocence)
*合理怀疑 (Reasonable doubt)">>

<<textSliderNoButton "''其它''" "
*排列组合理论(Permutation And Combination)(四象限时间法、可行性方案的穷举等)
* [[投资组合理论]](Portfolio Theory)
* [[反意识形态]]
*“避免不一致性倾向”
* [[巴普洛夫效应]] (“花剌子模信使”弱点)
* [[冰山理论]]
* 对非理性的自我认识理论
* [[塔西陀陷阱]]
* [[梅特卡夫定律]]
">>

返回[[思维模型|Thinking Models]]
<$transclude mode="block" tiddler=bookinfo/>
<<<
钱锺书先生读书多且快人所共知,饶宗颐先生说钱先生可能是跳读,对此说我一直存疑,今见《钱锺书手稿集•外文笔记》的责编田媛说她在整理书目发现钱先生的阅读习惯是一般从头到尾通读下来,可释疑矣。
<<<


<$details summary="《钱锺书手稿集•外文笔记》" class="notification">
[img[https://i.loli.net/2018/05/06/5aef1357b1505.jpg]]
</$details>

那么钱钟书读书法详细情况是怎么样的?

//2018年05月12日 14:50//

钱钟书遗孀杨绛先生所作《钱钟书手稿集》序中可大致看出钱钟书先生的读书法。

''释疑:钱钟书并非记忆力强''

<<<
许多人说,钱锺书记忆力特强,过目不忘。他本人却并不以为自己有那么“神”。他只是好读书,肯下功夫,不仅读,还做笔记;不仅读一遍两遍,还会读三遍四遍,笔记上不断地添补。所以他读的书虽然很多,也不易遗忘。
<<<


''前因:书非借不能读也''


<<<
钟书读书做笔记成了习惯。但养成这习惯,也因为我们多年来没个安顿的居处,没地方藏书。他爱买书,新书的来源也很多,不过多数的书是从各图书馆借的。他读完并做完笔记,就把借来的书还掉,自己的书往往随手送人了。钟书深谙“书非借不能读也”的道理,有书就赶紧读,读完总做笔记。无数的书在我家流进流出,存留的只是笔记,所以我家没有大量藏书。
<<<

''方法:露钞雪纂、聊补三箧之无,铁画银钩,虚说千毫之秃''

<<<
他做笔记的习惯是在牛津大学图书馆(Bodleian——他译为饱蠹楼)读书时养成的。因为饱蠹楼的图书向例不外借。到那里去读书,只准携带笔记本和铅笔,书上不准留下任何痕迹,只能边读边记。钟书的“饱蠹楼书记”第一册上写着如下几句:“廿五年(一九三六年)二月起,与绛约间日赴大学图书馆读书,各携笔札,''露钞雪纂、聊补三箧之无,铁画银钩,虚说千毫之秃'',是为引。”第二册有题辞如下:“''心如椰子纳群书,金匮青箱总不如,提要勾玄留指爪,忘筌他日并无鱼''。(默存题,季康以狼鸡杂毫笔书于灯下)”这都是用毛笔写的,显然不是在饱蠹楼边读边记,而是经过反刍,然后写成的笔记。

做笔记很费时间。钟书做一遍笔记的时间,约莫是读这本书的一倍。他说,一本书,第二遍再读,总会发现读第一遍时会有很多疏忽。最精彩的句子,要读几遍之后才发现。
<<<


''后果:大量知识遗产''


<<<
钟书去世后,我找出大量笔记,经反复整理,分出三类。

第一类是外文笔记(外文包括英、法、德、意、西班牙、拉丁文)。除了极小部分是钟书用两个指头在打字机上打的,其余全是手抄。笔记上还记有书目和重要的版本以及原文的页数。他读书也不忽略学术刊物。凡是著名作家有关文学、哲学、政治的重要论文,他读后都做笔记,并记下刊物出版的年、月、日。钟书自从摆脱了读学位的羁束,就肆意读书。英国文学,在他已有些基础。他又循序攻读法国文学,从十五世纪到十九世纪而二十世纪;也同样攻读德国文学、意大利文学的历代重要作品,一部一部细读,并勤勤谨谨地做笔记。这样,他又为自己打下了法、德、意大利的文学基础。以后,他就随遇而读。他的笔记,常前后互相引证参考,所以这些笔记本很难编排。而且我又不懂德文、意大利文和拉丁文。恰逢翻译《围城》的德国汉学家莫宜佳博士(ProfessorDr.MonikaMotsch)来北京。我就请她帮我编排。她看到目录和片断内容,“馋”得下一年暑假借机会又到北京来,帮我编排了全部外文笔记。笔记本共一百七十八册,还有打字稿若干页,全部外文笔记共三万四千多页。


第二是中文笔记。他开始把中文的读书笔记和日记混在一起。一九五二年知识分子第一次受“思想改造”时,他风闻学生可检查“老先生”的日记。日记属私人私事,不宜和学术性的笔记混在一起。他用小剪子把日记部分剪掉毁了。这部分笔记支离破碎,而且都散乱了,整理很费功夫。他这些笔记,都附带自己的议论,亦常常前后参考、互相引证。以后的笔记他都亲自记下书目,也偶有少许批语。中文笔记和外文笔记的数量,大致不相上下。

第三类是“日札”———钟书的读书心得。日札想是“思想改造”运动之后开始的。最初的本子上还有涂抹和剪残处。以后他就为日札题上各种名称,如“容安馆日札”、“容安室日札”、“容安斋日札”;署名也多种多样,如“容安馆主”、“容安斋居士”、“槐聚居士”等等;还郑重其事,盖上各式图章。我先还分门别类,后来才明白,这些“馆”、“斋”、“室”等,只是一九五三年“院系调整”后,我家居住的中关园小平房(引用陶渊明《归去来辞》“审容膝之易安”)。以后屡次迁居,在钟书都是“容膝易安”的住所,所以日札的名称一直没改。

日札共二十三册、二千多页,分八百零二则。每一则只有数目,没有篇目。日札基本上是用中文写的,杂有大量外文,有时连着几则都是外文。不论古今中外,从博雅精深的历代经典名著,到通俗的小说院本,以至村谣俚语,他都互相参考引证,融会贯通,而心有所得,但这点“心得”还待写成文章,才能成为他的著作。《管锥编》里,在在都是日札里的心得,经发挥充实而写成的文章。例如:《管锥编.楚辞洪兴祖补注》十八则,共九十五页,而日札里读《楚辞》的笔记一则,只疏疏朗朗记了十六页;《管锥编.周易正义》二十七则,共一百零九页,而日札里读《周易》的笔记,只有一则,不足十二页;《管锥编.毛诗正义》六十则,共一百九十四页,而日札里读《毛诗》的笔记二则,不足十七页。

<<<

2018年06月09日周六下午01:45:57 补
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$list filter="[field:location[清代]]+[!sort[created]]">

<$view field="book_title"/> <$view field="author"/> @@color:gray;- <$view field="description"/> - <$view field="relation"/>@@ <$link><$view field="title"/></$link>    
<$list filter="[<currentTiddler>days[-10]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>

<$details summary="点此预览"> 

<$transclude/>

</$details>
  </$list>


<$transclude mode="block" tiddler=bookinfo/>
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[清官册]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
由于系统缓存,每次添加书籍的日期都是重复上一次的时间,为了解决此问题,需要清理一下添加书籍的数据缓存。
位置:$:/temp/newbook
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

经典的囚徒困境如下:

警方逮捕甲、乙两名嫌疑犯,但没有足够证据指控二人有罪。于是警方分开囚禁嫌疑犯,分别和二人见面,并向双方提供以下相同的选择:

* 若一人认罪并作证检控对方(“背叛”对方),而对方保持沉默,此人将即时获释,沉默者将判监10年。
* 若二人都保持沉默(“合作”),则二人同样判监半年。
* 若二人都互相检举(互相“背叛”),则二人同样判监5年。

作为当事人合作或者背叛?怎么做出最优化选择?这就是囚徒困境。

''囚徒困境''(Prisoner's Dilemma)是博弈论的非零和博弈中具代表性的例子,反映个人最佳选择并非团体最佳选择。或者说在一个群体中,个人做出理性选择却往往导致集体的非理性。(维基百科)

作为个体利益最大化的理性推理应该是这样子:

* 若对方沉默、我背叛会让我获释,所以会选择背叛。
* 若对方背叛指控我,我也要指控对方才能得到较低的刑期,所以也是会选择背叛。
理性的选择应该是:背叛。

单次博弈(重复博弈)和多次博弈最优选择策略是不一样的。多次博弈情况下,往往多次合作利益之和大于共同背叛和单方面背叛之和,这就是道格拉斯·霍夫施塔特理论(中文名:侯世达)。

因此,这场博弈中唯一可能达到的[[纳什均衡]],就是双方参与者都背叛对方,结果二人同样服刑5年。这场博弈的纳什均衡,显然不是顾及团体利益的[[帕累托|帕雷托法则]]最优解决方案。以全体利益而言,如果两个参与者都合作保持沉默,两人都只会被判刑半年,总体利益更高。

囚徒困境说明了:非零和博弈中,[[帕累托最优|帕雷托法则]]和纳什均衡是互相冲突的。

中美贸易战即囚徒困境在经济学中的现实例子。中美互惠即合作(达成贸易协定),单方面提高关税则背叛。

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
前乔治亚理工大学研究技术史教授Melvin Kranzberg(已故)曾经在30年前提出过6条技术定理,虽然这些定律基于并验证与冷战时期发生的一系列技术变革和革新,但同样适用于今日之日新月异的技术突飞猛进的技术时代。

对此6条定律,我称之为科技哲学:

<<<
"""1. 技术不好也不坏;也不是中性的。
2. 发明是需求之母。
3. 技术都是成套出现,或大或小。
4. 虽然技术可能是引发诸多公共问题的主因,但非技术因素在技术政策决定中占据主导。
5. 历史相关性普遍存在,但技术的历史相关性最强。
6. 技术是深受人为因素影响的一种活动。"""
<<<

而对今日炙手可热的区块链概念或者技术,如果用科技哲学的视角观察,也许是最好不过的“冷眼旁观”。

//Modified:2018年01月15日周一下午11:13:55//

区块链脱胎于中本聪发明的比特币,这个神秘的中本聪<<footnote [1] "没有人知道他是谁。">>发出的第一块区块被称为“创世纪区块”,有人用圣经里的这句话形容,“神说要有光,于是便有了光”。“光”,是相对于黑暗环境的。我不知道中本聪发明的本意是什么?但现实世界如果有人出来冒充说自己就是中本聪本人时<<footnote [2] "一位澳大利亚富豪曾经向世界声明说自己就是手里拥有几十万比特币身价几十亿的中本聪。">>,中本聪本人就会跳出来指证,“非也,人人都是中本聪!”<<footnote [3] "区块链的加密密匙是唯一的身份认证,创世纪区块链的密匙也只有中本聪本人拥有,所以一切李鬼都会现形。">>。中本聪所说的“人人都是中本聪”,就是区块链的核心特性之一:去中心化。这个星球中心化组织形式实在太长了,除了原始社会组织结构形态,漫长的历史无不处在中心化的组织框架统治之内。中心化,也就是集权化,被代表化;去中心化,我不知道这是不是民主的一种形式,按照现代文明的定义,区块化的这种形态应该不算是一种民主。 <<footnote [4] "民主,其本义是“人民的统治”,即“主权在民”,是一种现代的国家制度,国家权力由公民直接或间接行使。民主有时被称为“多数的统治”,与极权统治或独裁统治或寡头政治相对立。拉里·戴蒙德(Larry Diamond)指出,民主包括四个关键要素:(1)通过自由和公正的选举产生政府; (2)作为公民积极参与政治和公民生活; (3)保护所有公民的人权;(4)法律和程序同样适用于所有公民。">> 那么它应该是一种什么形态那?自组织?自组织结构形态目前只存在于小型化组织或实验化行为和柏拉图的《[[理想国]]》之中,当代人类文明事实上是无法承载“白蚁型”共识主动性自组织结构形态的。<<ref "[5]">> 所以,区块链在中国民间的大火大热,而政府的冷处理态度,这其实不是一个技术问题,是一个政治问题,是一场民主博弈,“究竟是少数代表多数(目前的法币政策)还是多数即正义(全球分布式共识网络,也即区块链)”的博弈。这正如开头引用Melvin Kranzberg教授的科技定律之一,''“虽然技术可能是引发诸多公共问题的主因,但非技术因素在技术政策决定中占据主导。”''

//
Modified:<$view field="modified" format="date" template="YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss"/>//

-- --

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[5]" "共识主动性是生物界的自组织或人类的直接民主。共识主动性发现于昆虫社区里的社会行为。例如,每个社区的蚂蚁是用特有分泌物的气味来进行交流的,一个蚂蚁如果发现了食物,它就会在回家的路上留下一路的气味,其他的蚂蚁就会沿着这条路线去找食物,并不断地加强气味。如果这里的食物被采集完了,没有蚂蚁再来,气味就会逐渐消散。这种气味让蚂蚁非常有效的达成共识,而且能产生超个体结构 - 教堂白蚁建造的蚁巢。还有,在大雨或影响蚂蚁社区生存环境突变的前夕,社区的蚂蚁们都要集中在一起,也就是“蚂蚁行雨”现象,进行同频共振,信息交流,然后分别行动,来改善生活环境,应对突发事件。">>

!!! 加尔布雷斯:《权力的剖析》

其第一章《概述》中指出权力来源有三:一是人格,二是财产,三是组织(9页)。

其中现代社会的“权力”更多来自“组织”——“现代的报刊、电台、电视的权力同宗教一样,也来自组织,这种权力的主要手段也同宗教一样是信仰——社会调控。

!!! 利奥塔:《后现代的状态——关于知识的报告》

<<<
所谓“合法性”,在某种意义上说,只是公众经过讨论而达成的“共识”,但“共识”并不等于“真理”,因此“合法性”本身也是可以质疑的。
<<<

利奥塔在书中提到一个词很有意味:知识合法化。一个极权主义国家中传播的知识很多都是被过滤的知识,被污染的知识。那么知识合法化的标准是什么?怎么界定?


在第十二章中,利奥塔还讨论了教育,一般来说,教育是知识的传递,但科学化曾经阻隔了这种传递中的增长,他说

<<<“如果教学不仅应该保证能力的复制,而且应当保证能力的进步,那么,知识传递就不应该限于传递信息,而应该包括学习所有的程序。这些程序可以改善那种连接不同领域的能力。知识的传统结构小心翼翼地把这些领域相互区隔开了”(109页)。
<<<
这段话值得好好想想。

2019年02月25日周一下午10:47:16
斯蒂芬·茨威格 <<footnote "①" "参见:[[昨日的世界]]">>  的历史特写《[[人类的群星闪耀时]]》和《[[昨日的世界]]》还没有看完,我已贪婪地迫不及待地翻开了他的中短篇合集 ---《[[茨威格文集]]》。

茨威格的作品有一种魔性,特别是他的中短篇小说,每打开一篇就像掀开一位美丽女人裙子的一角,充满诱惑而不忍罢手。

<<<
茨威格发展了一种特别的写作方法,把谨慎的心理分析、引人入胜的叙述方式和极好的修辞风格融为一体。
<<<

我之前一直欣赏[[素心素地素文章|素心素地素文方是大文章]],而茨威格的风格与之截然相反。他的作品就像中世界哥特式建筑 <<footnote "②" “哥德式建筑,Gothic-architecture),是一种兴盛于欧洲中世纪高峰与末期的建筑风格。它是由罗马式建筑发展而来,为文艺复兴建筑所继承。哥德式建筑的整体风格为高耸削瘦,以卓越的建筑技艺表现了神秘、哀婉、崇高的强烈情感,对后世其他艺术均有重大影响。">>  --- 繁华、委婉和富裕的幻想,一个个精工细节蜿蜒跌宕。如果用音乐来形容的话,茨威格的作品就像一部交响曲,但绝不是土耳其进行曲那样的滂沱气势,茨威格的作品细腻有余;也不是一首圆舞曲,茨威格的作品里可以看到富有知识分子对底层人民的怜悯和人性的悲伤。所以,看茨威格的作品是有一定危险性的,他会让营造一个个让人眩晕的场景,让您流连忘返,并且您会怀疑自己的文学阅读和写作能力为什么会如此的卑劣,从而对茨威格心存嫉妒。甚至,冷静下来时候,您会认为这小子是在赤裸裸的炫技,让人鄙视和佩服他的耍聪明。这也是其作品一直颇受争议的主要原因。

评论家对于茨威格作品的意见有着极大的分歧,一些英语批评者对他的贫乏、疲弱和表面的文学内容感到失望,而另外一些评论家却赞赏他作品内的欧洲传统:歌颂人道、纯朴、和有力的风格。

不管有多大的争议,不过丝毫不会撼动其上世纪欧洲文坛三大中短篇小说家之一的地位(上世纪三位作家被公认为出类拔萃的中短篇小说家,他们是俄国的契诃夫、法国的莫里亚克和奥地利的茨威格)。

下面是几个段落摘抄:


<<<
他向她倾诉着炙热灼人的话语,用火烧火燎的色彩吐露出青春爱情的渴望,那是只有在最热烈的欲念支配下的瞬间才能说出的最炽烈的话语。在他的言词中,隐匿着一个年轻生命对幸福与享乐的无限向往,对爱情的最迷人的目标的全部狂热的追求。他滔滔不绝地诉说着,语流越来越奔放,欲望越来越强烈。他的话语犹如贪婪的火焰腾空而起,男人的天性在他身上升到了最高点。他像乞丐一样苦苦恳求着她的爱情……  

他的爱情往往只停留于暗自思慕,表现为小心翼翼地远处观赏,沉醉于诗句和梦境之中。

一顶圆顶宽边毡帽斜遮住他脸上柔和而规则的线条,赋予那颗普普通通、几乎可说极为平常的头颅一些诗人的风采和理想的成分。

悲伤几乎给她一种快感,她无意中发现,在悲哀中自我折磨有它独特的魅力。

//---《普拉特尔的春天》//
<<<


2018年05月04日周五上午01:04:29 
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[人类的群星闪耀时]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<div style="float:right;"><$button>
<$action-sendmessage $message="tm-new-tiddler" title=<<now format:"DDth MMM YYYY">> tags="Task" text=""/>
<span style="color:blue;">''New Task''</span>
</$button></div>

! Due 

<$list filter="[has[due]!tag[Done]sort[due]sort[created]]">

<$checkbox tag="Done">
<$link to={{!!title}}><$view field="title"/> </$link> |  <$view field="due"/> | @@color:gray;  //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
</$checkbox>
</$list>

! Outstanding tasks

<$list filter="[!has[draft.of]!has[due]tag[Task]!tag[Done]sort[created]]">

<$checkbox tag="Done"> <$link to={{!!title}}><$view field="title"/></$link> @@color:gray;  //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@</$checkbox>

</$list>



<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

''毒物兴奋效应''是病毒理学用来描述毒性因子(刺激)双剂量效应的一个术语,与鲁棒性(Robustness)不同。通俗的说,是指有害物质或紧张性刺激在适当剂量或强度下刺激着生物体,并使生物体更好、更强、更健硕,还要为下一次承受更大的剂量做好准备。这就是我们去健身房、进行间歇性禁食或减少热量摄入(或者说减肥),或是对愈发严峻的挑战过度补偿的原因。就拿我自己来说,我吃药过度补充的坏习惯,致使如果如若遵照医嘱是没有效果的,必须匹配我身体形成的冗余度。我们的身体,就是这么个天然风控系统,遵循着某种层层冗余的特定逻辑,比如人有两个肾,以及在诸多事物上都给予了额外的能力,比如肺、神经系统、动脉器官等。

大自然是绝对的风险管理大师,冗余是积极的而非消极的。如果人类打的是上一场战争,而大自然打的便是下一场战争。如若这些由人类来设计的话,就会倾向于节约与过度优化,并有着与冗余截然相反的属性:杠杆作用。人类设计出多种多样的制度性风险管理方法。目前的做法是依照过去最坏的情况,我们称其为“压力测试”,并相应地做出调整,却从未想过这样的偏差可能并不足以应对未来发生的真实状况。一战之后,谁也没想到没几年又发生了第二次世界大战。今年的肺炎疫情是否在冬天再次爆发?我们的系统和储备是否尊重冗余逻辑设计以应对未来未知的不测?

除了上面生物方面的例子,信息时代也是肇始于“冗余理论”,这要归功于[[克劳德·香农|香农传]](Claude Shannon),信息论创造者。正是他提出“冗余度”(redundancy)的概念,是一种信息的倒置,如在英语里,紧随“q”这个字母的往往是“u”,于是在不丢失信息的情况下,字母“u”完全可以被省略掉。“u”就可以被称为是冗余的。正如香农所表明的,这种模型也描述了信息和语言的行为,从信息论角度来看,我们的语言是可测的。用香农的话来说,信息的冗余特征使得破解密码成为可能。密码史学家戴维·卡恩曾经这样解释道:“大体上,冗余是指在信息传递的过程中,实际传递的信号会超出实际需要的信号。”信息解决了我们的不确定性,而冗余就是信息中不能给我们提供新信息的部分。无论何时只要我们能够猜测出下一步会发生什么,我们都会面临冗余。

在信息时代的基础上——一旦电线和微芯片被分离,一旦码流0和1被分开,我们就会发现香农的两个基本通信定理。它们合在一起说明了我们处理冗余的两种方式:删减冗余或者制造冗余。

理解了冗余,我们就可以有意识地操纵它。

''Λ-Reading:''[[#50 毒物兴奋效应和密码破解|https://rizime.substack.com/p/--dc4)]]

2020年09月30日周三下午04:07:27

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
《如何阅读一本书》中的读书方法总结。

作者认为读书有三个层次:

!第一层次:基础阅读

基础阅读基本要求就是识字就可以,差不多相当于我们小学4.5年级时候的状态。这也是阅的基础。

!第二层次:检视阅读

检视阅读,才算是真正进入阅读的层次。检视阅读是大部分读者所忽略的阅读阶段,或者方法。检视阅读也可以称为粗读、快读或者略读,顾名思义就是对一本书,囫囵吞枣式的进行快速扫描一遍,不要被书中的障碍所羁绊,从而对书总体上有一个大致了解,从而判断您是否对此书感兴趣,或者判断此书是否有简直。

!!检视阅读一:有系统的略读或粗读
#先看书名页,然后如果有序就先看序。
#研究目录页,对这本书的基本架构做概括性的理解。
#如果书中附有索引,也要检阅一下——大多数论说类的书籍都会有索引。
#如果那是本包着书衣的新书,不妨读一下出版者的介绍。
#从你对一本书的目录很概略,甚至有点模糊的印象当中,开始挑几个看来跟主题息息相关的篇章来看。如果这些篇章在开头或结尾有摘要说明(很多会有),就要仔细地阅读这些说明。
#最后一步,把书打开来,东翻翻西翻翻,念个一两段,有时候连续读几页,但不要太多。

!!检视阅读二:粗浅的阅读

头一次面对一本难读的书的时候,从头到尾先读完一遍,碰到不懂的地方不要停下来查询或思索。只注意你能理解的部分,不要为一些没法立即了解的东西而停顿。继续读下去,略过那些不懂的部分,很快你会读到你看得懂的地方。你从头到尾读了一遍之后的了解——就算只有50%或更少——能帮助你在后来重读第一次略过的部分时,增进理解。就算你不重读,对一本难度很高的书了解了一半,也比什么都不了解来得要好些——如果你让自己在一碰上困难的地方就停住,最后就可能对这本书真的一无所知了。

检视阅读是一种训练有素的快速阅读,是一种主动阅读。

!!主动的阅读基础:四个基本问题
#整体来说,这本书到底在谈些什么?你一定要想办法找出这本书的主题,作者如何依次发展这个主题,如何逐步从核心主题分解出从属的关键议题来。
#作者细部说了什么,怎么说的?你一定要想办法找出主要的想法、声明与论点。这些组合成作者想要传达的特殊讯息。
#这本书说得有道理吗?是全部有道理,还是部分有道理?
#这本书跟你有什么关系?如果这本书给了你一些资讯,你一定要问问这些资讯有什么意义。为什么这位作者会认为知道这件事很重要?你真的有必要去了解吗?如果这本书不只提供了资讯,还启发了你,就更有必要找出其他相关的、更深的含意或建议,以获得更多的启示。

!!如何让一本书真正属于你自己
那就是做读书笔记。作者没有告诉一些具体的方法,只给出了三种记笔记的方法:

# 结构笔记(structural note-making)
# 概念笔记(conceptual note-making)
# 辩证笔记(dialectical note making)

注:由于时代变迁和技术进步,作者的这三种读书笔记方法并不可取。个人认为,要想把一本书真正的属于自己,就是边读边记录,''用自己的语言以最简单的阐述总结书中所讲的知识点,包括疑问、联想、启发等''。就像本则读书笔记,看完后进行会议和总结。

!第三层次:分析阅读

分析阅读我自己定义为深度阅读,在检视阅读后,对书有了一个基本的了解,从而判断此书对自己是有价值的,或者是自己感兴趣的,从而带着目的进行深入阅读。

不过,我不赞同作者把读书笔记以及主动阅读的四个基本问题放在检视阅读阶段,而应该放在分析阅读阶段''。检视阅读应该用最少的时间最快的速度迅速了解全书,继而决定是否进入分析阅读阶段。分析阅读阶段才是有目的的阅读,带着问题,解决问题,找出书中的亮点并转化为自己的,这一阶段真正的核心是“先把书读厚再读薄”。''

<<imageSlider  [[https://cl.ly/pGC1/%E5%8E%9A%E8%96%84.jpg]]    "先把书读厚再读薄(点击展开)">>




!第四层次:主题阅读

一般做学术和科研研究为业者多为主题阅读,即就一个主题从多本或多系列书籍展开阅读,钩沉索隐,穷搜经典,发覆探幽。

PS. 梁文道之前的节目《开卷八分钟》曾经介绍过这本书,不过梁介绍的有点杂乱,见此:(Youtube,需科学上网)

<iframe width="560" height="315" src="https://www.youtube.com/embed/dPbkbSM25OA" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

<iframe width="560" height="315" src="https://www.youtube.com/embed/z4GhU0GEKNg" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

!本书下载地址:
[[《如何阅读一本书》|https://www.asuswebstorage.com/navigate/s/C45AB94451FE4E86A7D205F4D8F9F3024]] (mobi格式)

<$button message="tm-close-tiddler">Close Me!</$button> 
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
独乐乐不如众乐乐!

以下书籍纯粹出于阅读方便为之,不涉及版权和商业利益。也欢迎大家自行下载、阅读和传播。由于制作者时间和专业设计水平有限,排版难免粗鄙,敬请包涵!也欢迎朋友们加入!

''三家村精品公开版权书籍声明:''

@@background-color:yellow;
<<<
书籍的分享内容限定为公共版权领域的书籍(参照标准伯尔尼公约),三家村工程 <<footnote "注" "希望能坚持下去,成为一项公益事业">> 确保这些书籍以开放文件格式自由流通,有利于长期保存,并可在各种电子设备上自由阅读,而且不会在已发布书籍资源上声明新的版权,不会在资源文件中添加水印和文件加密以及商业诉求,并鼓励大家在原基础上自由再加工、再创造、再发布。
<<<
@@


''制作者:''三家村  [[打赏]]

---
<div class="tc-subtitle">最後更新於<$view field="modified" format="relativedate"/></div>

{{三家村公开版权精品书目}}

''下载地址:''

[[下载地址三|https://drive.google.com/drive/folders/1rrPjIq_eP9nj5n-dbua726LlWtXudFj6?usp=sharing]]  ^^''~GoogleDrive''^^ | [[下载地址四|https://www.asuswebstorage.com/navigate/s/72531B6AD34444619B1460CE7CB2DBBC4]]  ^^''[[ASUS|https://service.asuswebstorage.com/referrals/73rjx+e8ZYaEjzIAwKb3Se0EJfJOL4LgACQbmKuqDM8MycQRqeIBwyrxQywH3Id3]]''^^  | [[下载地址五|https://mega.nz/folder/SJhBkI4L#bHjUOOO9ZKcd2ob3Tdm06A]] ^^''[[MEGA|https://mega.nz/aff=Zofxi-lZEuE]]''^^

''分享您的书籍:''
[[上传您的书籍|https://rizibox.herokuapp.com/E5/Upload/]]  ^^''基于~Onedrive''^^ 或联系我
 ^^''[[Email|Jerry]]''^^

''制作工具:''[[Sigil|https://github.com/Sigil-Ebook/Sigil]] |  [[Calibre|https://calibre-ebook.com/]]
|| ! 书名 | !作者 | | !书名 | !作者  |
|!清代|《雪涛谐史》 |江盈科 | |《觚剩》|钮琇 |
|~|《影梅庵忆语》|冒襄 |  |《香畹楼忆语》 |陈裴之 |
|~|《乾隆游江南》|佚名 |  |《痴婆子传》 |不正居士 |
|~|《古文辞类纂》|姚鼐 |  |《耳食录》 |乐钧 |
|~|《板桥杂记》|余怀 |  |《夜雨秋灯录》 |宣鼎 |
|~|《闲情偶寄》|李渔 |  |《 宋人轶事汇编》 |丁传靖 |
|!明代|《夜航船》|张岱 |  |《智囊全集》 |冯梦龙 |
|~|《西湖寻梦》|~|  |《立斋闲录》 |宋端仪 |
|!元代|  |  |  | | |
|!宋代|《容斋续笔》|洪迈 |  |《容斋四笔》|洪迈|
|~|《容斋三笔》|~|  |《容斋五笔》 |~|
|~|《东坡志林》 |苏轼 |  |《容斋随笔》 |~|
|~|《仇池笔记》|~|  |《困学记闻》|王应麟 |
|~|《老学庵笔记》 |陆游 |  |《北梦琐言》|孙光宪  |
|~|《高僧传》 |天寿寺 |  |《五灯会元》|释普济 |
|~|《对床夜语》 |范晞文 |  || |
|!五代|《唐摭言》 |王定保 |  | | |
|!唐代|《酉阳杂俎》 |段成式 |  |《艺文类聚》|欧阳询  |
|!南北朝|《洛阳伽蓝记》 |杨炫之 |  ||  |


<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
增加了[[Code Stylesheet]]样式,从此代码引用快变成嘿嘿的了。


```
嘿嘿
```
2018年01月13日 周六下午 04:48:02
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
我在[[Laws of reading]]里已经整理过不少读书方法。今天在《会读才会写》看到另外一种形式的阅读技巧 --- 密码读书法(或文献阅读法),也算是一种读书笔记的写作方式 --- 社科八股式,记录之。

彭玉生在《“洋八股”与社会科学规范》将其划分为:问题、文献、假设、测量、数据、方法、分析、结论。

<<imageSlider  [[https://i.loli.net/2018/08/09/5b6c0dc204b27.jpg]]    "“洋八股”与社会科学规范">>

''什么是阅读密码?''阅读密码,其实就是将一些常用的标注简化为缩写的字母。您也可以把“密码”理解为「标签」(Tag)。

文献阅读,书中其实总结了两大类标签,首先是基于文献内容的标签,包括了:


<<<
WTD:What They Do,他们要做什么
SPL:Summary of Previous Literature现有文献综述
CPL:Critique of Previous Literature,现有文献批评
GAP:Gap,空白
RAT:Rationale,理论依据
ROF:Results of Findings,研究结果
RCL:Results Consistent with Literature,与现有文献观点一致的研究发现
RTC:Results to The Contrary,与现有文献观点相反的研究发现
WTDD:What They Did,他们做了什么
RFW:Recommendations for Future Works,对未来研究的建议
其次是读者需要评注的部分的标签:POC (批评点 :Point of Critique)、MOP(明显的遗漏点:Missed Obvious Point)、RPP(待探讨的相关问题 :Relevant Point to Pursue) 、WIL (能否:Will)。书中将这些标签称为阅读策略。
<<<

<<imageSlider  [[https://i.loli.net/2018/08/09/5b6c0f604db23.png]]    "飞利普博士针对社会期刊文献的阅读密码表">>

标注标签的目的对于社会科学的文献研究来说,主要还是为了厘清文章的脉络,理解作者的逻辑,并为后续处理做准备。所以如何打标签,应当着重以目的为导向。书中有表格给出,用以识别文本的功能,表格如下:

<<imageSlider  [[https://i.loli.net/2018/08/09/5b6c101072e91.jpg]]    "标签的功能分类">>

有了这些标签的在书中的分布性标注,一本书的属性都基本上掌握了。这些标签就像经纬度上的一个个坐标,按图索骥就会找到桃花源,多点鸟瞰一览众山小。如下图:读后整合

 <<imageSlider  [[https://i.loli.net/2018/08/09/5b6c101072e91.jpg]]   "阅读密码整合表">>

如果说这是读社科文献书的一种方法,同样利用 Tag法用作读书笔记。例如在Onenote上,对应 笔记 - 分区 - 页,分别设置为:书名 - Tag - 摘要,这样一套完整的读书笔记结构就很清晰了。

虽然这套密码读书法有点啰嗦,不过也算是一种实用性读书法了。带着问题去读书,以结果为导向。
<$transclude mode="block" tiddler=booklogsinfo/>

''先看一个通俗的例子:''

```
例如,你们家里有个账本,让你来记账。在以前,就是爸爸妈妈把工资交给你,让你记到账本上。中间万一你贪吃,想买点好吃的,可能账本上的记录会少十几块,然后你想买个手机,账本上就少记录几千块。但有了分布式账本后,这些问题就不会有了,因为你在记账,你爸爸也在记账,你妈妈也在记账,他们都能看到总账,你不能改,爸爸妈妈也不能改,这样想买烟抽的爸爸和想贪吃的你都没办法啦。
```

上面提到的分布式账本,就是区块链的而核心。

区块链是比特币所使用的底层技术,后来被抽离出来作为系统层面的开源技术或者框架,它本质是一个互相验证的去中心化的公开分布式记账系统。这个系统所做的事情,就是记录所有账户发生的所有交易。每个账号的每笔数额变化都会被记录在全网总账本中。其本身是一系列使用密码学而产生的互相关联的数据块,每一个数据块中包含了多条经比特币的网络交易有效确认的信息。


''区块链三大特点:''

* 是一个分布式账本
* 是一个可编程性开源的技术
* 是一个基于共识在机器之间建立信任并完成信用创造。
* 是一种去中心化的自组织(个人观点)<<ref "[1]">>。

《经济学人》杂志这样写道:

<<<
区块链是一台创造信任的机器,可以说区块链最核心的问题就是解决信用共识的问题。
<<<

区块链发展阶段:

*比特币阶段
*区块链+金融阶段 (2017年)
*区块链+其它行业(2018年)
*区块链+社会(未来)<<footnote "[2]" "个人观点">>

区块链技术其核心特点之一就是其去中心化的自组织,所以其社会意义比技术意义更值得研究。接下来我试图从技术哲学角度探究一下其意义。

''非常详细的解说视频:''比特币的原理

<iframe width="560" height="315" src="https://www.youtube.com/embed/obRzfcvMshM" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

''李永乐老师讲比特币:''比特币和区块链啥原理?矿机挖矿咋回事?

<iframe width="560" height="315" src="https://www.youtube.com/embed/g_fSistU3MQ" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

//2018年01月14日 周日下午 03:56:21//

-- --

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "自组织,是一系统内部组织化的过程,通常是一开放系统,在没有外部来源引导或管理之下会自行增加其复杂性。 自组织是从最初的无序系统中各部分之间的局部相互作用,产生某种全局有序或协调的形式的一种过程。这种过程是自发产生的,它不由任何中介或系统内部或外部的子系统所主导或控制。">>

<$transclude mode="block" tiddler=bookkeywords/>
在《文明的进程》中,埃利亚斯首先从社会起源的角度,对法国人所说的“文明”(civilization)与德国人所谓的“文化”(kultur)做了考察和区分。他指出,由于“文明”和“文化”都承载着十分广泛的价值意蕴,常被人们视为近义词。而实际上这两个差不多同时在十八世纪中叶成形的现代概念,有着相当不同的历史起源,更有十分显著的意义差别。文明源自法语中的“礼仪”(civilité),十六世纪的廷臣们用它来描述优雅高贵的行为举止,以区别于“粗俗的”中世纪贵族将就使用的“礼貌”(courtoisie)。到了十九世纪,文明已经成为一个具有普遍功能的概念,西方人用它来涵盖西方社会在整体上高于其他社会的诸多性质。除了行为方式,还泛指物质生活、技术含量、科学知识,乃至世界观水平等等。

但是德语中的“文化”不一样,它是作为“文明”的对立面发展起来。在德国人那里,文明是一个低于文化的次等观念,就像法国式的礼仪规范,充满了过度矫饰、繁文缛节和道德虚伪。而文化才是自然的、真诚的、浪漫的、无拘无束的、情感充沛的,它标志着德意志民族的自我意识与独特精神。

可见文明意味着普遍性,文化体现的是独特性。不过可以从埃利亚斯的分析里看出来,这种独特性其实类似一种对外界压力产生的应激反应。它使得德国人不仅对文明带有明显的误解和敌意,甚至到了以粗鲁、庸俗和野蛮的行为举止而骄傲的程度。在进一步的分析中埃利亚斯认为,尽管到了十九世纪西方人好像在随心所欲地使用“文明”这个概念,其实它在发展中一直没有偏离它的原初含义。从根本上讲,文明不是一个静态的结果,而是文明化的过程。它的核心就是“受控”——通过“习惯”(habitus)的养成达成对情感和行为的自我控制。
“habitus”这个词有时候也被翻译成“惯习”、“生存心态”、“个人特性”等等,好像很难懂,其实未必。它就是生物学家常讲的习性,即“第二天性”(second nature),指的是那些并非天生固有,却在经验中得以强化的行为方式或情感倾向。人类习性的特别之处仅在于,多数情况下它们不是在自然环境中习得的,而是在社会环境中塑造的。

埃利亚斯发现,表面上看,一个习惯的形成未必是有计划的——它既不是个别的人,也不是个别的团体高瞻远瞩精心策划的产物。但是从整体与长期的角度看,众多习惯的形成与改变并非没有目的和方向。实际上,这些习惯的变迁朝着一个大致的趋势,那就是使得一个人的情感和行为更稳定、更均衡、更可预期。一句话,就是更可控制。

在大趋势之下,是各种要素的交互作用。行为塑造情感,情感反过来塑造行为。外部的强制对人的行为和情感加以约束,而一旦强制内化成为习惯,它又会对外部环境做出主动的调节。在这个你来我往反反复复的过程中,个人与个人之间,个人与社会之间,相互依赖的机制得以细化和强化。越来越多的人被迫或主动地更加频繁地关注越来越多的人,在埃利亚斯看来,这就是文明化的本质。这一进程不乏反复、曲折和倒退,不过总体而言,它意味着暴力的减少,秩序的稳定。

为了解释这一交互并行的文明化进程,埃利亚斯罗列了大量的历史细节。他运用卓越的技巧,将宏观的历史与微观的个体结合起来,从两个层次上细腻解读了文明的发生。一个层次是个体的社会化,比如儿童怎么通过受控,习得特定社会的情感表达与行为准则;另一个层次是对情感以及行为的社会习惯进行长期考察,以此来识别一个特定文明的主要特征。

例如埃利亚斯注意到,在中世纪的饮食习惯里,人们在同一个盆子里用手抓肉吃,用同一个锅或盘子喝汤乃是稀松平常的事。贪图享乐的王公贵族拥有昂贵的珠宝和华丽的餐具,却可能只有一把叉子。十一世纪,一位希腊公主嫁给威尼斯王国的元首,用“有两个齿的金属长柄叉”将食物送进嘴里,在当时竟然是一个特大的丑闻。这些资料都说明,那个时代的社会情感与行为方式处于控制较弱的水平。直到十六世纪,法国国王亨利三世用威尼斯带回来的叉子就餐,他的侍从还被廷臣嘲笑。不过有趣的是,正是在十六世纪那个过渡阶段,“礼貌”(courtoisie)在法国上流社会逐渐废止,而“礼仪”(civilité)使用得愈加频繁,最终在十七世纪的西欧取得优势。

儿童的教育也反映出那一时期文明化的特征。譬如那时候有一本叫《男孩的礼貌教育》的礼仪手册,主要内容还保留着中世纪的传统习俗:应该用三个手指抓肉吃,别像馋鬼或饿狼那样扑向食物等等。可是另一些内容却表明,相较于十四至十五世纪的宫廷礼仪,社会习惯已经更加细腻。以往,啃过的骨头不可放回公用的盆子,不能用桌布擤鼻涕,不要把痰吐到餐桌对面去等等,这些还是必要的明文规定。而到了《男孩的礼貌教育》里,盘子端上来不要急于伸手取食以免烫伤,与有身份的人同桌进餐要脱帽整理头发等等,更加具体细致的规矩多了起来。手册中有一句话特别能说明埃利亚斯的观点:“最好稍等片刻,等这个男孩慢慢习惯于控制自己的情感。”
从启蒙时代到二十世纪上半叶,出现过多种文明理论。经济因素、阶级斗争、生产力发展、社会结构等等,都被用来理解这一进程。但是没有哪一个理论像埃利亚斯的文明论那样,如此强调身心一致。这显然与埃利亚斯的医学基础分不开。他很早就意识到,人有着黑猩猩难以比拟的细微而丰富的面部表情。而由肌肉和神经控制的表情,与情感和行为都绝非单向的因果关系。读者从这一点上去理解《文明的进程》无疑是一条捷径。

福柯(Michel Foucault)、布迪厄(Pierre Bourdieu)、戈夫曼(Erving Goffman)等等,不少社会学名家都从埃利亚斯那里汲取营养,这并不奇怪。令人惊讶的是,科学家的研究也深受埃利亚斯启发。随着艾克曼(Paul Ekman)、特纳(Jonathan H. Turner)等人的研究,他在二十世纪早期开辟的方向正成为心理学家、神经科学家和语言学家的共识。如今人们终于意识到,情感不仅是个体的自我评估体系,还是社会联系的重要工具——它们是“身体与社会的语言”。

像埃利亚斯分析的那样,科学家逐步证实,在社会的压力下,恐惧、愤怒、高兴和悲伤等基本情感能够像颜料盒中的原色,按照不同的比例混合,生成次级情感。而次级情感还可以再度调和,生成好奇、希望、感激、自责、内疚、骄傲等一系列有利于社会化的复杂情感,并合成含有沟通意图的面部表情和身体姿势,它们在塑造自我和社会方面具有极其重大的意义。而这些东西,往往需要通过习惯来养成。

在心理学家斯蒂芬·平克(Steven Pinker)的新书《人性中更好的天使》里,埃利亚斯乃是当之无愧的中心人物。在那本书中,平克以埃利亚斯的理论为基础,运用大量的统计数据证实,在一万年乃至更大的时间跨度里,外部约束与自我约束的确使情感越来越细化的人类更少暴力,更有秩序了。如今,越来越多的证据支持这一观点:埃利亚斯的文明论不仅在二十世纪下半叶取得了社会学的经典地位,而且必将在二十一世纪的各个学科领域发挥更大的影响。

其实,“身心一致”不仅是文明论的概括,就像我们看到的,埃利亚斯的人生也可以以此来评价。在一个古老的西方传说中,一位骑士在寒夜里寻找美丽的博登湖(Bodensee),却在黑暗中迷了路。第二天浓雾消散,他发现自己身在一个小村庄中。于是他问村民,博登湖在哪里?村里人说,尊敬的先生,你肯定在昨夜里已经踏过了博登湖。只不过,那湖面上结了一层薄薄的冰。骑士吓得魂飞魄散,从马上栽下一命呜呼。回顾自己漫长的一生,埃利亚斯将自己也比喻为骑士,只是结局要幸运得多。他说:“我从不计划自己的生活。我就像博登湖上的骑士那样大胆前行,从不害怕会掉到冰冻的湖面之下。这就是我对生活最基本的感觉。”

也许埃利亚斯说得对,也许未必。他曾经说他“追随着自己的心灵”,可是至少从他曲折的人生来看,他的心灵从未放任不羁。在遗著《莫扎特的成败》里,埃利亚斯悄悄地将自己的人生与莫扎特做了一个对比。一个年少成名,一个郁郁不得志;一个天纵之才,一个大器晚成;一个桀骜不驯,一个隐忍克制;一个生活在承平年代,一个挣扎在乱世当中;一个英年早逝,一个颐养耄耋。在这一系列隐藏的对比中,埃利亚斯其实婉转地承认,他的人生是谨慎的,充满了自我约束的印记。实际上,如果他不是以身心一致的方式前行,危机四伏的博登湖怎能踏过?

从这个意义上看,在文明的进程之中,人类何尝不是冰湖上的骑士呢?//(冰湖上的骑士  西闪)//

2018年05月16日周三上午01:10:47

<$list filter="[field:series[生活艺术]!sort[created]]"> 

<$link to={{!!title}}><$view field="title"/></$link> 
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@
</$list>


<$details summary="点此预览"> 

<$transclude/>

</$details>









<$transclude mode="block" tiddler=bookinfo/>
!! 常用模型
<<textSliderNoButton "''生物学''" "*自然选择
*差异化生存 (Survival by Differentiation)(参“差异化优势”)
*遗传学 (Genetics)
*生理学(Physiology)
*遗传学 (Genetics)
*[[普赖斯方程式]]">>

返回[[思维模型|Thinking Models]]
<$transclude mode="block" tiddler=bookinfo/>
Weekly29:7.10~7.16

本周读书:《十一种孤独》 (理查德·耶茨作品系列)


<<<
世界上的最孤独,就是被世界遗忘,死一样的遗忘。
<<<

理查德·耶茨就是“被遗忘的最优秀的美国作家“(《泰晤士报》)。这个深受海明威影响,而投入生活的洪流体验生活,企图成为一名伟大的作家的二战士兵,被文学史长期进行着不公正的对待。投笔从戎,而文坛不顺,长期投稿被拒,又被老婆孩子弃之而去。唯一陪伴理查德·耶茨的只有酒和香烟。“他坐在租来的房间里,不停地抽烟,不停地咳嗽,不停地写,一篇又一篇,但都不成功,《纽约客》拒绝了他的每一篇投稿 。”

“生命的最后十年,他的健康状况极度恶化,由于肺结核,他呼吸困难,不停地咳嗽、气喘,但他仍抽烟抽得像在烧炉子,即使在最后一年里他得借助氧气面罩来呼吸时,抽烟也没中断过。喝酒是他又一个狂热的嗜好,美国文学史与酒的关系异乎寻常地密切(福克纳、菲茨杰拉德、哈特·克雷恩、海明威、伯里曼、契弗),但没有几个作家能像耶茨那样全身心投入酒精之中。他白天不喝酒,他要写作,一到晚上却总是烂醉如泥,不醒人事。”

这个美国底层出身的伟大作家,一生就这么孤单的用生命在写作,直到最后把身体完全透支,蜡烛成灰。
正如这个早期在美国文学史微不足道的小人物--理查德·耶茨-一样,他的作品里到处充满了小人物的悲天悯人和小人物的孤独。今天推荐的这本书《十一种孤独》,全书十一个短篇,十一个小人物,十一种孤独。孤独各异,殊途同归。也如他本人所说的:“''如果说我的作品有一个主题,我怀疑这个主题并不复杂,那就是绝大多数人都生活在一种无法逃脱的孤独中,他们的悲剧也在于此。”''

芸芸众生,各有孤独,理查德·耶茨用一生的笔墨书写着如他一样的小人物的悲剧人生。
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

这个思想实验,取材于真实发生的事件——19世纪发生在英国的“木犀草号游轮事件”。

包括你在内的3名船员在海上遭遇海难,你们不知道救援何时才会到来,但食物已经吃完了,你们的体力也接近极限。

这时,A死了。

你会吃掉他的尸体延续自己的生命吗?

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<<<
世界上本没有艺术这种东西,有的只有艺术家。
<<<


<<imageSlider [[https://i.loli.net/2019/08/03/psx6ZiW8OCdJSDN.png]]
"//丢勒·画家之母肖像//">>

艺术的故事,有两个层面的理解,一个是创作艺术背后的故事;一个是艺术作品内容涵盖的故事。而贡布里希 (Sir E.H.Gombrich)这本书--《艺术的故事》主要是前者,正如第十六次再版前言所述“本书用朴素的语言重新讲述美术发展史,应该让读者能够看出它是怎样前后连贯,帮助读者鉴赏艺术作品;不是求助于热情奔放的叙述去实现这个目标,而是给读者一些启示,说明艺术家可能怀有的创作意图。”至于后者,由于出于对西方艺术(尤其是绘画艺术)的喜欢,加上对绘画内容所载内容--尤其多的是希腊或罗马神话--不成系统的了解,所以企图从西方艺术作品入手,一方面熟识其作品,一方面梳理西方神话系列, 写过不少小文,赏析作品,揭示故事,也算是艺术的故事吧,不过我整理为“艺术与历史”系列([[前往阅读|https://mp.weixin.qq.com/s?__biz=MjM5NjY1MDg4MA==&mid=110000120&idx=1&sn=bce3461e4c5ac8c2cc8fcdf7fd439023&chksm=259cdd1712eb5401f225a4d0ab1594de19a064c498b00af677e4cf458cb05d056a110eb0f776#rd]])。

<<imageSlider [[http://one.rizi.me/Photos/rizime/La Libertad Egon Schiele.jpg]]
"//La Libertad Egon Schiele//">>

贡布里希 (Sir E.H.Gombrich)在整理收纳入《艺术的故事》的艺术作品,遵循三个原则:一,凡是不能用插图复印出来的作品概不论述;二、本书中论述真正的艺术作品,排除一切只作为一种趣味或时尚的标本看待才可能有些意思的作品;三、作者力求自我克制,发誓要在选择作品时不被个人的独家观念所诱惑,以免人所共知的杰作被我个人偏爱的作品排挤下去。正是作者对艺术作品严格的筛选标准,《艺术的故事》已经再版多大十几次,成为奉献给那些需要对一个陌生而迷人的领域略知门径的读者欣赏指南。正如作者所言


<<<
“本书可以向初学者展示事实状况,而不让繁枝细节干扰思路;可以帮助初学者充实学力,以便把目标更高的著作中一页页不计其数的姓名、时期和风格理出清楚的头绪,为参考更专门的书籍打下基础。编写本书时,我首先想到的对象是刚刚独自发现了这个艺术世界的少年读者。”
<<<


<<<
我认为对这个历史有所了解可以帮助我们理解为什么艺术家要使用某种特殊的创作方式,或者为什么他们要追求某些艺术效果。特别是,这是一条很好的途径,能使我们对艺术作品的独特性质眼光敏锐,从而提高我们对细微差异的感受能力。要想学会怎样欣赏艺术作品的独特价值,大概这是一条必由之路。
<<<


书中鲜有涉及中国艺术,而作者给出的原因是,中国的艺术有更多的时间去追求雅致和微妙,因为公众并不那么急于要求看到出人意表的新奇之作。而西方艺术的故事就是无休无止的实验的故事,就是追求前所未见的新颖和独创效果的故事。事实也是如此,中国的一些艺术手法基本上是一脉相承,几年来很少在术的方面有所改变。

//2017年12月01日 下午 10:41:40//
!!! 哈罗德·伊萨克:《族群》
所谓现代人其实对自己的族群归属仍然有眷念,因为越到现代,人就越孤独。可是,正如伊萨克所说,“族群意识可能建立一个国家,也可能撕裂一个国家”。目前我们看到的族群意识有两种:一种族群意识,只是在探索一群人的共同历史,使他们在现代的全球化和同一化的时代,维持自身关于“根”的想象和依赖,使他们并不因为服装、生活、经济、居住地的变化而彷徨无所依,并培养一种多元的宽容态度,换句话说,是在同一性的文明进程中保存多元性的文化认同;但是,另一种族群想象,却有可能在理想化和圣洁化的纯粹性族群国家追求中,建立自身的光荣想象,却把其他族群的存在当作污秽,展开对异族的清洗和迫害,他们把传说形塑成历史,把逐渐形成的族群当作天生的种族,把各种不同特色的文化当作文明的等级差异,使各个族群充满不安和紧张。

!!! 季镇淮:《司马迁》
当我们开始阅读并领会古典文化时,我们就是重塑(推理与想象并有)过去的生活与思考。当我们欣赏并感动于古典时,我们就是在缩短我们与过去之间的那种文化和时间上的距离,当我们以为了解并解释这些古典的时候,我们是在用一种与我们兴趣、知识、价值相近的“理解”在重新建构古典。从这个意义上说,黑格尔的“绝对精神”(the Absolute Spirit),贯穿一切并构成脉络。

2019年03月09日周六下午11:02:46
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
东方,是西方人的东方,西方人主要指欧洲人。欧洲的东方始于土耳其,终于中国(中国之于欧洲成为远东)。伊斯坦布尔就是横亘在欧亚大陆,跨越东西方的土耳其最大城市。地理上的伊斯坦布尔只是人为加上的标签,并无多大意义。魅力之于伊斯坦布尔在其背后的历史和文化,就其历史上对其称呼足以证明其过往的辉煌:拜占庭、新罗马、君士坦丁堡、奥斯曼帝国首都。在文化方面,其在世界两大宗教 --- 基督教和伊斯兰教 --- 的发展过程中起着举足轻重的作用。

之所以读《伊斯坦布尔:面纱下的七丘之城》,有两个原因的促使。一是对“拜占庭“、”君士坦丁堡“、”伊斯坦布尔“这些散发着历史光芒的词汇的迷惑和魅力吸引;二是,对土耳其过往的辉煌的探索以及现代世俗土耳其的解读。

《伊斯坦布尔:面纱下的七丘之城》原名《剑桥伊斯坦布尔史》。这一点出版商很不厚道,把冷冰冰的原名深藏,拿文艺气息浓厚的新书名蛊惑读者。如果当作历史读物来读,实属诚意之作,旁征博引,资料翔实,甚至有点唠叨。但万不能像我一样,以为是类似《[[我的应许之地|我的应许之地]]》这样颇具情节和自带温度的书。除此,这本书的翻译也不佳,很多句子晦涩拗口,蹩脚难懂。

尽管如此,还是在书中找到一些有趣的东西。

奥斯曼帝国历代统治者“嗜建”传统。这和中华帝国皇帝们有点像,历届统治者都喜欢不余余力的大兴土木,只不过奥斯曼帝国君王(苏丹)热衷兴建的是公共设施:清真寺(包括学校、医院等附属机构)和澡堂子(哈马姆),而中国皇帝们喜欢修建皇宫、庙宇。在土耳其,管理和运营清真寺或澡堂子的机构叫威齐夫,它是城市的核心机构,通常被翻译成“敬虔基金会”。威齐夫是一个宗教组织,但它也是一个纯粹的福利体系。

> 对伊(伊斯坦布尔)城很多居民来说,这是一个从生到死的服务机构。一个人可以出生在威齐夫之家,睡在威齐夫摇篮里,靠威齐夫的供应获得吃喝,在威齐夫图书馆阅读,在威齐夫学校教书,从威齐夫管理机构领取工资,并且,死的时候,有威齐夫的棺梈可用并会埋在威齐夫的墓地里。1给百姓提供吃食、教育、住房、洗涮以及医疗救治的,都是由威齐夫这个机构完成的。这个机构给人们提供生计,并在自然灾害的时候对他们施行救援。人们到威齐夫商店购物,在威齐夫清真寺祈祷,这座城市的外在面貌在很大程度上是威齐夫构成的。一句话,生活在伊斯坦布尔而没有威齐夫的话,那是无法想象的。 威齐夫其实就是捐款,其收入被用来分配给慈善方面的需要。

威齐夫在土耳其政治和经济生活中起的作用至关重要,它即是经济的动力,也是国家经济机器上的核心引爆活塞。城市的经济生活在很高程度上是围着威齐夫在转的,不仅依赖于它而且受其刺激而发展。威齐夫不仅是伊斯坦布尔福利供应的中心,也是其经济中枢。

> 穆罕默德二世在征服君士坦丁堡之后就充分利用威齐夫机构,建起无数的客店、市场、店铺以及其他经济实体来维持其生存。这带来大幅度的经济增长,给城市带来生机。

> 大型皇家清真寺院以及或大或小的威齐夫除了体现统治者的权力和合法性,还对奥斯曼社会的运作具有更进一步的重要贡献。它们是社会经济保持良好状况的基础。它们提供就业机会、拥有商业地产并且刺激经济活动。

威齐夫这样的机构很有意思,既有国家资本主义的特色,财团运作,公司化运营;又有社会主义性质,具有慈善和社会福利的一面。从国家管理的角度看,通过清真寺控制着人民的思想,又通过澡堂子、学校等管控着人民的经济活动和行为。如果说从中国历史中找到与威齐夫相似的历史现象,也只有宋代的资本主义萌芽可以相提并论了。

土耳其浴大家并不陌生,但洗澡对土耳其人的重要性,澡堂子在土耳其人生活中的地位,看后让人有点吃惊。

> 如果西方世界以华盛顿、费城和纽约那样的宏伟建筑自夸,土耳其则以闻名世界的洗浴而骄傲。洗浴是土耳其帝国最令人瞩目的社会现象之一。

澡堂子在土耳其已经上升到国家战略的高度。

> 每当苏丹征服了一座城市之后,首先建起来的建筑,除了清真寺和市场,就是哈马姆(澡堂子)。

广为流传的土耳其谚语说,“清洁来自信仰”。澡堂子的渊源来自于宗教信仰的需要。澡堂子是土耳其人生活的中心,社交的中心和消息来源的中心。(下面有伊斯坦布尔皇家澡堂子的介绍,好像许子东和窦文涛都没有认真备课,至少是没有看过这本书。周轶君小姐对中东及伊斯兰、阿拉伯世界颇为熟悉。)

> 这里是社会生活的枢纽站,是支撑奥斯曼社会架构的中心柱石。人生很多仪式都是在这里举行的......哈马姆还在婚礼中扮演重要角色,女孩子嫁妆中很重要的一个部分就是哈马姆套具,包括一些高级绣花澡巾、特制的用银线装饰的木屐和一个哈马姆浴盆。

<<imageSlider  [[https://one.rizi.me/Photos/ART/482px-Le_Bain_Turc,_by_Jean_Auguste_Dominique_Ingres,_from_C2RMF_retouched.jpg]]    "《土耳其浴女》是法国画家让·奥古斯特·多米尼克·安格尔于1862年完成的一幅油画。显示了众多裸体浴女在土耳其皇宫浴室内的情景。现藏于法国巴黎卢浮宫。">>

> “浴池的外间非常安静。这里有一位基督徒躺在床上吸烟;那边的角落里有一位伊斯兰教徒跪在地毯上祷告,再远一点,有一位长须及胸的,正在阅读《可兰经》,而在他旁边,有一个犹太人正在梳洗打扮。”

如果说在中华文化中能找到类似土耳其澡堂子的地理承载,唯有中国茶馆可选了,但其在人民的生活中纯粹是娱乐和消遣,少了形而上的宗教意义,中国人付之阙如。

其实现代的伊斯坦布尔在西方(欧洲)的影响一下正在蜕变为世俗之城(如果这么说,中国的北京、西安等一直都是世俗之城),虽有伊斯兰教、基督教以及东正教的存在,然其已经更现代化起来了。现代化即世俗化。这样挺好,至少不会像土耳其东边邻居们那样,人们水深火热地活在宗教正义的名义下。

//如果想了解更多关于土耳其以及伊斯坦布尔相关历史和文化信息,推荐看以下视频:(需科学上网)//

<$appear show="more {{$:/core/images/chevron-right}}" hide="{{$:/core/images/chevron-left}} less">


''《锵锵行天下》 : 东方快车谋杀案''

<iframe width="560" height="315" src="https://www.youtube.com/embed/PwuZvbcKb0s" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

''《锵锵行天下》:探访土耳其纯真博物馆''

<iframe width="560" height="315" src="https://www.youtube.com/embed/TPLgzDGTEpQ" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

''《锵锵行天下》 :采访诺奖得主帕慕克''

<iframe width="560" height="315" src="https://www.youtube.com/embed/KIfCwZH5ZQo" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

''《锵锵行天下》 :“皇家大澡堂”''

<iframe width="560" height="315" src="https://www.youtube.com/embed/IVgqYZ51w8Q" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

''【锵锵行天下】:探访圣索菲亚大教堂,屹立千年见证家族与帝国末路''

<iframe width="560" height="315" src="https://www.youtube.com/embed/V8-RUcB72B4" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

</$appear>
//
2018年10月07日周日上午10:47:56//
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
真够折腾的!从以Tag为图书识别,到昨晚添加的[[Library]]插件 $:/plugins/inmysocks/LibraryTracker,不断的折腾,也许逻辑比之前清晰了一点,也省了不少事:

* 添加书目即生产书目的相关笔记和书相关的参数:''Author、Series、Genre、 Location、Tags'',见[[Library Tracker Settings]];
*管理起来更加便捷了,[[已读]] [[正读]] [[想读]],一目了然;
*关于书的信息和变量调用起来少了许多弯路:不再以Tag为唯一识别,而是给予`tiddler`的`field`,如:

```
<$list filter="[field:book_title[青泥莲花记]] -[title[Manage Books]]+[!sort[created]]">
```
field使用标准:[[field聚合规范]]

*阅读管理更加便利了,想读书自动进入[[Task]];

@@color:#fbba42;2017年12月01日 下午 11:57:35@@
<div class="tc-subtitle">最後更新於<$view field="modified" format="relativedate"/>
<p>''关键词:'' {{!!description}}   |  ''综述:'' {{!!summary}}  
 | ''相关:''  <$vars tid={{!!relation}}>
<$appear show="<$text text=<<tid>>/>" $state="tiddler-slider" mode="block">
<$transclude mode="block" tiddler=<<tid>>/>
</$appear>
</$vars>  </p></div>

经过两天若干次测试,终于“一劳永逸”的把所有有关书籍的介绍和内容调用,用不超过 20 字节的代码实现了,文件大小压缩了30%。

!! 书籍调用代码

所有书籍页面只用以下代码片段:

```
<$transclude mode="block" tiddler=bookinfo/>
```

这里[[bookinfo]]是固定代码统一调用,代码里的变量通过`field`来实现。

2019年08月02日周五下午10:38:18

!! 日志固定代码调用分为两部分:

* 基本信息部分 [[booklogsinfo]]

** 调用使用代码:

```
<$transclude mode="block" tiddler=booklogsinfo/>
```

* 内容相关部分 [[bookkeywords]] (利用了field:keywords)

** 调用使用代码:
```
<$transclude mode="block" tiddler=bookkeywords/>
```
//2019年08月03日周六下午04:20:21//
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

拉里·桑格(Larry Sanger)维基百科联合创始人:只有哲学上的论证才能认为,信息过载剥夺了我们的主观能动性;这一观点从根本上来说是哲学性的,不是经验性的。

《认知盈余》作者克莱·舍基:我们不幸地生活在表达能力最大规模增长的时代,这在人类历史上前所未有,之所以不幸是因为盈余总是比稀缺更危险。稀缺意味着有价值的东西更有价值,在概念上易于整合;盈余则意味着过去有价值的东西风光不再,会让人很不安。

凯文·凯利:“接受不确定性”就是我的思维方式发生的改变之一,因为我的知识变得更加脆弱了。

神经科学家伊恩·戈尔德:一个有抑郁倾向的年轻女子第一次来见我时,为我形象地呈现了这个想法。据她所说,导致她消沉的原因之一便是,她没有朋友。她坐在沙发上孤独地诉说,而在诉说期间她仍然在发Twitter消息……范围更大的社交圈是把双刃剑,它提供了更多让人们悲痛和欣喜的机会。一个包括半生不熟的人和完全陌生的人的混合社交团体,也许是通向真正危险的大门。支持这一观点的最好证据是,物种的大脑尺寸(更准确地说,是新皮层的相对容量)和物种所生活的社交团体规模之间呈正相关关系,即大脑尺寸越大,社交团体的规模也越大……进化论人类学家罗宾·邓巴(Robin Dunbar)计算了人类大脑皮层的容量,从而推断出人最多只能与150人的社交团体维持正常关系,相当于一个村落的规模,这在人类进化史中占据了相当长的时间,并且在原始社会形态中仍然能够发现村落规模的踪迹……这表明,在人类百万年的历史中,我们的大脑所面对的,就是150人左右的社交团体所呈现的机会或威胁。互联网已将人类的村庄变成都市,这可能是自原始部落的篝火会以来,人类进化史中最大的变化。

哈佛大学生物物理学家戴维:对于一个公司职员来说,能否集中注意力也许比知识是否渊博更为重要。在未来,知识对于个体完全是外在的,注意力则完全是内在的,每个人的自我都将被真实地传播到世界各地。

德国美因茨大学哲学家托马斯·梅青格尔:倘若控制和维持注意力集中的体验确实是可感知自我的深层次表现之一,那么我们当下所见证的就不只是对于意识空间的有组织打击,而同时也是一种轻型的人格解体。新的内部环境可能因此创造出新的清醒意识,即类似于主体意识削弱的状态——一种梦境、痴呆、醉酒和婴儿化的混合状态。现在我们每天都在共同体验着这种状态,我将其称为:公共梦境。

奥地利科学院量子光学与量子信息研究所主任安东·蔡林格:预计在未来的几十年内,我们的大脑功能将退化到只剩下决策能力……我们拥有了一个全新的情境,在科学中从未遭遇过的情境——或许在哲学中也未遭遇过:创造一种情境,其中问题的回答直接导致情境的变化。

斯坦福大学心理学教授莱拉·博格迪特斯基:因为他们要在伦敦迷宫般的路线中定位。玩电子游戏能显著提高人的空间注意力和物体追踪能力,能让一个普通的笨蛋拥有战斗机飞行员的注意力技能。照此发展下去,我们就是幸运的,因为由下丘脑控制的基本动力——著名的“4F”理论原来包括:冲突(fighting)、逃跑(fleeing)、喂养(feeding)和向你的父亲致以问候(how’s your father?)不需要第五个元素来增强:Facebook。顺便说一下,这就是我不加入社交网站的原因。我的下丘脑有更重要的事情去做,多谢!


//2020年05月30日周六下午04:41:48//

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<<textSliderNoButton "''数学''" "
*[[复利(Compound Interest)|https://hurricanecapital.wordpress.com/2014/05/08/mental-model-compound-interest/]]
*[[决策树]] (Decision Trees)
*[[大数定律]] (Law of Large Numbers)
*[[概率论]] (Probability Theory)">>

返回[[思维模型|Thinking Models]]
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
[[说了“且”|说文解字:生殖器崇拜也“且”]],再说说“也”。

之说以说“也”,“也”也是生殖器,是女性生殖器。

[img[https://cl.ly/ofEm/Snipaste_2018-01-01_15-48-15.png]]
《说文》:“女阴也。象形。羊者切。”段玉裁著《说文解字注》:““女阴是本义,假借为语词,本无可疑者,而浅人妄疑之。许氏在当时必有所受之,不容人少见多怪之心测之也。”现代汉语词典中以及找不到了此意。

现代有学者进一步考证,“它”与“也”本为一个字,也是女阴,如浙江省温州籍学者何新即持此观点。而“也”与“它”为什么成为两个字,与“匜”字有关。“也”通“匜”,匜,读yí,古代女子用的带漏斗的盥洗器具,“匜”很可能就是古人受女性性器官的启发,造出来的字。如果大家仔细联想一下,便可体味出其中的秘密。

更有意思的是,在方述鑫、林小安等编著的《甲骨金文字典》中说,“也”做语气词同“啊”,是因为考虑到“也”系女人之物,同“啊”用,包含了对美女或少妇的赞美、感叹成份。

“也”除了和“它”、“匜”通假外,还和“蛇”有相同的意思,都代表女阴。

此外还有“马”字,也具有女性生殖器之意。长沙马王堆汉墓出土的《马王堆房中书》一书有这样的记载:“治巾,取杨思一升、赤蚁一升、斑廿,以美□半斗并渍之,掩□□□□其汁,以渍细布一尺。已渍,旸之,干,复渍。汁尽,即取榖、椅桐汁□□□□□涂所渍布,干之,即善藏之。节(即)用之,操以揗玉策,马因惊矣。杨思者,□□□□□状如小□□而螫人。”这里的“马因惊矣”,意思就是女子用了被药浸过的纸巾擦拭私处后,私处就会像马惊了一样幸福起来。

无独有偶。男子遗精,现在依然叫做“跑马”或者“走马”,可能后来“马”指代女阴的意义有了扩展,也可指代男性了。我想成语“心猿意马”的“马”也可能和这有关。

如此。“空空如也”的词意也就更意味深长了:)

//2018年01月01日 下午 03:41:52//
[[说了“且”|说文解字:生殖器崇拜也“且”]],[[也说了“也”|说文解字:生殖器崇拜“也”且]]。那么和也一样表示女性生殖器的“bi”,为何念做“bi”?

这不得不还得从“也”说起。《说文》曰:“女阴也。象形。<img src="http://ww1.sinaimg.cn/large/a085a8d8gy1fn6r77ydukj200r00n0dq.jpg"/>,秦刻石也字,羊者切。”那与“也”字形似的“必”字二者有何联系那?《春在堂笔记》引《铜熨斗斋笔记》曰:“今人读为必平声,殆篆文“也”字,与“必”相近而误,云云。”也就是说,后世把二字弄混了,音异而意同。那么怎么就成了生殖器的意思了那?

这要说一下“毴”字。毴,读bī。“非”下加横,是韭菜的韭字,形容韭菜一簇。非下加毛,自然形容毛多。毴,古同“屄”。由此,还引出一段笑话。明代一文人徐琲向领导投名刺(名帖)的时候,好事者在其名多填了一笔,“琲”遂成为“毴”,领导感觉十分不雅。

<<<
明代有徐琲者,人于其刺多添一笔,上官谓其不雅。(《思无邪小记》姚灵犀)
<<<

谁乐意被喊作“徐屄”啊。

由是观之,从“也”到“必”再到“毴”和“屄”,遂成今日之“傻bi”之“bi”。

//2018年01月06日 上午 11:54:59//
[[上次|2017年12月28日 上午 10:56:27]]说到“自”。有是想到之前博客上提到过的“且”。

“且”的意思无可厚非,而其字源之说破有争议,归结有三:

"""
1. “俎”器(切肉的案板)的象形;
2. 神主(祖先牌位)的象形;
3. 男性生殖器的象形。

[img[https://cl.ly/ofKI/Snipaste_2018-01-05_23-36-30.png]]
“且”,说文:“薦也。从几,足有二橫,‘一’其下地也。”这是大部分采取的解释。大部分人认为的也并非真理。其中生殖器说的代表者为郭沫若。

郭认为,且、土、士均为牡器之象形。《说文》:”士,事也。”东方人以物插地中为事,此突出了阳物的插入功能。除此,还有“祖”和“宜”。《礼记》:“曾子曰,夫祖者,且也”,“且”与“祖”相通,祖是人对男根的祈祷和崇拜,与祖相关的“俎”(祭器)、“宜”(祭名)、“祝”、“宗”也与男根相关。

[img[https://cl.ly/ofJ7/Snipaste_2018-01-05_23-42-39.png]]
示,《说文》:天垂象。郭沫若认为是男根倒垂的符号。

[img[https://cl.ly/ofF5/Snipaste_2018-01-05_23-35-41.png]]
祝,为一人向男根跪拜欺负的样子。

[img[https://cl.ly/of4W/Snipaste_2018-01-05_23-37-17.png]]
宗,甲骨文表示立神主(祖宗)以祭祀的房子,后引申未供奉同一祖先的宗族。
除此之外,具有生殖器崇拜意义的字还有:吉、王。

[img[https://cl.ly/ofFU/Snipaste_2018-01-05_23-38-18.png]]
吉 : 上士下口 。 一种说法是 :士为阳物 , 口为睾丸的象形白描 。男人因阳物获得快 感 , 所以后来《 说文 》把吉解释为善的意思 “另一种说法:口是容器,士是男根形状的 玉器 。表示容器里盛着男根形状的玉器举行祈福的祭典 。第三种解释是:口为女阴,士 为男根,吉是男女交媾的意思 。后引申为吉样、吉庆 。《蜃楼志全传》的主人公名叫苏吉士。吉士二字取自《诗经》的“有女怀春,吉士诱之 ” 。 吉与士都有男根的意思。《诗经》郑风里有“唯士与女,伊其相谑,”的说法 。郭沫若说,“士女对言,实同牡牝、祖妣”

[img[https://cl.ly/ofJ7/Snipaste_2018-01-05_23-42-39.png]]
王,郭沫若认为王与士形体相似,均代表男根。王字上面一横表示对男根的特殊指示。
除了郭沫若的观点外,李敖也是“且”字阳具论的拥趸者。1984年,李敖在《且且且且且》一文中,从中国古人的性崇拜,考证到儒家文化中的“牌位,指出且代表男根的来龙去脉。李更是把《诗经·褰(qiān)裳》“子不我思,岂无他士?狂童之狂也且!”译为:你有什么了不起,你不想本姑娘,本姑娘不愁没别人想,你神气什么,你小子,鸡巴啦!“古代女子够彪悍的!

学者对字源的考据提出不同观点都无可厚非,也不会轻易有标准答案,除了不断有新的考古发现进行佐证。而最让人厌恶的是一些“庸俗文字学”喜欢“泛性论”以哗众取宠。

Ps. 如果“且”为阳具,那么“姐”字何解?
"""
//2017年12月29日 下午 01:32:56//
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
[[思考快与慢]]作者丹尼尔•卡尼曼为美国一名因展望理论 <<ref "[1]">> 的贡献获得2002年诺贝尔经济学奖的以色列裔心理学家。而《思考快与慢》讲的是在认知心理学  <<ref "[2]">> 和行为心理学 <<ref "[3]">> (行为科学 <<ref "[4]">>)  基础上大脑的工作机制 。

在书中,作者提出认知世界过程中“判断和决策”的两种行为反应模式:快思考---系统 1(系统1的运行是无意识且快速的,不怎么费脑力,没有感觉,完全处于自主控制状态。)和慢思考---系统 2(系统2将注意力转移到需要费脑力的大脑活动上来,例如复杂的运算。)。

书中作者只对这两种系统运行状态和行为做了刨析和展示,即它们之间的发生和联动、原因和结果。而从实用性角度,即解决办法,或者说训练性指导,并未给出什么解决方案,而解决反感需要自己判断哪些对自己有用,从而形成正确的[[思维框架|Thought Framework]]。

<<<
尽管系统2的运行体现在行动中,但自主运行的系统1才是本书的重点。我将系统1描述成自主而初始的印象和感觉,这种印象和感觉是系统2中明确信念的主要来源,也是经过深思熟虑后作出抉择的主要依据。系统1的自主运作诱发了极其复杂的理念模式,但只有相对缓慢的系统2才能按部就班地构建想法。我还描述了继而发生的系统2的环境条件,在此条件下,系统1中随性的冲动及其诱发的联想都会受到抑制。读过此书后,你会觉得这两种系统各有千秋,各司其职。
<<<

二者的运行条件和顺序:

<<<
系统1是自主运行,而系统2则通常处于不费力的放松状态,运行时只有部分能力参与。系统1不断为系统2提供印象、直觉、意向和感觉等信息。如果系统2接收了这些信息,则会将印象、直觉等转变为信念,将冲动转化为自主行为。
<<<


<<imageSlider  [[https://cl.ly/orTa/%E6%80%9D%E8%80%83%E5%BF%AB%E4%B8%8E%E6%85%A2.jpg]]    "//前五章的脉络图//">>

//2017年12月24日 下午 10:11:27//

---
@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@ <<footnotes "[1]" "是一个行为经济学的理论。例如,一个人展望(预期)能得到奖金 500 元,当他的决策让他得到奖金 500 元,他会觉得没什么;若他有办法得到多于预期的 500 元,多数人会审慎地考量这方法(决策)带来的风险,以免失去展望(预期)回报;如果相反,即使他有另一个比较安全,但让他少得100元奖金的办法(决策),那多数人会宁可冒较大风险,以获取展望(预期)回报。">>

<<footnotes "[2]" "人在接受信息输入和输出之间发生的内部心理过程。">>

<<footnotes "[3]" "主张心理学应该研究可以被观察和直接测量的行为,反对研究没有科学根据的意识。">>
''慢思考'',即系统1的运行是无意识且快速的,不怎么费脑力,没有感觉,完全处于自主控制状态。这种思考能力是与生俱来,并与其它动物本能一样。

<<imageSlider [[https://cl.ly/ouhG/Snipaste_2018-01-18_16-04-16.png]]    "//思考系统1和2运行机制//">>

由于系统1是本能性思考能力,所以其缺陷也就是系统性缺陷,如上图。要规避系统性思考缺陷,或者说避免直觉性错误和成见,而系统1又无法进行强行关闭,就需要自我控制,进行干扰系统1,而专注是有效手段。

系统2自身具有自我控制能力,例如情绪失控,系统2自动响应避免重大错误或者不礼貌的发生。

而注意力是有限的资源。由于专注,我们会忽视显而易见的事,也会忽视自己屏蔽了这些事的事实。

<<imageSlider [[https://cl.ly/osSh/%E5%BF%AB%E6%85%A2%E6%80%9D%E8%80%833.jpg]]    "//思考系统1和2属性和关系//">>

//2017年12月26日 下午 09:28:32//
<$transclude mode="block" tiddler=bookinfo/>
思维系统1和2是一对兄弟,但是兄弟两个既互相帮忙,又互相掣肘。例如我们正聚精会神的思考一件事情,突然听到一声巨响,系统1一定会打断系统2的工作。

同样,其它身体方面的行为也会干扰系统2的运转效果和能力。例如,在跑步时心算出“23×78”的结果,这时肯定会停下脚步来。

这就是身体系统的能量分配问题。对于大脑来说,自我控制和认知努力是大脑工作的形式,自我控制需要自我能量损耗,必然导致系统2的良性运转,而控制思想和行为是系统2的任务之一。所以我们在决策的时候,自身自然而然的会选择或者分配输出最低消耗身体能量的解决办法,这就是人的惰性,或者惰性思维。

结论:
1、我们要将所有资源都用于手头上的任务才好;
2、降低自我损耗,达到心流效应  <<footnote "[1]" "并不是所有认知工作都令人厌恶,有时并不需要意志力的支撑,人们也能花很长时间和大量精力进行一项工作。心理学家米哈里·契克森米哈(Mihaly Csikszentmihalyi)将这种状态命名为心流。体验过心流的人将其描述为“一种将大脑注意力毫不费力地集中起来的状态,这种状态可以使人忘却时间的概念,忘掉自己,也忘掉自身问题。">>;或补充自我损耗,达到系统2良性运转,如自我损耗的影响能通过注射葡萄糖得到缓解。

2018年01月11日 16:47

补充:思维的惰性,其实从另外一个理论也可以证明--奥卡姆剃刀。
''奥卡姆剃刀'',意思是简约之法则,是由14世纪逻辑学家、圣方济各会修士奥卡姆的威廉(William of Occam)提出的一个解决问题的法则,他在《箴言书注》2卷15题说“切勿浪费较多东西,去做‘用较少的东西,同样可以做好的事情’。”换一种说法,如果关于同一个问题有许多种理论,每一种都能作出同样准确的预言,那么应该挑选其中使用假定最少的。尽管越复杂的方法通常能做出越好的预言,但是在不考虑预言能力(即结果大致相同)的情况下,假设越少越好。

奥卡姆剃刀原理体现了精简的本体论原则:''如无必要,勿增实体''。

在自然科学中,奥卡姆剃刀被作为启发法技巧来使用,更多地作为帮助科学家发展理论模型的工具,科学方法中对简单性的偏好,是基于可证伪性的标准。较简单的理论比复杂的理论更好,因为它们更加可检验。

俗话说的“简单的解释通常是正确的”就是是源于奥卡姆的剃刀。

与奥卡姆剃刀相似的是[[萨顿定律|简单,简单,再简单]]。萨顿定律描述在医学诊断时,先考虑较明显、较可能确认的项目。

萨顿定律得名于银行抢匪威利·萨顿(英语:Willie Sutton),据说他在回答抢银行的原因时回复:''“因为钱就在这里。”''


//
Modified:<$view field="modified" format="date" template="YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss"/>//
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

人脑虽然精妙,但是有一定负荷和计算临界点的,例如脑算 89 X 64一般没问题,但是如果你脑算 512 X 69 那?人类接受信息也同样具有通讯容量的,例如说:同时给一个人大量信息,人脑就会难以接受从而思维溢出。按照香农-韦弗信息模型 “包含了信息源、信息、发送器、信号、信道、噪声、接收器、信息目的地、误差概率、编码、解码、信息率和信道容量等概念”,此时是对人脑进行信息植入最佳时机,就像一些坏人利用计算机缓冲溢出植入木马。


<<<
无论系统有多安全,总有方法攻破它。通常,系统中的人是最好欺骗和操纵的。制造恐慌、运用影响力、采用操纵策略和建立信任感等方法都可以让受害者消除戒备。

崩溃是找到软件漏洞的第一步。对人类来说,人类的思维可以像程序一样被改写。

和预期定律有关,即人们通常会遵循一个预期(就是我上面说的溢出时植入命令)。人们常常遵循他们感受到的别人的期望或要求来作决定。利用这个定律,你可以将恶意“数据”植入到对方的脑部程序,我们称之为预设。

嵌入式指令的原则写成一个方程式,大致会是这样:

人类思维缓冲区溢出=预期定律+思维铺垫+嵌入式代码
<<<

//2020年08月18日周二下午12:02:17//

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
“你必须知道所有重要学科的重要理论,并经常使用它们。要全部都用上,而不是几种,大多数人都只学过一个学科的思维模型,比如说经济学,试图用一种方法来解决所有问题。你知道谚语所说:在拿着铁锤的人看来,世界就是一颗钉子。这是处理问题的一个笨方法。”
<<<

一切思维者都具有一种思维的结构,这个结构不是哪个人主观的,当然每个人的主观里面都有,但它不是主观的,而是思维本身内部固有的,任何一般可能的思维者都必须服从于这样一种结构。这样的结构他称之为先验的。(康德)

康德讲客观是由主观建立起来的,而他讲的主观又不是某个人可以任意违背的、可以抵消的,是先验地定下来的主观的东西,你要抛开是不行的。你只能按照这套主观的知识结构去进行认识,所以这套主观的结构对于主观的任意性构成了先验的限制。你只要是个理性的存在,这个理性就是一套固定的先天的结构,是不变的。


//
Created:<$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss"/>//


<$transclude mode="block" tiddler=bookkeywords/>
2018年01月18日周四下午09:24:30
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

!! 困境思想实验
# [[列车困境]]
# [[囚徒困境]]
# [[食人困境]]
# [[唐德的谎言]]
# 道德的药片
# 决定论
!! 悖论思想实验
# 时间悖论
#突击测验
# 刘易斯·卡罗尔的悖论
# [[罗素悖论]]
# 哥德尔的不完全性定理
!! 哲学思想实验
# 沼泽人
# 水槽中的大脑
# 哲学僵尸
# 盒子中的甲壳虫
# 5分钟创造世界的假设
# 世界为何是不存在的?
!! 数学思想实验
# 蒙提·霍尔问题
# 0.9=1
# 假如1+1≠2
# 赌博的谬误
# 如何用水桶量出4升的水?
!! 科学思想实验
# 人体传送机
# 薛定谔的猫
# 麦克斯韦妖
# 加速运动的电梯
# 当技术奇点到来时
# 人体冷冻能带来幸福吗?
!! 科幻思想实验
# 机械外壳下的灵魂
# 银翼杀手
# 空想城市莱奥尼亚
# 计算机总统
# 相对主义国“雷拉塔维亚”的故事
# 平行世界
!! 商业思想实验
# 费米推定
# 假设思维
# 设计思维
# 吹响警哨

2020年11月17日周二下午07:55:02

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>

病来的突然,去的徘徊。

本周书目《苏东坡传》,作者民国才子林语堂。此书原本以英语书写,后被大翻译家张振玉先生翻译为中文(林语堂的《京华烟云》中文版也是出自张之手),也有人说宋碧云译本比张译本要好。

捡拾此书有几个原由。其一就是对苏东坡才情感兴趣,唐宋八大家苏家占三家,苏家三大才子当以苏轼为首。大江东去,浪淘尽、千古风流人物。但愿人长久,千里共婵娟。春宵一刻值千金,花有清香月有阴......千古绝句如珠落盘。林语堂本书也神话了苏轼,前言序里甚至能读出“跪舔”之象。其二是因为出自林语堂之手。虽然不能盲信大师,但是大师必有过人之处。本书也颇有争议,有说写的烂的,当然也说是因为翻译的原因。不过试想一下,把宋朝语境下的事情在现代用英语书写出来,本身也足以望其项背,更别说主人公是一个诗词作家。更让我吃惊的事情,林语堂何以霸占那么多苏轼史料,写出诸多细节。其三就是对宋史之耽爱,之前写过一些宋史方面的小文,但都是粗枝大叶,贻笑大方,所以需要宋史猛料强补。

本书线性的叙述了苏轼一生,但是对宏大历史背景和重大事件的展开叙述,如北宋新旧党争、乌台诗案等,以及北宋当时的外交关系,也是本书的一大特色。当然书中林语堂也不乏一些个人感悟和幽默:

<<<
“才华过人的诗人和一个平实精明的女人一起生活之时,往往是显得富有智慧的不是那个诗人丈夫,而是那个平实精明的妻子。”
<<<
还有一些诗的引用也颇有趣:

<<<
“两个娘子小身材,捏着腰儿脚便开;若要尝中滋味好,除非伸出舌头来。”(南宋女词人朱淑贞的《咏箸》诗)
<<<

<$transclude mode="block" tiddler=bookinfo/>
最近连续看了好几本大家小书,小书是指文章的篇幅短小,可以速阅。除了解些许大家故事轶闻,收获最大的莫过于受大家娓娓道来的文风的侵染。越是宿儒名家,其作品语言风格越像是听邻人讲话。其言情也必沁人心脾,其写景也必豁人耳目;其辞脱口而出,无矫揉妆束之态;以其所见者真,所知者深也。用王国维的话说”须有肫挚 <<footnote "[1]" zhūn-zhì,真挚诚恳。">> 之感情,为之素地,而后此原质乃显。“(见[[一个人的书房]])

这些耳濡目染,微风细雨的感受,也正是我一直以来所寻求的。之前从来没有在意过自己的语言性格,写和看的多了,开始对自己输出的每个字在意起来,在意其美不美,在意其是否文能达意,在意其幽默,在意其思想高远。而在意多了也就在太在意中迷失了自己,为了追求简约而好古,为了达到高远而开始掉书袋……林林总总,不知所终。钱钟书在翻译《浮生六记》也颇有类似感悟:


<<<
吾深信此本色之美。盖做作之美,最高不过工品、妙品,而本色之美,佳者便是神品、化品,与天地争衡,绝无斧凿痕迹。近译《浮生六记》,尤感觉此点。沈复何尝有意为文?何尝顾到什么笔法被澜?只是依实情实事,一句一句一段一段写下来,而结果其感人魔力,万非一般有意摹写者所能望其肩背。称之为化工,也未尝不可。文人稍有高见者,都看不起堆砌辞藻,都渐趋平淡,以平淡为文学最高佳境;平淡而有奇思妙想足以运用之,便成天地间至文。
<<<

在同一本书,江寄萍继续钱钟书的话题,继谈“本色的美”。“我以为他(钱钟书)的话总未说尽,所以在这里给补充一点,虽然也仅是一点点而已。"江寄萍列举了一些名不见经传直抒胸臆的典范之作:


<<<
孟子说:“…….逾东家墙,而搂其处子,则得妻;不搂则不得妻。则将搂之乎?”这是何等富有自然的美的文章,道学先生恐怕早已舌挢不下了。

《郑风》中的这一首:
子惠思我,褰裳涉溱;
子不我思,岂无他人!
狂童之狂也且!
<<<

		
除此,清末文人袁中郎、李卓吾、徐文长、金圣叹等皆提倡本色之美;其意若曰:若非出口成章便不是好诗,若非不加点窜,便不是好文。金圣叹谓诗者心头之一声而已;心头一声有文学价值(如“悠然见南山”,“举头见明月”,“衣沾不足惜”之类)念出便是天下第一妙文;心头一声本无文学价值,任汝如何润饰,皆无用也。

如是我闻。香象渡河,羚羊挂角。<<footnote "[2]"  《沧浪诗话·诗评》称道李杜等盛唐诗人诗“如金鳷〔鳷(zhī)〕传说中的异鸟。(大鸟)擘海,香象渡河”,是赞美其雄壮。严羽又强调诗歌应写得浑然天成,不露文辞斧凿痕迹,即所谓“如羚羊挂角,无迹可求”(《沧浪诗话·诗辩》)。">>

''当以感情素地为一切行文之根本。素心素地素文方是大文章。''


2018年03月31日周六上午12:06:30

[[为何素心素地素文方是大文章]]
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

人类大脑天生就讨厌随机性。我们已经进化成了追求精准的物种。我们之所以很难掌握随机性,是因为我们拥有探索模式的天性。如果实在找不到一种模式去解释,随机性就是我们心智的边界,我们会认为完全无法去预测。随机性虽然是宇宙的运行之道,我们却很难接受它。因为如果没有随机性,宇宙在我们眼中就变成了完全可以掌握的可测模型。

现在,只有我们理解了三个定律(即随机性的三条法则),我们才能打破对可预测性的迷信,才能真正体验到宇宙的真相而非我们对宇宙的想象。

''随机性第一法则:随机性确实存在。''

其实我们都在使用避免随机性的心理机制。当我们在讨论“因果报应”时,我们说的是毫不相关的事件之间达成的宇宙平衡;我们相信有运气存在,无论是好运还是霉运,我们也相信祸不单行;我们甚至认为自己会受到月相和星运的影响;若谁不幸罹患重病,那一定是作恶遭了报应。

但是,很多事情无法完全预测和充分解释。对于好人和坏人,对于星运好和星运不好的人,灾难的发生是随机的。有时候你尽可以猜想未来,但随机性会击溃任何笃定的预测。有些肥胖者、瘾君子和超速摩托车手确实会比你活得久,这没什么值得惊讶的。

而且,随机事件也可以模仿非随机事件。即使最厉害的科学家也很难分辨真正的效应与随机误差。随机性可以让安慰剂变成灵丹妙药,也可以让无害的化合物变成致命的毒药,甚至能凭空造出亚原子粒子。

''随机性第二法则:有些事情无法预测。''

如果到赌桌旁观察,你总会发现一些认为自己运气爆棚的人。他们刚赢了几局,就认为自己会一直赢下去,所以他们总是在下注。同样,还有一些输家,他们的大脑也会疯狂地驱动他们去下注,因为他们认为自己已经输得这么惨,好运总该到来了吧。所以,他们不会离开赌桌,因为他们害怕一离开好运就来了。

和我们认为的相反,造就赢家的并非什么神奇的力量,也不存在否极泰来的宇宙公平。宇宙才不在乎那些微不足道的输赢呢,每一次掷出的骰子并无区别。无论你多么细致地观察骰子的运动和那些赢家的一举一动,下一次还是会完全摸不着头脑。每一轮掷骰子的结果和之前的结果完全无关,所以试图通过观察建立赌桌规律是必定会失败的。在这样完全独立和随机的事件之间建立模型,显然是缘木求鱼。

随机性是人类智慧遇到的挑战,因为我们的逻辑、科学和思维能力对宇宙的预测仅限于当下。无论用什么方法,创造什么理论,用什么逻辑都很难预测下一个骰子的点数,你错误的概率总是5/6。

''随机性第三法则:单个随机事件无法预测,但作为整体它们似乎可以被预测。''

随机性令人望而生畏,哪怕是最精妙的理论也对其难有作为,对于神奇有趣的自然领域我们也只能置身事外。但是,这并不是说随机性就等同于不可知。

随机性有它自己的规律,这些规律使得随机过程能够被理解和预测。彩票号码也是有其自身规律的,只要是地球物质力的运动(这一点不要杠了,问一下彩票店的老板就明白)。

哪怕单个的随机事件完全无法预测,但是一系列独立随机事件作为整体却是可以预测的。这些随机事件越多,整体就越能被预测,这是大数定律的体现。大数定律是一种数学定理,即一件独立的随机事件无限重复后,它发生的概率就会趋于一个稳定的算术平均值。另一个强有力的数学工具是中心极限定理,它能告知我们独立随机事件发生概率的均值在正态分布中的位置。有了这些工具,无论面对看似多么杂乱和诡异的随机事件,我们终能进行稳定准确的预测。

随机性缔造了最稳定和最神圣的物理定律。若一个原子在充满气体的盒子里随机运动,它的运动轨迹完全可以用一系列确定的方程来描述。热力学定律也得益于大量随机事件的可预测性,它们的无可争辩性正是因为随机性法则是如此绝对。

这好像是一个悖论:''随机事件不可预测的属性正好造就了最可靠的预测。''

随机性是科学与宗教之间的又一个主要分歧点。从诺贝尔奖获得者史蒂芬·温伯格(Steven Weinberg)书中的一句话,我们可以看到一个简明扼要的论点,这句话出自《最初三分钟》(The First Three Minutes):“宇宙越是呈现出可理解性,就越显得没有意义。”潜在的假设是,目的是存在还是缺失取决于宇宙是否以随机方式发展。随机性是一种观测值,而不是反对更高指令设计的证据。如果我想让我的花园看上去像个丛林,那么我最好让植物相互攀爬。花园可能看上去杂乱无章,但这是我的意图。


//2020年06月28日周日下午03:55:13//

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

<<<
当执政者或某组织失去公信力或公权力后,无论说真话还是假话,做好事还是坏事,都会被认为是说假话、做坏事,给予其负面评价。
<<<

这就是''塔西陀陷阱''(Tacitus Trap)意指所在,是一个著名的政治学理论,因古罗马历史学家塔西佗得名。这是个用得极其频繁的词汇,也许非直言为塔西陀陷阱,但其所指现象触目皆是。如习近平就几次提到这个词:

习在不同场合提及中国面临“三个陷阱定律”,即塔西佗陷阱、修昔底德陷阱<<ref "❶">>和中等收入陷阱。2014年习在兰考一次会议发言中就引用了“塔西佗陷阱”这一术语:“如果群众观点丢掉了,群众立场站歪了,群众路线走偏了,群众眼里就没有你。”

知易行难!

其实''塔西陀陷阱''在中国典籍中早有体现,《论语》子贡“纣之不善,不如是之甚也。是以君子恶居下流,天下之恶皆归焉”,有人易之为“子贡陷阱”。不管什么叫什么陷阱,历朝历代有几家不堕入啊。

从认知理论上看,具有“塔西陀陷阱偏见”的人,或者说受“塔西陀陷阱现象”影响的客体 --- 主体为失去公信力的组织或执政者,是另外一种效应:框架效应(Framing effect),属于认知偏差,也非公允,不妨称这种现象为:''塔西陀陷阱偏见''。

知易行难,难在应对塔西陀陷阱的策略:怎么消除不信任。


回到[[Thinking Models]]

-- -- --

@@color:gray;<i class="fa fa fa-info-circle fa-3x fa-pull-left "></i>@@ <<footnotes "❶" "修昔底德陷阱(Thucydides's Trap),指一个新崛起的大国必然要挑战现存大国,而现存大国也必然来回应这种威胁,这样战争变得不可避免。这一概念来自修昔底德(《伯罗奔尼撒战争史》的作者)的名言:“伯罗奔尼撒战争 (英语:Peloponnesian War)的无可避免,肇因于斯巴达对雅典崛起的恐惧。”(What made war inevitable was the growth of Athenian power and the fear which this caused in Sparta.)。 ">>


<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

德国哲学家康德,因对自己的要求特别严格而闻名。

他总是说要无条件地做正确的事情,即所谓的“定言命令”)。按照这种观点,在任何场合都不能撒谎。因为“不撒谎”是正确的事情,所以要无条件地做到。


<<<
你的朋友正在被杀人狂追杀,而你却让他躲藏在自己的家里。

不幸的是,杀人狂也追了过来,并且敲开门问你,那家伙(你朋友)是不是躲在你家里?

假如撒谎是不对的,那么你又该如何回答呢?
<<<


<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
!This is an encrypted Tiddler
!! 常用模型
<<textSliderNoButton "''统计学''" "*均值 (Mean)
*标准差 (Standard Deviation) / [[正态分布|不确定性和未知之美]] (Normal Distribution)
*趋均数回归 (Regression to the Mean)
*期望值
*[[贝叶斯定理]]
">>

返回[[思维模型|Thinking Models]]

探索概率的下一步,是进入哲学的层次,尤其是研究知识哲学分支的知识论、方法学,或者科学哲学。它们因波普尔和索罗斯(George Soros)等人而普及开来。

你得到的信息越多,你对结果就会越有把握。但问题来了:有多大把握?常见的统计方法指的是信赖水准稳定升高,但是它和观察数的比值并不是线性关系。也就是说,样本数如果增加n倍,我们的知识只增加n的平方根。假使我从装有红球和黑球的罐子内取球,那么取了20次之后,我对罐子内红球和黑球的相对比例怀有的信心,并非取了10次之后的两倍,而是只有2的平方根(1.41)。

!! 关于统计学的阅读书目:

<$details summary="相关书目">

<$list filter="[field:topic[statistics]] +[!sort[created]]">

《<$link><$view tiddler=<<CurrentBook>> field='title'/></$link>》</$list>
</$details>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
投资组合理论成型于上世纪50年代,和博弈论一样属于相当年轻的理论。最早这种理论被应用于降低证券投资的非系统性风险,投资组合在以波动率为横坐标,收益率为纵坐标的二维平面中描绘出来,形成一条曲线。这条曲线在最小方差点以上的部分就是著名的(马考维茨)投资组合有效边界,对应的投资组合称为有效投资组合。投资组合有效边界一条单调递增的凹曲线。粗糙地说,在投资组合中期待的期望收益越高则收获的标准差以加速的幂函数增大。
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
“士 ”这个字很有哲学意味。

什么是“士 ”?《说文》:

<<<
士,事也。數始於一,終於十。从一从十。孔子曰:“推十合一爲士。”凡士之屬皆从士。
<<<

也就是说“凡能事其事者偁士”,能办事的人就是 “士 ”。

“士 ”怎么来的?《说文》:

<<<
數始於一。終於十。
<<<

善于做事,能把事情从一开始,做到十结束。孔子对之的解释是:

<<<
推十合一爲士。
<<<

也就是“學者由博返約。故云推十合一。”做学问,从广博到精深即“推十合一”。另外也可以理解为“博學、審問、愼思、明辨、篤行、惟以求其至是也。若一以貫之。則聖人之極致矣。”学问之径,唯求每一步都达到极致,方为圣学之道。

再进一步说明:能做事,即“數始於一。終於十。”善做事,即“推十合一”。这和数学家华罗庚先生说的读书之道:“先把书读厚再读薄”有异曲同工之妙。

<<imageSlider  [[https://cl.ly/pGC1/%E5%8E%9A%E8%96%84.jpg]]    "先把书读厚再读薄">>

2018年02月02日周五下午11:37:53
<$transclude mode="block" tiddler=bookinfo/>
[img [https://cl.ly/p1dA/snipaste_20180123_225518.png]]

//
Created:<$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss"/>//

系统1的运行是不由自主的,不可阻断的行为;系统2的运行需要消耗体能,是身体自身自主规避的懒惰行为。所以,我们更趋向在一种轻松的场景--- --- 没有阻碍、没有新情况、没必要转移注意力或投入更多精力 --- ---下思考。相反,在紧张的环境下 --- --- 未来不可预知、陌生、坏心情和不安全 --- --- 思考,就要消耗更多的体能,系统2就要发挥其自身的特性就行实施控制,从而达到趋于放松的环境。介于紧张和放松之间,被称称为认知放松度。


所以了解影响认知放松度的因素至关重要,因为这些因素直接左右认知输出。例如现在社会到处充满的广告,就是一种影响我们认知的行为,在对反复出现的广告商品和一款陌生商品之间进行选择的时候,人们对广告出现的商品的好感度大于陌生商品,事实上陌生商品的质量未必亚于广告商品,这就是曝光效应,是一种认识的错觉。认识错觉不仅是[[视觉错觉,如缪勒-莱耶错觉|建立自己的思维框架,避免认知错误陷阱]],还有思维错觉。

这种趋向轻松的选择,是生物的笨能反应,不仅是人,动物也具有,因为重复曝光的结果有益于机体适应其所处的有生命和无生命的环境。这一效应能使机体鉴别出安全的物品和栖息地,是最为原始的社会性依附的基础。因此,重复曝光构成了社会组织和社会整合的基础,而社会组织与社会整合又是心理稳定与社会稳定的基础。

一些洗脑性行为就是利用了这种认知度放松效果,利用对一些使人脑放松的因素并反复进行体验,想想出一种未来的预知,从而达到感觉真实而又良好的认知结果。这里反复和强化预知这两种行为起到关键作用。

那么,我们在现实生活中怎么防范这种认知错误那,这有两种情况:一、面对未知而认知紧张的情况下,找到使自己认知放松度提高的要素,从而达到放松,这是系统2在起作用;二、在认知放松度很高的情况下,一般会马上给出认知结果,这时候要警惕这种直觉输出,错觉或者偏见机率最高。



''生活中常见的场景:''

//股票代码上口,回报率开始的时候偏高。//

//如果你很在意自己在别人眼里是否值得信赖、是否聪明睿智,那么说话时就言简意赅吧,能用简单句的时候就别用复杂句。//

//用浮夸的语言来表达熟悉的概念是一种智商低下、可信度差的表现。//<<ref [1]>>

//任何缓解认知紧张的做法都会有所帮助,假设你需要写一则能让接收方相信的消息,首先应该让字迹更清晰,如果你使用彩色字体的话,亮蓝或大红的文字会比绿、黄、灰蓝等色调更容易让人相信文字内容的真实性。还有就是尽量简洁便于记忆。//

//
Modified:<$view field="modified" format="date" template="YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss"/>//

---


@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "普林斯顿大学丹尼·奥本海默(Danny Oppenheimer)的文章:《不切实际地运用华丽辞藻的后果:使用长句毫无必要》。 ">>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<<<.tc-big-quote
凡所有相,皆是虚妄。若见诸相非相,则见如来。--《金刚经》
<<<

<$list filter="[field:topic[维摩诘]]+[!sort[created]]">

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  @@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> @@  - <$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/>  
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-60]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-60]]"> @@color:gray;^^有点久了^^@@</$list>


<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>

<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
之前总结的[[阅读行为眼动模型]]大多是西方人的研究结果,是建立在字母文字阅读基础之上的。中文以及日本、韩文等东亚语言由于其特殊的形音义组合结构,决定了其阅读眼动模型与字母阅读行为的差异。

字母阅读时眼球是可以聚焦单个字母位置的,从而进行对整个单词进行加工,而汉字就不存在整个问题。不过也有人借鉴字母阅读的模型,把汉字以部首为单元进行认知测试。<<ref "①">> 另外一个不同点就是字母阅读词与词之间是有空格存在的,这也决定了中文阅读眼球运动与字母阅读的不同。

不同研究者通过大量实验得出的结果证实:''中文阅读是基于“词”的阅读''。也就是说,词更有可能是汉语阅读的基本信息单元。支持这一观点的证据主要来自于以下几方面。

“''词优效应''”是指读者在复合词中识别汉字的速度快于在无意义汉字串中对相同汉字进行识别的速度。汉语读者在真词中搜索汉字位置的速度要显著快于在非词中搜索汉字位置的速度,表明汉语中的词是作为一个整体被加工的。

''“词频效应”''是指读者在阅读过程中对高频词的识别速度快于对低频词识别速度的现象。字频是否在汉语词汇识别中起作用受整词词频影响较大。

''“预测性效应”''是指,与低预测性词相比,高预测性词更容易被识别的现象。具体表现为,读者识别高预测性词所需的首次注视时间、凝视时间和总注视时间显著短于低预测性词,且跳读的概率更大。

“词边界效应”是指在汉语文本阅读中,通过加入视觉词边界信息(如词间空格)来促进读者阅读的现象。词边界信息的促进作用不仅表现在汉语词汇识别的过程中,同时还体现在汉语读者对新词的学习中。

''偏向注视位置(preferred viewing location,PVL)效应''
指无论是阅读由左到右排列的文本(如英语),还是阅读由右到左排列的文本(如希伯来语),读者都倾向于将首次注视点落在单词的中心和开头之间的位置,约在单词开头1/4处。汉语读者注视词中心还是词首取决于当前注视词与副中央凹处  
<<ref "②">> 的词能否成功切分。这表明汉语阅读是基于词的阅读,但读者采取什么样的注视策略则与副中央凹的词切分相关。

''“心理词”''(psychological word)的概念,它是汉语阅读中相对较大的基本语义单位。例如,多数读者倾向于把“老朋友”看作是一个语义加工单元,但实际上“老朋友”是由“老”和“朋友”两个词汇词组合而成的短语,“老朋友”是个心理词。心理词单独呈现和在句子阅读中时都存在加工优势。

如是我闻。

读写的基础和升华是用好“词”。要速读、跳读和一目十行,先把文章中出现的高频词在脑中进行熟练加工、再进一步训练成自己的心理词,使视野区域的词更容易被划分,提高预测性效应,从而眼球的偏向注视位置尽量后移。写出一篇朗朗上口的文章,尽量不要使用长句式,短句式尽量由熟词和字组成,短句式可以造成词边界效应(标点符号相当于字母阅读中的空格,一般中文里面是被跳读的)便于分词,熟字词可以缩小认知加工时间。

写到此,如醍醐灌顶,一下子明白了为何[[素心素地素文方是大文章]],为何越是大家作品越是素朴而有味。以上的分析和对阅读行为的结构化,实际上为分析“好文之所以为好文”提供了理论基础。

2018年04月17日周二下午10:52:47

--

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "①" "汉字的内部结构关系有三种:空间关系、方位关系和配合关系。彭瑞祥和张武田(1984)研究了字的类型是如何影响汉字的特征提取的。在快速、低对比条件下呈现不同类型的汉字,呈现时间分别为3ms、17ms、33ms、67ms。字的黑白对比为0.003。字的类型为:左右分隔型、上下分隔型和整体型。要求被试在刺激呈现后,立即正确写出所看到的东西,如笔画、部首或整个字。结果发现,左右分隔字的累积再认率最高;整体字结构较紧密,不利于辨认,在呈现时间为17ms和33ms时特别明显。">>

<<footnotes "②" "所谓副中央凹—中央凹效应(parafoveal-on-foveal effect),指副中央凹预视效应获得的信息对中央凹的加工产生的即时影响。">>
<$transclude mode="block" tiddler=booklogsinfo/>

!!! 理论一:加速的是这个世界,不是你

有人认为,随着年龄的增长,时间的加速是外部世界和文化事件以一种更快的速度发生的结果。

我们习惯认为,12000年前的生活规律固定(正不正确是另一回事),农业发展前的每一个世代都承袭前一代,并继续用同样的方式生活下去。或许从前人类的生活方式只会随着环境失衡或变动而缓慢改变,活不到100年的人其实无法察觉那样的改变。之后,随着农业出现,人类生活改变的速度变快了,短短几千年之内出现了部落、财产、文字和帝国。从此,文化和科技的创新逐渐加速累积,造就了今日的我们。

!!! 理论二:这完全关系到我们感知到有多少时间过去了

至少在19世纪末之后,思想家就试图计算时间随年龄而加快的实际速度。有个论点是,对个人来说,我们感知到时间流逝的速度,和我们开始长期记忆的时间相关——也就是大约三岁开始。换句话说,累积的记忆愈多,时间飞逝得愈快。从这个理论加以延伸,可以说我们感觉到的时间流逝速度,会和幼年之后流逝的主观时间总和(而不是实际的时间总和)成比例。

!!! 理论三:我们扭曲时间,以免担心个不停

这项理论说明的是我们如何操纵自己对时间的感知,以此来改善心理健康,或是反过来屈服于死亡逼近的焦虑。

研究已经证实可以测量人对死亡的感觉。有个热门的办法,是让志愿者看一条直线,告诉他们,线的左手边代表他们出生的时间,右手边代表他们死亡的时间。接着要他们在线上标示出,认为自己目前所处的位置。如果预期的右手“死亡点”使用人寿保险公司所使用的信息来计算,就会得到一些有趣的结果。例如,女性做这个测试的准确程度比男性高,男性通常觉得自己离死亡比实际更遥远。此外,两性的年纪变大时,会开始认为我们和死亡的距离比实际遥远。其他研究甚至显示,人会主动调整自己对生命的认知,以免过度担心死亡。我们似乎把负面的记忆推向遥远的过去,预期中的负面事件则推向比实际发生时间更遥远的未来。

!!! 理论四:我们的记忆扭曲了,因此扭曲了时间

我们天生对刚刚发生的事件记得比较清楚,对事情发生的顺序,以及它们和其他近期事件的关联有着更清晰的认识。所以,我们对过去一两年有个清楚的时间架构,这段时间内发生的事都彼此吻合。但只要回忆那之前的事,相关记忆就逐渐变得支离破碎。我们虽然记得那些事,但常常必须借助技巧和辅助记忆,来厘清事件发生的先后次序。这种时间感知缺失的情形会造成一种错觉,让人觉得时间流逝的速度变快了。

我们会操纵记忆,那些记忆也会操纵我们,这点无疑是有道理的,而记忆是定义我们感知到的生命过程的主要依据。

!!! 理论五:新鲜事比较少

大家都有这种经验,第一次做某件事情,感觉比以后做花费的时间要漫长。例如,有人说他们身陷险境的时候,几分之一秒的时间会戏剧性地随着主观意识而夸张地延长。

!!! 理论六:我们拥有不少时钟,但正确运作的不多

这项理论是大多数科学研究的基础,关系到我们大脑内时钟的研究。

有明确的证据可以证明我们的大脑内有一些时钟,其中至少有一个非常准确。头脑的下层有个神经细胞的时钟回路,叫作“视交叉上核”(suprachiasmatic nucleus),它以相当规律的24小时为间隔运作——主要就是这个时钟,让我们的活动和睡眠模式按照每日的循环进行。例如,有一种突变的仓鼠,视交叉上核会用到的一个基因改变了,如果它那个改变了的基因是成对的,那么它的活动周期就会变成20小时。(神奇的是,如果只从双亲之一遗传到一个突变基因,那么它就会觉得一天有22小时。)至于我们怎么估算这些时间间隔,有项理论认为,我们脑中有其他不停走动的钟,这些钟类似视交叉上核的每日时钟,各个都由三个部分组成:一个“嘀嗒响的钟摆”、钟摆的计数器,还有记忆中过去经历的时段,这种记忆能让人比对计数的结果。另一项理论认为,我们没有特定的主观时钟,我们的时间感知比较笼统——只是累计计算大脑做了多少事,或是在一定时间里接收到了多少信息。

//2020年10月12日周一下午09:41:30//

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>

!! 进化观

对称,被证实标志着一个人(生物)拥有良好的健康状况,因而具有婚配价值。对一个生物体而言,一项重大的挑战在于它面临着去协调其数十亿细胞的制造,以保证其发展为一个对称的个体,从而能抵御疾病,避免伤害、基因突变和营养不良等不健康的状况。比如说,对称的女性乳房意味着有着良好的生育能力。我们的审美基因明白,对称标志着基因的健康,而不对称则让我们避而远之。
对称,意味着减少错误和复杂性。任何生物进化原则之一就是减少能量的消耗,事物的对称性形式,使人更容易被感知和预测,逐渐形成一种人类思维的无意识性倾向。

!! 审美观和科学阐述

逐渐形成的人类思维对对称性事物的无意识性倾向,形成了人类的审美观。这使得大自然中众多的对称事物被提出和赞美,从叶子到从鲜花,到水滴和雪花等(雪花的形状具有六重对称性,这是水分子属性和形状直接呈现的结果)。进而影响到形而上科学的审美,如数学之美,数学之美又反过来对大自然进行解释和阐述。正如柏拉图在其著作《蒂迈欧篇》(Timaeus)中所阐述的那样:“对称之美,尤其在物理定律的数学表达式中,不会像上面提到的那样在解释的过程中无疾而终。”他责怪,对可言传之美使用不进行任何阐释的方式,忽略了历史上很多因为坚持对称之美,得以引领实质性科学进步的事例。如果麦克斯韦没有在电磁学领域里锲而不舍地追寻数学的对称之美,他怎么能发现那4个电磁学方程式?如果爱因斯坦没有坚持数学之美,他又怎么能发现万有引力方程式?

潜移默化的对称性审美,也造成一种认知偏见,如电影中那些扭曲的脸、独眼龙、不平衡的眉毛等形象,一定被认为是个坏人;主角或好人必须有对称的面部特征。

著名数学家赫尔曼·魏尔(Hermann Weyl)的著作《对称》(Summetry),将众多奇思妙想的对称性事物转到了精准的科学研究上,他引入了“群论”的部分内容,将对称转换为一种强大工具的数学理论。魏尔概述了群论是如何能被用于解释晶体形状的:如果形状完全相同、边与边对齐、严丝合缝,什么形状可以用来镶嵌平面或填充空间?正方形、矩形、三角形、平行四边形还有六边形都能够做到。其它如五角形、七角形、八角形以及所有的正多边形,都无法做到严丝合缝地镶嵌平面或填充空间。1984年三位科学家发现了令人不解的具有正二十面体对称性的人造铝锰合金。正二十面体对称,具有6个5重对称轴,在晶体对称性方面被誉为是绝无仅有的形态。

对称的概念,也是物理学定律的一个中心特征。如果我们要研究空间-时间转化下的对称性定律,即这些定律适用于任何时间、任何地点,那么我们就不需要再为遥远宇宙的某处或不同历史时期推演出新定律,就能够让这个世界的程序简短精炼。如真实旋转对称的理论。

''Λ-Reading:''[[#37 为什么人类喜欢对称?|https://rizime.substack.com/p/1b8]]


<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=booklogsinfo/>


<<<
意大利作家卡尔维诺说:“经典作品是每次重读都像初读那样能带来发现的书;是即使我们初读也好像是在重温的书。”

诗人迪金森的解释:“如果我在阅读时感到浑身冰凉,甚至连火焰也不能使我的身子温暖,我知道,这就是诗歌;如果我在阅读时感到天灵盖被猛然掀开,这就是诗歌。”“如雷电积聚/然后轰鸣着崩溃/如果世间万物都被掩埋/这——就是诗歌。”
<<<



让我们先提出一些定义。

一、经典作品是那些你经常听人家说"我正在重读……"而不是"我正在读……"的书。

至少对那些被视为"博学"的人是如此;它不适用于年轻人,因为他们处于这样一种年龄: 他们接触世界和接触成为世界的一部分的经典作品之所以重要,恰恰是因为这是他们的最初接触。

代表反复的"重",放在动词"读"之前,对某些耻于承认未读过某部名著的人来说,可能代表着一种小小的虚伪。为了让他们放心,只要指出这点就够了,也即无论一个人在性格形成期阅读多么广泛,总还会有众多的重要作品未读。

任何人如果读过希罗多德和修昔底德的全部作品,请举手。圣西门又如何?还有雷斯枢机主教?即使是十九世纪那些伟大的系列小说,通常也是提及多于读过。在法国,他们开始在学校读巴尔扎克,而从各种版本的销量来判断,人们显然在学生时代结束后还在继续读他。但是,如果在意大利对巴尔扎克的受欢迎程度作一次正式调查,他的排名恐怕会很低。狄更斯在意大利的崇拜者是一小撮精英,他们一见面就开始回忆各种人物和片断,仿佛在谈论他们在现实生活中认识的人。米歇尔•布托多年前在美国教书时,人们老是向他问起左拉,令他烦不胜烦,因为他从未读过左拉,于是他下决心读整个《鲁贡玛卡家族》系列。他发现,它与他想像中的完全是两回事: 它竟是寓言般的、神话学式的系谱学和天体演化学,他后来曾在一篇精彩的文章中描述这个体系。

上述例子表明,在一个人完全成年时首次读一部伟大作品,是一种极大的乐趣,这种乐趣跟青少年时代非常不同(至于是否有更大乐趣则很难说)。在青少年时代,每一次阅读就像每一次经验,都会增添独特的滋味和意义;而在成熟的年龄,一个人会欣赏(或者说应该欣赏)更多的细节、层次和含义。因此,我们不妨尝试以其他方式。

二、经典作品是这样一些书,它们对读过并喜爱它们的人构成一种宝贵的经验;但是对那些保留这个机会,等到享受它们的最佳状态来临时才阅读它们的人,它们也仍然是一种丰富的经验。

因为实际情况是,我们年轻时所读的东西,往往价值不大,这又是因为我们没耐性、精神不能集中、缺乏阅读技能,或因为我们缺乏人生经验。这种青少年的阅读可能(也许同时)具有形成性格的作用,理由是它赋予我们未来的经验一种形式或形状,为这些经验提供模式,提供处理这些经验的手段,比较的措辞,把这些经验加以归类的方法,价值的衡量标准,美的范例: 这一切都继续在我们身上起作用,哪怕我们已差不多忘记或完全忘记我们年轻时所读的那本书。当我们在成熟时期重读这本书,我们就会重新发现那些现已构成我们内部机制的一部分的恒定事物,尽管我们已回忆不起它们从哪里来。这种作品有一个特殊效力,就是它本身可能会被忘记,却把种籽留在我们身上。我们现在可以给出这样的定义:

三、经典作品是一些产生某种特殊影响的书,它们要么自己以遗忘的方式给我们的想像力打下印记,要么乔装成个人或集体的无意识隐藏在深层记忆中。

基于这个理由,一个人的成年生活应有一段时间用于重新发现我们青少年时代读过的最重要作品。即使这些书依然如故(其实它们也随着历史角度的转换而改变),我们肯定已经改变了,因此后来这次接触也就是全新的。

所以,我们用动词"读"或动词"重读"也就不真的那么重要。事实上我们可以说:

四、一部经典作品是一本每次重读都好像初读那样带来发现的书。

五、一部经典作品是一本即使我们初读也好像是在重温我们以前读过的东西的书。

上述第四个定义可视为如下定义的必然结果:

六、一部经典作品是一本从不会耗尽它要向读者说的一切东西的书。

而第五个定义则隐含如下更复杂的方程式:

七、经典作品是这样一些书,它们带着以前的解释的特殊气氛走向我们,背后拖着它们经过文化或多种文化(或只是多种语言和风俗习惯)时留下的足迹。

这同时适用于古代和现代经典。如果我读《奥德赛》,我是在读荷马的文本,但我也不能忘记尤利西斯的历险在几个世纪以来所意味的一切事情,而我不能不怀疑这些意味究竟是隐含于原著文本中,还是后来逐渐增添、变形或扩充的。如果我读卡夫卡,我就会一边认可一边抗拒"卡夫卡式的"这个形容词的合法性,因为我们老是听见它被用于指称可以说任何事情。如果我读屠格涅夫的《父与子》或陀斯妥耶夫斯基的《恶魔》我就不能不思索这些书中的人物是如何继续一路转世投胎,一直到我们这个时代。

读一部经典作品还一定会令我们感到意外,当我们拿它与我们以前所想像的它比较。这就是为什么我们总要一再推荐读第一手文本,尽量避免二手书目、评论和其他解释。中学和大学都应加强这样一个想法,也即任何一本讨论另一本书的书,所说的都永远比不上被讨论的书;然而他们竭尽全力要让学生相信的,事实上恰恰相反。这里存在一种流行很广的价值的逆转,即是说,导言、批评机器和书目被用得像烟幕,遮蔽了文本在没有中间人的情况下必须说和只能说的东西 --而中间人总是宣称他们所知比文本自身还多。因此,我们可以总结:

八、一部经典作品是这样一部作品,它不断让周围制造一团批评话语的尘雾会,却总是把那些微粒抖掉。

一部经典作品不一定要教一些我们不知道的东西;有时候我们在一部经典作品中发现我们已知道或总以为我们已知道的东西,却没有料到那个经典文本早就说了(或那个想法与那个文本有一种特殊联系)。这种发现同时也是非常令人满足的意外,例如当我们弄清楚一个想法的来源,或它与某个文本的联系,或谁先说了,我们总会有这种感觉。综上所述,我们可以得出如下定义:

九、经典作品是这样一些书,我们越是道听途说,以为我们懂了,当我们实际读它们,我们就越是觉得它们独特、意想不到和新颖。

当然,发生这种情况通常是因为一部经典作品的文本"起到"一部经典作品的作用,即是说,它与读者建立一种个人关系。如果没有火花,这种做法就没有意义: 出于职责或敬意读经典作品是没用的,我们只应仅仅因为喜爱而读它们。除了在学校: 无论你愿不愿意,学校都要教你读一些经典作品,在这些作品当中(或通过把它们作为一个基准)你以后将辨别"你的"经典作品。学校有责任向你提供这些工具,使你可以作出你自己的决定;但是,只有那些你在学校教育之后或之外选择的东西才有价值。

只有在非强制的阅读中,你才会碰到将成为"你的"书的书。我认识一位出色的艺术史专家,一个极其广博的人,在他读过的所有著作中,他最喜欢《匹克威克外传》,他在任何讨论期间,都会引用狄更斯这本书的片断,并把他生命中每一个事件与匹克威克的生平联系起来。渐渐地,他本人、宇宙及其基本原理,都在一种完全认同的过程中,以《匹克威克外传》的面目呈现。如果我们沿着这条路走下去,我们就会形成对一部经典作品的想法,它既令人仰止又要求极高。

十、一部经典作品是这样一个名称,它用于形容任何一本表现整个宇宙的书,一本与古代护身符不相上下的书。

这样一个定义,使我们进一步接近关于那本无所不包的书的想法,马拉梅梦寐以求的那种书。但是一部经典作品也同样可以建立一种不是认同而是反对或对立的强有力关系。卢梭的所有思想和行动对我都十分亲切,但是它们在我身上催发一种要抗拒他、要批评他、要与他辩论的无可抑制的迫切感。当然,这跟我觉得他的人格与我的性情难以相容这一事实有关,但是,如果这么简单的话,则我避免读他就行了;事实是,我不能不把他看成我的作者之一。所以,我要说:

十一、"你的"经典作品是这样一本书,它使你不能对它保持不闻不问,它帮助你在与它的关系中甚至在反对它的过程中确立你自己。

我不相信需要为我使用"经典"这个名称辩解,我这里不用古代、风格和权威等字眼来区分。(关于这个名称的上述种种意义的历史,弗朗哥•福尔蒂尼为《伊诺第百科全书》第三册撰写的"经典"条目有极详尽的阐述。)基于我这个看法,一部经典作品的不同之处,也许仅仅是我们从一部不管是古代还是现代、但在一种文化延续性之中有它自己的位置的作品那里所感到的某种共鸣。我们可以说:

十二、一部经典作品是一部早于其他经典作品的作品;但是那些先读过其他经典作品的人,一下子就认出它在众多经典作品的系谱图中的位置。

至此,我再也不能搁置一个关键问题,也即如何协调阅读经典与阅读其他一切不是经典的文本之间的关系。这个问题与其他问题有关,例如: "为什么要读经典作品,而不是读那些使我们对自己的时代有更深了解的作品?"和"我们哪里有时间和闲情去读经典作品?我们已被有关现在的各类印刷品的洪水淹没了。"

//作者:伊塔洛.卡尔维诺//

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
这段时间懒癌再犯,积压了许多篇读书笔记。得治!

[[上篇结尾提到胡适与毛泽东|2018年06月02日周六下午09:35:58]]。胡适比毛泽东大两岁,可谓同龄人,但二人的开始和结局确非常的不同。二人的际遇发生在北大。1918年,24岁的布衣青年毛泽东,在他的湖南第一师范的老师后到北大当教授的杨昌济(杨开慧父亲,毛泽东岳父)的引荐下,走进北京大学找工作。青涩而又局促不安的毛泽东告诉李大钊:


<<<
“干什么粗活儿都行,既可得工资,又可抽空听些课。”

李大钊听罢,笑了:“堂堂师范高才生,干粗活儿,大材小用了。”

李大钊带毛泽东去见蔡元培.......

毛泽东推开门,见名扬海内的蔡校长,正伏案批阅文件,听见开门声,抬起眼微笑地目视他。那目光是宽厚仁慈和睿智的。毛泽东走向前,深深地向校长行了大礼,那一刻,他的心充满了敬畏。

毛泽东想了想,告诉蔡先生:几个月前的1918年4月14日,他和蔡和森、何叔衡等年轻人,在长沙创立了以“改造中国和世界”为宗旨的革命团体新民学会。新民学会成立不久,一些有抱负的年轻会员,怀着向西方寻找真理的愿望,响应蔡校长、吴玉章在北京发起的号召,积极组织到法国勤工俭学。

毛泽东一口湖南腔,蔡元培认真耐心地倾听,渐渐眼中流泻出欣赏赞叹的神色。他插话问,那为什么你不去法国勤工俭学呢?

毛泽东是这样解释的:有人到外国去,看些新东西,学些新道理,研究些有用的新学问,拿回来改造我们的国家,是极为必要的。而同时,也要有人留在国内,研究本国问题。我觉得关于自己的国家,我知之甚少,假若我把时间花费在国内,研究问题,可能对本国更为有利。

蔡元培不住地点头,他记住了这位高大的布衣青年,于是抻出一张八行笺,写下他对这位年轻人的安排:


守常先生大鉴:

毛泽东欲在本校谋一半工半读工作,请设法在图书馆安置一个书记的职位,负责整理图书和清扫房间,月薪八元。

蔡元培即日


毛泽东接过来看时,眼泪突然涌出眼眶……

上面的叙述,是主流媒体的统一叙述。胡适以亲身经历,颠覆了这个重要历史细节。
<<<

默默无闻而又羞涩的青年毛泽东进入北大之时,胡适已经以北大第一位洋博士身份在北大任职一年,在《新青年》上发表《文学改良刍议》,成为新文化运动的核心人物。二者的地位和见识非常悬殊。而此时毛泽东对胡适的态度是怎么样那?

1959年,已经迁居台湾的胡适在家中与秘书胡颂平的对话是这样的:


<<<
胡颂平问:毛泽东到北大图书馆工作,是他老泰山杨昌济举荐的吗?胡适说:“不是,毛泽东湖南师范毕业后到了北平,他和五位青年上书与我,这封信,我是交给竹淼生的弟弟竹生保管的。在抗战期间,放在上海。竹生怕生事,把它烧了。当时的北京有个工读辅助会,毛泽东先在辅助会工读,很苦。”胡颂平就问,是否先生介绍他入图书馆的?胡适说:“不,当时章行严(章士钊)当北大图书馆馆长,李大钊当主任。章士钊是湖南人,大概是章和李大钊两人把毛泽东介绍进去的。”
<<<

胡适的话似乎是可信的,因为涉及第三人物众多,可佐证。为什么毛泽东会掩盖这样一个事实那?尚无可靠。

<<<
毛泽东比胡适小两岁。早在毛泽东就读湖南师范学校时,胡适因积极投身新文化运动,开创文学革命而声名鹊起,就成为毛泽东钦佩的楷模。此次到北大图书馆工作,毛泽东曾多次去旁听胡适的课。后来,毛泽东与萧三等人经杨昌济先生介绍,专程去拜访过胡适,同胡适讨论新思潮、新文化运动等问题。并且以新民学会在京会友的名义,请胡适做过报告,解答过新文化运动的问题。这也是后来''毛泽东一度称自己是胡适的学生的由来。可惜,后来人们把这一重要历史细节有意地隐匿了。''

<<<
<<<

1920年1月15日,在胡适的日记中有这样的记载:“毛泽东来谈湖南事。”当时毛泽东在北京酝酿筹备湖南“工友互助团”,为得到社会名流的支持,他去找胡适,就办学的目的与计划请教于胡适。胡适在后来的日记中,追忆了此事:“毛泽东依据我在1920年的‘一个自修大学’的讲演,拟成湖南第一自修大学章程,拿到我家来,要我审定改正。他说,他要回长沙去,用船山学社作为‘自修大学’的地址。过了几天,他来家取章程改稿。不久,他就回去了。”毛泽东在给周世钊的信中,证实了胡适日记的真实性。

<<<

在毛泽东离开北大之后,胡适一如既往的对毛泽东支持。


<<<
1919年7月14日,毛泽东在长沙创办《湘江评论》并发表《民众大联合》。胡适阅后,立即转载在8月24日的《每周评论》第三十六号上。并在《新书》评价一栏中,亲自撰文,热情洋溢地肯定了《湘江评论》与《民众大联合》
<<<

有了胡适的热情支持,毛泽东早期的革命活动才开展得有声有色。

<<<
1920年4月,毛泽东领导的“驱张”(驱逐湖南督军张敬尧)运动,最终取得胜利。毛泽东立即将这一消息告诉胡适,信中写道:

适之先生:

在沪上一信,达到了吗?我前天返湘。湘自张去,气象一新,
胡适从前很少著文参与政治与时局的讨论,并说“二十年不谈政治,二十年不干政治”,胡适的不谈政治,政治却将他推向了政治的旋涡。教育界颇有蓬勃之象,将来湖南有多点须''借重先生'',俟时机到,当详细奉商。暂不多赘。
<<<

直到1936年,毛泽东在延安时还对斯诺说:“我非常钦佩胡适和陈独秀的文章。他们代替了已经被我抛弃的梁启超和康有为,一时成了我的楷模。”

毛泽东执政多年后,也就是1954年10月16日,因毛泽东发表他那封著名的《关于〈红楼梦〉研究问题的信》,毛泽东与胡适昔日师生和睦的关系,彻底改变了。信中说:“看样子,这反对在古典文学领域毒害青年三十余年的胡适派资产阶级唯心论的斗争,也许可以开展起来了。”

<<<
12月1日,毛泽东命周扬搞一个批判胡适的计划;2日,周扬奉命将计划呈毛泽东;3日毛泽东批示:照此办理。于是全党、整个文化界开展了一场声势浩大、波澜壮阔的批胡适资产阶级唯心论的政治斗争。郭沫若、茅盾、陈垣等闻风而动,批判文章铺天盖地。但茅盾和陈垣等人的批判文章,只有批判、没有研究的批判,并无新意,也毫无战斗力。从中,不仅可以看到为了自保而违心地批判胡适的言不由衷,又可看到全国知识分子经历了一场怎样深刻的心理革命。那是一个文人需出卖灵魂方能自保的特殊年代。
<<<

根据耿云志后来的说法是([[参见|http://news.ifeng.com/history/zhongguojindaishi/detail_2012_02/24/12753412_0.shtml]]):

<<<
“这句话我想是他一生里,讲的最有失绅士风度的一句话,他(胡适)说按照毛泽东当时的水平他考北大是考不上的,我估计这个话有可能传到毛泽东的耳朵里,所以毛泽东非常决断地发动一场全国规模的彻底批判胡适的运动。”
<<<

胡适以温文尔雅,谦虚有礼的学术派著称。胡适很少著文参与政治与时局的讨论,并说“二十年不谈政治,二十年不干政治”,他的著名文章《多研究些问题,少谈些主义》可见他的学术做派和主张。就在大陆大肆批评胡适的时候,胡适很认真的把搜集来的批判他的八本书做了批注(三联出版社出版的《胡适思想批判论文汇编》),并响应说:

<<<
“我觉得世界上二、三百年来有一种公开的趋向,朝科学民主这个方向上走,朝新的科学方法走,那时候我朋友陈独秀在《新青年》上发表文章拥护‘德’先生和‘赛’先生,我表示过这样的话,把这个抽象名词人格化,把它看作人,最容易错误的,容易人格化。容易人格化,也就容易偶像化,偶像化了,便会盲目崇拜……当时我朋友陈独秀只认得两个名词,不知道科学是一个方法,民主是一种生活习惯,是一种生活方式。”
<<<

对胡适来说讽刺的是,胡适的不谈政治,政治却一生环绕在他周围赶不走,跑不掉。气量狭窄的毛泽东对恩师痛下绝、毒手,批判他为“资产阶级唯心论”总代表、蒋介石的御用文人及走狗胡适的时候。而在台湾的蒋介石,也把胡适作为公敌来攻击,他在日记中说:“以今日一般政客如胡适等,无道义,无人格,只卖其‘自由’‘民主’的假名,以提高其地位,期达其私欲,对国家前途与实施概置不顾,令人悲叹。”

在《[[民国清流:那些远去的大师们]]》中,作者这样写下总结:

<<<
海峡两岸,两种对立的社会制度,敌对的意识形态,冤家对头的毛泽东和蒋介石,对一个不识相且不为时所用的文化人胡适,却同仇敌忾,相互策应,大动干戈,实为历史所罕见,不仅充满悖论,又意味深长,或正因如此,方显承受误会和扭曲的胡适的思想、文化价值。

舞榭歌台,风流总被雨打风吹去,但作为中国现代思想史上巨擘的胡适,将是历史永恒的话题。
<<<

一名大儒的时代命运就是这样被政治所左右而飘渺。

文人,不为当权所用,即弃之如毕履。

这也是中国历史上的文人命运的缩影。

2018年06月06日周三下午11:27:40
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$list filter="[field:topic[文言津逮]] [field:series[古籍]] [field:genre[古代文学]] [field:series[文言津逮]]+[!sort[created]]">

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link> @@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> @@   - <$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/>  
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>


<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>









<$transclude mode="block" tiddler=bookinfo/>
新增了一个宏(参见[[GeneralMacros]]),实现了几种折叠式展示:

! 嵌入式

```
  <<textSliderNoButton "''您最近还好吗?''" "Click the black {{Coze}} icon in the top menu and it will open the help page any time.">>
```
  <<textSliderNoButton "''您最近还好吗?''" "Click the black {{Coze}} icon in the top menu and it will open the help page any time.">>

或:

```
<<textSliderNoButton 作者 "{{Coze}}">>
```
<<textSliderNoButton 作者 "{{Coze}}">>

<<textSliderNoButton 关注微信公众号 {{Wechat}}>>


! 调用式

```
<<tiddlerSliderNoButton Coze>>
```

<<tiddlerSliderNoButton Coze>>
!! 按钮式

<<tiddlerSlider Coze>>

!!图片式


```
<<imageSlider  [[http://zove.me/img/Duck_of_Vaucanson.jpg]]    "您好阿鸭子">>
```

<<imageSlider  [[http://zove.me/img/Duck_of_Vaucanson.jpg]]    "您好阿鸭子">>

!!田字式(参见[[slider]])

```
{{Jerry||slider}}
```
{{Jerry||slider}}

2017年12月06日上午12:32:29

类似用法:[[2017年12月06日 上午 12:11:14]] + [[2017年12月06日 上午 12:16:56]]
[[我书架上的神明]]中百位知识分子“秘密书架”整理如下。可以这么说,以下书籍是这百位知识分子的学术基础,夸张一点说,正是因为这些大作的存在,才有了这些后人的学术成就,或是给了后人学术的奠基,或成为后人学术的指路明灯,或给后人以醍醐灌顶的启发。更甚者,正如书中一位作者所说:

<<<
“每种学科的重要著作是很少的,其他著作不过是把这少数著作里说得更充分而清楚的话加以重复、冲淡和损害罢了……”
<<<

对于我辈民间读书者,看这个书单多少也能看出也许端倪来。除了自然科学,社会科学领域并无多么深不可测而至于对之顶礼膜拜,而那些真正的文思哲经大神并不常有,几十上百年才会有那么一小撮,其它的无非是对这些大神大作枝枝蔓蔓的解读和再探究,有一部分甚至是在装神弄鬼、故弄玄虚、东施效颦和沽名钓誉。 只要您在某方面有兴趣,并具有一定的基础阅读(下面的书或某一领域的奠基之作),您也可以成为民间学者。

//(注:排名不代表权重,仅为整理时间,所列书目仅为书中被大部分人所提到的,并非全部。)//

<$button>
<$action-setfield accordion1="open" accordion2="open" accordion3="open" accordion4="open" accordion5="open"/>
Open all
</$button> | 
<$button>
<$action-setfield accordion1="close" accordion2="close" accordion3="close" accordion4="close" accordion5="close" />
Close all
</$button>

<$details summary="文化·文学 领域" class="notification" state="!!accordion1">


# 	《红楼梦》
# 	《金瓶梅》
# 	《三国演义》
# 	《唐诗三百首》
# 	《论小说与小说家》伍尔芙
# 	《约伯记》
# 	《卡拉马佐夫兄弟》[俄]  陀思妥耶夫斯
# 	《罪与罚》 [俄] 费奥多尔·陀思妥耶夫斯基 
# 	《老人与海》 [美]海明威
# 	《生命中不能承受之轻》[法]昆德拉著
# 	《约翰·克利斯朵夫》 [法]罗曼·罗兰著
# 	《战争与和平》 《安娜·卡列尼娜》托尔斯泰
# 	《钢铁是怎样炼成的》,[苏]奥斯特洛夫斯基
# 	《牛虻》 [英]伏尼契
# 	《悲惨世界》雨果
# 	《红与黑》 [法]司汤达
# 	《管锥编》 钱钟书
# 	  《中国文化要义》梁漱溟
# 	《愤怒的葡萄》 [美]斯坦培克 
# 	《美丽新世界》 [英]赫胥黎著
# 	《麦田里的守望者》[美]塞林格
# 	《蝇王》戈尔丁 
# 	 《混乱的图书馆》 博尔赫斯
# 	 《寻找家园》高尔泰
# 	鲁迅全集
# 	汪曾祺全集
# 	王朔作品
# 	金庸作品
# 	王小波作品
#      还珠楼主作品
</$details>



<$details summary="思想·哲学 领域" class="success" state="!!accordion2">

# 	孟子著作
# 	老子著作
# 	孔子著作
# 	《宗教哲学》 [英]约翰·希克著
# 	《西方哲学史》 罗素
# 	《哲学主义的历史》 雷戈
# 	《圣经》
# 	《哲学研究》  [奥地利] 路德维希·维特根斯坦 
# 	《逻辑哲学论》 [奥地利] 路德维希·维特根斯坦 
# 	《忏悔录》卢梭
# 	《中国哲学简史》冯友兰
# 	《逻辑学》 黑格尔
#      《哲学主义的历史》 雷戈
</$details>


<$details summary="美学·艺术 领域" class="warning" state="!!accordion3">

# 《艺术的故事》[英]贡布里希著
# 《美学历程》李泽厚 
#《艺术哲学》 [法]丹纳著,傅雷译 

</$details>

<$details summary="历史 领域" state="!!accordion4">

# 《史记》司马迁
# 《历史的观念》 [英]柯林武德(R. G. Collingwood)
# 《历史学的理论和实际》 贝奈戴托·克罗齐(Benedetto Croce)
# 《史学家:历史神话的终结者》 埃里克·霍布斯鲍姆(Eric Hobsbawm)
# 《历史研究》 [英]汤因比 
# 《中国历代政治得失》 钱穆
# 《国史大纲》 钱穆
# 《历史的起源与目标》 [德]雅斯贝斯 
# 《菲利普二世时代的地中海和地中海世界》 [法] 费尔南·布罗代尔 
# 《万历十五年》黄仁宇
# 《柳如是别传》陈寅恪
# 《中国史学名著》钱穆
# 《历史与思想》 余英时
#《中国古代思想史论》/《中国现代思想史论》 李泽厚

</$details>

<$details summary="社科 · 政经
 领域" class="notification" state="!!accordion5">

# 	《乡土中国》 费孝通
# 	《社会契约论》 卢梭
# 	《论美国的民主》托克维尔
# 	《当知识分子遇上政治》 马克•里拉
# 	《论美国的民主》托克维尔
# 	《20世纪的两位知识分子:萨特与阿隆》 法· 西里奈利
# 	《鲁莽的心灵:政治中的知识分子》 美 ·里拉
# 	《通往奴役之路》 哈耶克
# 	《所谓的知识分子》 保羅.約翰遜
# 	《资本论》 马克思
# 	《光荣与梦想》  [美] 威廉·曼彻斯特 
# 	《旧制度与大革命》[法]托克维尔
# 	《存在的勇气》 [美] 保罗·蒂利希
# 	 《反抗死亡》贝克尔
# 	《基督新教的伦理与资本主义精神》 [德]马克斯·韦伯 
# 	《自私的基因》  [英]理查德·道金斯
# 	《文明的冲突与世界秩序的重建》 [美] 塞缪尔·亨廷顿
# 	《一九八四》  [英] 乔治·奥威尔
# 	《动物农场》 [英]乔治·奥威尔
# 	《自由选择》 [美]弗里德曼夫妇
# 	《卖桔者言》 张五常
# 	《国富论》 [英]亚当·斯密
# 	 《经济解释》张五常
#       《毛泽东选集》

</$details>

<$button>
<$action-setfield accordion1="open" accordion2="open" accordion3="open" accordion4="open" accordion5="open"/>
Open all
</$button> | 
<$button>
<$action-setfield accordion1="close" accordion2="close" accordion3="close" accordion4="close" accordion5="close" />
Close all
</$button>

(待补)
''我的应许之地:流浪放逐的犹太人''

世界上有两个流浪民族,吉普赛人(又称波希米亚人)和犹太人。但又是两种截然不同的流浪,前者是具有浪漫情怀的逐食而居,驾着大篷车载歌载舞;后者是血和泪的苦难放逐,伴着的却是驱赶和屠杀。犹太人一遭放逐就是上千年!就像浮萍,随波而流,千年来不停的寻找着可以生根发芽的应许之地。
《我的应许之地》,就是以色列作家阿里•沙维特通过记述家族的苦奈历史,展现了犹太人的苦难放逐和寻找应许之地的自我救赎历史。

> 这本书讲述一个以色列人的个人旅程,他因经历席卷家乡的、戏剧性的历史进程而陷入深深迷惘。跨越时间和空间,这是一个土生土长的以色列人对国家更广泛意义的探索。通过家族历史、个人历史,以及深度访谈,我试图描述以色列的大历史,解决更深层次的以色列问题。一个世纪以来,我的国家发生了什么,让我们处于现在的境地?是什么导致了这一切?我们做错了什么?我们将走向何方?我深深的焦虑是否有根据?我们的犹太国家是否真正处于险境?以色列人是否陷入了绝望的悲剧?我们是否能复兴和救赎自我,挽救我们深爱的土地?

而对我这个东方大民族人来说,在我对犹太历史有限的了解情况下,我知道犹太人是一个优秀而又聪明的人类族群,出现了诸多影响人类的明星人物,诸如门德尔松、马克思、弗洛伊德、马勒、卡夫卡以及爱因斯坦。这些犹太人的思想,几百年来,对现代欧洲乃至世界产生了至关重要的作用。和作者阿里•沙维特不同,我想弄清楚为什么在这个星球上却没有他们的生存之地?是宗教原因?民族主义?国家主义?在犹太人寻找自我救赎过程中,这个族群表现出了什么优秀的人类品质?我的应许之地之于国家,对一个族群来说有多重要?国家主义和民族主义又如何平衡?人类何以不能杂居?......// 2017.7.5//

<<<
”德里详细解释道,“东方犹太人的文化建立在三个支柱上:社区、会所以及父权。父亲是非常强大的——太强大了。他是支撑整个家庭的人,是整个家庭的王。他告诉他的妻子应该做什么。他告诉他的孩子学习什么、如何为人处事。即便在现代化的时代,即便受到了法国人和英国人的影响,父亲和拉比仍然保持着主导地位。宗教、传统和父权,使东方犹太人得以保存并延续1 000年。我们没有经历欧洲风格的世俗化。我们没有经历西方的启蒙运动以及宗教反抗运动。我们过着宗教、传统以及初始现代化相融合的生活。我们仰望拉比,敬畏父亲,这样,我们才以一个社群的形式幸存下来。”
<<<

<<<
“然后开始了灭绝行动(Actions)。隔离区被分阶段清理,每一次是不同的捕杀。我记得我们自己被追捕的情形。母亲、艾达和我在一个类似岩洞的地洞里躲了三天,其他几个人和我们躲在一起。与此同时,外面的隔离区正进行着大捕杀。我从一道地缝里窥见那场捕杀。我看见男人们被枪杀,孩子们被枪杀。我是一个躲在地底下的六岁的孩子,而我透过一条缝看见别的藏在树顶的孩子被开枪杀死并掉在地上。 “我根本不能用言语描述我的情感。我成长在一个井然有序的世界,一个殷实的欧洲中产阶级的家庭。然后,五年的极乐之后,一夜之间,整个世界轰然坍塌。我们的神圣被践踏了。我们的自然守则被颠覆了。而这一切都发生在隔日之间。在隔离区,一个人失去了他的人权基础,以及他的身份。他不再是人,我不再是人。而在这个坍塌之后的世界,想要生存下去便要付出全部的代价。 “第一次行动过后又来了第二次。那是一个炎热的夏天,德国人又开始捕杀犹太人。那是一场真正的捕猎,就像猎狐狸或者猎兔子一样。然后命令下来说没有工作许可的人都要在隔离区一个指定的地点集合。我的母亲和姐姐去了。我记忆中,这仿佛是昨天发生的事。我记得,我的姐姐跟妈妈说:我们还年轻,我们会找到工作,我们会活下去的。她们知道,她们要离开我了。她们知道,只有上帝知道会发生什么。但是,她们不想吓着我。而且,她们也心存盼望。她们相信她们会回来,而我也一样。我甚至没想过她们不能回来,或者,我会再也见不到她们。她们拥抱我,亲吻我,把我留给我的婶婶。我看着她们离开,越走越远,越变越小。 “我的婶婶拼尽全力弥补母亲的缺失给我留下的遗憾。我的叔叔极其足智多谋,他把我们从隔离区中救了出来。尽管叔叔婶婶努力地安慰我,但是,从母亲和姐姐离开的那一瞬间,我就是独自一人了。从7岁开始,我没有跟任何人谈心。我知道,我必须靠自己活下去。虽然我只是个孩子,我知道,我不能依靠任何人,无法向任何人求助。这是一种完全孤独的生活。 “在接下来的几个月里发生了奇迹般的事情。我的叔叔在里沃夫找到一位房主,他曾经是波兰军官,愿意帮助犹太人。在波兰当时糟糕的反犹太气氛下,这个概率是1%。还有一个工人阶级的家庭也帮助了我们,这两个家庭救了我们。我们伪造的证件上说我们是雅利安人,是波兰的天主教徒。所以,我们没有被捕,婶婶还教了我天主教的故事及祷告词。至关重要的是让邻居们看到我们像天主教徒一样地生活。渐渐地,这不再是一个伪装。我喜欢上了这一切:复活节,圣诞节,圣诞礼物。耶稣的故事,马利亚的塑像。天主教教义一种精神支柱。你不需要像犹太人或者新教徒一样独自奋战。耶稣为你而牺牲了他自己,而玛利亚时时刻刻为你守望,你求她来拯救你。而当身为孩子的你处在一场惨绝人寰的战争中,身边是一场大屠杀,你的父亲死了,你的母亲也死了,这时候,你非常容易被引诱相信这一切,你希望这会拯救你。你会跪在圣坛前,说着每一个天主教孩子说的话。 “战后波兰的反犹太主义十分可怕。尽管纳粹不在了,你仍然能够在每条街道的拐角处嗅到对犹太人的痛恨。我记得一个女人对犹太人叫嚷着:‘渣滓!你们从洞穴里出来啦,真可惜希特勒没把你们赶尽杀绝。’我记得,从集中营里返回的犹太人隐藏他们的身份,一旦被曝光,他们就被诅咒和暴打。不断传来谣言说战后还会有大屠杀。真是再明显不过了:犹太人在波兰没有未来。在经历过这一切,目睹一切之后,我们知道,我们再也不能做犹太人了。我们必须更换我们那旧的、被咒诅的身份。

//( {{!!modified}})//
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>

这是梁文道的“我读”系列之一。读这一系列书最大读收获莫过于了解一些书并发现“好书”。如此本,收入囊中要读的有《[[回家记]]》、《[[尽头]]》和《[[寻找·苏慧廉]]》。
四年一届的世界杯狂欢已经进入四强决赛阶段。跟着看了几场 --- 我不是严格意义上的球迷,渐入佳境,看出不少门外汉的道理。

世界杯的冷门和进化。尽管平时不怎么看球,对一些老牌球队和球星还是耳熟能详,例如德国、巴西;C罗、内马尔。然后这届世界杯一些老牌早早的收拾行李回家了,德国对未能进入八强赛,巴西也未能进入四强赛。这不免让这些球队的球迷失望和流泪,我作为一位外围观赛者 --- 这个词形容我比较合适 --- 看到的却是一些年轻球队的表现和成绩,例如平均年龄偏小的法国队,还有日本队。这或许就是自然规律,如果换句互联网界常用的话,这就是消费升级。不破不立,不立不破。

民族主义和全球性。看台上山呼海啸的呐喊助威,黯然伤神的悲伤眼泪,进球的一刻淋漓尽致的表现了足球的民族性一面。不管遥远的非洲小国,还是欧洲中心的老牌帝国,这一刻都被小小的一颗圆球凝聚起来,没有人组织,也没有人煽动,完全是一种无政府主义的民族性。而联赛确是另外一种形态,少了民族性,是一种完全的世界性。

足球之所以好看。这个问题可能有不同的看法,准球迷可能更多关注地是比赛本身或球星,是一种沉浸式的娱乐。几场球跟着看下来,吸引我的是足球的对抗的战术性、赛场风云变化的知与未知。博弈的最终目的是胜出,而博弈的策略则是迷人的,个人和团体、协作与对抗、进攻和防疫,体力和智力、生理和心理,这一对对的矛盾共同体,怎么才能在规定的时间博弈胜出,可能是人类除了生与死的博弈之外,足球是最理想的博弈试验场了。

足球和中国足球。足球分两种:足球和中国足球。

//2018年07月08日周日下午03:56:53//

量变质变和阴谋论。 任何量变到一定程度一定引起质变。四年一届的世界杯应该是在这十几天内参与人最多的世界性事件,这无疑蕴含着巨大经济价值,所以就有了博彩或者说赌球。上面我提到世界杯好看的一个原因是充满了知与未知,也就是具有一定的变数,这就给赌球者提供了足够的想象空间。还从量变到质变的角度思考,当一场比赛参与赌球的资金额足够大的时候,一定引起足球比赛本身的质变,庄家一定干预结果,也就是我们所说的黑幕。例如德国和巴西这两个老牌球队爆冷出局,我们从阴谋论的角度考虑,事实也是可以理解的。


2018年07月09日周一下午04:16:10
今天把鲁迅和莫言部分看完了。虽说二人生在不同时代,但异同不殊。

也许把二人不能相提并论,但既然遇到了也不自觉的又了比较。

鲁迅和莫言皆出身贫寒,或者说出生在家道没落时期。鲁迅家里原为绍兴鲁镇富农,诗书耕读之家,祖父乃七品京官,后家境逐败,周氏子孙卖房卖地度日,家族七零八落一派败家之象,所以才有了鲁迅走出家门,急切的想脱离鲁镇。鲁迅笔下的鲁镇和小说里以鲁镇乡人为原型的小说人物,除了三味书屋、乌篷船和少年闰土点滴儿时美好记忆,更多的是奴性、麻木和愚昧。莫言祖上也颇殷实,被划分为中农,继而被划分为富农,从此也日渐日子贫寒和地位卑贱,读书不得,当兵不得,迫使莫言走出去矢志不移的决心和努力。莫言作品的内容大多也取材之他走出去的那片土地--- --- 高密东北乡,尽管莫言以魔幻笔法书写,但原型皆乡土乡亲,内容到处充满了疾苦、饥饿和卑微。鲁迅和莫言的成长小环境决定了其作品主题和人物秉性。

而二者的大环境迥异,决定了其作品的高度和历史价值和地位。鲁迅的年代是自由的,思想肆意漫长的时代,国家处在新旧交替之际、世界处在分化和殖民时期。思想和主义滋生的温床给了鲁迅探究新旧中国救亡图存的空间,维新和革命的震荡给了鲁迅以笔为刀的阵地,站在时代的十字路口,“彷徨”和“呐喊”的力量成为了那个时代的最强音。而带着饥饿和卑微走出去的莫言,只为了探究一条吃饱饭有出息的路,在党和国家军队体制下的他,什么都没有的人唯有想象力促成的写作才是一条成本最低的捷径,当然这个想象力也需要划定一个圈--- --- 体制允许之内,这是时代的紧箍咒,这也是莫言获得诺贝尔文学奖受到不啻和争议之处,是他作品高度的天花板。莫言得知获奖消息的当天有记者问他最想做什么,莫言说“我想吃顿饺子”。也许是莫言幽默之词,也不妨可以说成是“我们吃顿饺子来庆祝吧”。

2018年02月05日周一下午11:18:11
经历平发捻叛乱,李鸿章上位,成为朝野中坚,继而推洋务以维新,建立北洋水师、兴造实业。甲午年一场中日海战又使李鸿章陷入一次内外交困漩涡,内承失责诽谤之议,外抗侵华扰华之压。成亦李,败亦李。梁启超如下总结其过:

<<<
平心论之,李鸿章诚有不能辞其咎者,其始误劝朝鲜与外国立约,昧于公法,咎一;既许立约,默认其自主,而复以兵干涉其内乱,授人口实,咎二;日本既调兵,势固有进无退,而不察先机,辄欲倚赖他国调停,致误时日,咎三;聂士成请乘日军未集之时,以兵直捣韩城以制敌而不能用,咎四;高升事未起之前,丁汝昌请以北洋海军先鏖敌舰,而不能用,遂令反客为主,敌坐大而我愈危,综其原因,皆由不欲衅自我开,以为外交之道应尔,而不知当甲午五六月间,中日早成敌国,而非友邦矣,误以交邻之道施诸兵机,咎五;鸿章将自解曰:量我兵力不足以敌日本,故惮于发难也。虽然,身任北洋整军经武二十年,何以不能一战?咎六;彼又将自解曰:政府掣肘,经费不足也。虽然,此不过不能扩充已耳,何以其所现有者,如叶志超、卫汝贵诸军,素以久练著名,亦脆弱乃尔,且克减口粮盗掠民妇之事,时有所闻,乃并纪律而无之也,咎七;枪或苦窳,弹或赝物,弹不对枪,药不随械,谓从前管军械局之人皆廉明,谁能信之,咎八;平壤之役,军无统帅,此兵家所忌,李乃蹈之,咎九;始终坐待敌攻,致于人而不能致人,畏敌如虎,咎十;海军不知用快船快炮,咎十一;旅顺天险,西人谓以数百兵守之,粮食苟足,三年不能破,乃委之于所亲昵阘冗恇怯之人,闻风先遁,咎十二。此皆可以为李鸿章罪者。
<<<

然梁启超也给出了甲午之败真正的原因:

<<<
吾于中日之役,固一毫不能为李淮恕也,然特患夫虚憍嚣张之徒,毫无责任,而立于他人之背后,摭其短长以为快谈,而迄未尝思所以易彼之道,盖此辈实亡国之利器也。李固可责,而彼辈又岂能责李之人哉?
<<<

对此种败象,最典型的例子:

<<<
乃至最可笑者,刘公岛降舰之役,当事者致书日军,求放还广丙一舰,书中谓此舰系属广东,此次战役,与广东无涉云云。各国闻者,莫不笑之,而不知此语实代表各省疆臣之思想者也。若是乎,日本果真与李鸿章一人战也。以一人而战一国,合肥合肥,虽败亦豪哉!
<<<

唯是,西方媒体则有“日本非与中国战,实与李鸿章一人战耳”之评论。

甲午之后,李鸿章本可激流勇退,可当时清朝已经完全陷入群狼之围,李又不得不担起外交之任,合纵连横,以图救大清存亡之大义。梁启超对李之外交的评价:

<<<
李鸿章之外交术,在中国诚为第一流矣,而置之世界,则瞠乎其后也。李鸿章之手段,专以联某国制某国为主。而所谓联者,又非平时而结之,不过临时而嗾之,盖有一种战国策之思想,横于胸中焉。观其于法越之役,则欲嗾英德以制法;于中日之役,则欲嗾俄英以制日;于胶州之役,则又欲嗾俄英法以制德。卒之未尝一收其效,而往往因此之故,所失滋多。胶州、旅顺、大连、威海卫、广州湾、九龙之事,不得不谓此政策为之厉阶也。
<<<

按住葫芦起来瓢。在一朝之末世,力挽狂澜,济世救国,非一人之力能为之。李之外交结果尽管悲惨,可李可谓是呕心沥血,直到生命在最后一刻尚与俄罗斯周旋。

<<<
至是而李鸿章病且殆矣。鸿章以八十高年,久经患难,今当垂暮,复遭此变,忧郁积劳,已乖常度。本年以来,肝疾增剧,时有盛怒,或如病狂,及加以俄使,助天为虐,恫喝催促,于邑难堪,及闻徐寿朋之死,拊心呕血,遂以大渐,以光绪二十七年九月廿七日薨于京师之贤良寺。闻薨之前一点钟,俄使尚来催促画押云。卒之此约未定,今以付诸庆亲王、王文韶。临终未尝口及家事,惟切齿曰:可恨毓贤误国至此。既而又长吁曰:两宫不肯回銮。遂瞑焉长逝,享年七十八岁。
<<<

清国乱世依然,而李亦长辞。盖棺而论定,梁启超给李鸿章的最后评价是:

<<<
吾欲以两言论断之日曰:不学无术,不敢破格,是其所短也;不避劳苦,不畏谤言,是其所长也。呜呼!李鸿章往矣,而天下多难,将更有甚于李鸿章时代者,后之君子,何以待之?
<<<

虽然梁启超给了李鸿章很中肯的评价,但同时也给出了一个客观的分析,在清末强弩之末之末世,而李鸿章又是在野朝官中最有行动力之人,李鸿章虽然不是最好的,可是没有了李鸿章在当时可能会更糟。所以,梁启超才有了那著名的诗句:

<<<
九州生气恃风雷,万马齐喑究可哀 我劝天公重抖擞,不拘一格降人才。
<<<

2018年02月16日周五下午09:28:38
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
见:[[我书架上的神明]]


<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
之所以读这本散文集,缘自[[我书架上的神明]]刘仲敬的推荐。

<<<
在流行的周作人、林语堂、梁实秋、查尔斯·兰姆、蒙田、赫兹里特、爱默生当中,一册薄薄的《春醪集·泪与笑》突然跳出。当时的感觉犹如朱彝尊的《高阳台》:“重来已是朝云散,怅明珠佩冷,紫玉烟沉。前度桃花,依然开满江浔。”世间若有烂俗台词所谓“灵魂伴侣”,一定就是这么回事........倘若文字可以用“质地”分高下(余光中是这么认为的),此书堪称“精金美玉”。(在诗歌方面,我只能给格雷的《墓畔哀歌》和阮籍的《咏怀》同样的评价。)同时代流行的优质散文家梁实秋、董桥之类,在我看来都不过是好吃的奶酪:甜腻可口,绵软易朽,绝对当不起“时间的征服者”重任。
<<<

对这位刘仲敬,印象颇深,准确的说是被“吓”的。之前读过他的《民国纪事本末》,厚厚的一本书,全是文言写就(至今没有读完,不是因为文言障碍,而是作者以时间轴的形式,按天按月逐条推进来写,啰嗦!),本以为此兄可能是民国遗老之辈,后来方知乃新中国70年代人,汗颜!更让人惊诧的是,此老兄的文言技能乃自然练就,属于童子功,汗颜!

<<<
《史记》是我第一部“根底”书,冥冥中若有神意。我在十二岁和十三岁之间,非常渴望杀时间的大部头书......对我来说就越好。《史记》比阿加莎·克里斯蒂的小说和斯瓦辛格的电影好.......我不看《表》、《志》之类讨厌的流水账部分,只看《本纪》、《列传》之类有故事、有文采的部分。故事总会有续集,文采则是会上瘾的。这条线路引导我读完了二十四史的大部分,当然也只读有故事的部分。我自己不知道也不在乎有什么用处,无非是搜集大侦探波洛全部作品同类的事情。''我后来莫名其妙地发现自己会写古文和古诗,而且比写英语文章轻松得多''(我根本不会写英文诗)。''现在看来,我大概是古典中国那种熏陶式教育的最后一批意外产品。这种际遇都是时间太多的结果,我估计自己和任何人都不会再有这样的环境了。''
<<<

梁遇春的散文还未看完,暗自佩服和深深的自愧。佩服其中西文化底蕴深厚,文中对西方文哲作家和作品如数家珍,引用如囊中探物;自愧已过而立的自己只能望其项背。梁遇春算是英年早逝,享年不足37岁,是鲁迅后一代民国文人,与周作人、林语堂、梁实秋等人一拨。其作品风格透露着那个”五四“气息--- ---中西文化冲突背景下的思辨和探究,虽没有鲁迅作品的凌厉,却多了几许娓娓之感,漫话絮语,也多了几分幽默和诙谐。他努力从自己经历的生活和阅读的书籍中,捕捉种种矛盾的人生现象———生与死、泪与笑、悲哀与“失掉了悲哀”、恋爱与离异、无情的多情与多情的无情、天真与经验、光明与黑暗、滑稽与愁闷等,这是其小品文的主题,文中即透露着对人生的热情,却亦看出种种痛苦和苦闷,间或有年轻人的消极。

梁遇春独爱短文,他在《小品文选·序》中写道:

<<<
大概说起来,小品文是用轻松的文笔,随随便便地来谈人生,因为好像只是茶余酒后,炉旁床侧的随便谈话,并没有俨然排出冠冕堂皇的神气,所以这些漫话絮语很能够分明地将作者的性格烘托出来,小品文的妙处也全在于我们能够从一个具有美妙的性格的作者眼睛里去看一看人生。
<<<

今天再读梁遇春散文,可能不在于他的思想价值(已完全被鲁迅所替代),而在于其艺术价值的借鉴作用。梁遇春散文的风格特色是什么呢?诚如唐弢概括为“快谈纵谈放谈”(《新文艺的脚印———关于几位先行者的书话》)郁达夫称其为“中国的爱利亚””。虽然梁遗作数量不多,然而另辟蹊径,独具一格,在现代散文史上自有其不可替代的地位,堪称文体家。而如今已经鲜有人提及他的名字了!


//2018年03月14日周三下午03:28:46//

下载:[[梁遇春散文选集|https://www.asuswebstorage.com/navigate/s/0AF67BD118BE47FDB159E1FA8AB8E70F4]]
<$transclude mode="block" tiddler=bookinfo/>
过年到现在基本上每晚都会翻看王国维的《[[一个人的书房]]》,对王大师多少有点了解,尤其佩服其国学造诣。这也是他迷茫和徘徊后的结果,他曾经说“余之性质,欲为哲学家则感情苦多,而知力苦寡;欲为诗人,则又苦感情寡而理性多。诗歌乎?哲学乎?他日以何者终吾身,所不敢知,抑在二者之间乎?”王对自己在古诗词方面的评价满满:

<<<
余之于词,虽所作尚不及百阕,然自南宋以后,除一二人外,尚未有能及余者,则平日之所自信也。
<<<

可以说,[[王之后再无国学大师|2018年02月18日周日上午12:22:48]]。而今日在《跟大师读经典小品》之[[书卷多情似故人]]了解到,王大师原来是以投颐和园昆明湖的形式告别这个世界。

1927年6月2日,王国维同朋友借了五块钱,雇人力车至北京颐和园,于园中昆明湖鱼藻轩自沉。从其遗体衣袋中寻出一封遗书,封面上书写着:“送西院十八号王贞明先生收”,遗书内容如下:

<<<
五十之年,只欠一死。经此事变,义无再辱。我死后当草草棺殓,即行藁葬于清华茔地。汝等不能南归,亦可暂移城内居住。汝兄亦不必奔丧,因道路不通,渠又不曾出门故也。书籍可托陈吴二先生处理。家人自有人料理,必不至于不能南归。我虽无财产分文遗汝等,然苟谨慎勤俭,亦必不至饿死也。
<<<

王国维为何自戕?“五十之年,只欠一死。”难道是“老而不死是为贼”?而王的学术成就在五十已臻成熟,颇有建树,非苟且偷生之辈,“为贼”是不成立的。那为什么自溺?,一般学者认为的原因有:“殉北洋说”、“反共及痛恨北伐说”、“逼债说”、“性格悲剧说”、“文化衰落说”。而这一切都无法盖棺论定。

[[书卷多情似故人]]载有几副对王国维的挽联,也可见一斑:


<<<
民国十六年阴历五月初三日,海宁王国维投昆明湖自杀,十七日在全浙会馆开追悼会,吊者甚众,挽词多不得体,惟梁启超一联云:“其学以通方知类为宗,不仅奇字译鞮创通龟契;一死明行已有耻之义,莫将凡情恩怨猜疑鹓雏。”语最中肯。罗振玉联云:“故人慷慨多奇节;书卷消磨绝可怜。”亦可谓知言。盖王氏一生博学深思,情理透彻,决非一般无聊遗老之所怀抱,如柯劭忞联云:“臣义不再辱;天鉴此孤忠。”真相去远矣。
<<<

[[补:五十之年,只欠一死]]:

{{补:五十之年,只欠一死}}
<$transclude mode="block" tiddler=bookinfo/>
<<textSliderNoButton "''物理学''" "*代理人基模型 (Agent Based Models)
*[[贝叶斯定理]] (Bayes Theorem)
*中心极限定理 (Central Limit Theorem)
*组合 (Combinations)
*复杂适应系统 (Complex Adaptive Systems)
*化合 (Compounding)
*相关性与因果关系 (Correlation versus Causation)
*临界质量 (Critical Mass)
*[[决策树模型|Decision Tree]] (Decision Trees)
*电磁学 (Electromagnetism)
*平衡 (Equilibrium)
*惯性 (Inertia)
*逆相 (Inversion)
*凯利优选模式 (Kelly Optimization Model)
*大数定律 (Law of Large Numbers)
*均值、中值、众数 (Mean, Median, Mode)
*动量 (Momentum)
*牛顿运动定律 (Newton’s Laws)
*正态分布 (Normal Distribution)
*排列 (Permutations)
*幂定律 (Power Law)
*量子力学 (Quantum Mechanics)
*回归分析 (Regression Analysis)
*均值回归 (Return to the Mean)
*相对性 (Relativity)
*香农定理 (Shannon’s Law)
*热力学 (Thermodynamics)
*定标 (Scaling)
*灵敏度分析 (Sensitivity Analysis)">>

返回[[思维模型|Thinking Models]]
!古希腊罗马哲学

<<imageSlider [[https://cl.ly/pf0Z/%E5%8F%A4%E5%B8%8C%E8%85%8A%E7%BD%97%E9%A9%AC%E5%93%B2%E5%AD%A6.jpg]]
"//点击展开//">>


!法兰西启蒙思想和唯物主义

<<imageSlider [[https://cl.ly/peiP/%E6%B3%95%E5%85%B0%E8%A5%BF%E5%90%AF%E8%92%99%E6%80%9D%E6%83%B3%E5%92%8C%E5%94%AF%E7%89%A9%E4%B8%BB%E4%B9%89.jpg]]
"//点击展开//">>

!中世纪基督教哲学

<<imageSlider [[https://cl.ly/peNS/%E4%B8%AD%E4%B8%96%E7%BA%AA%E5%9F%BA%E7%9D%A3%E6%95%99%E5%93%B2%E5%AD%A6.jpg]]
"//点击展开//">>

!德意志古典哲学

<<imageSlider [[https://cl.ly/pe4U/%E5%BE%B7%E6%84%8F%E5%BF%97%E5%8F%A4%E5%85%B8%E5%93%B2%E5%AD%A6.jpg]]
"//点击展开//">>

!过渡时期

<<imageSlider [[https://cl.ly/pejb/%E8%BF%87%E6%B8%A1%E6%97%B6%E6%9C%9F.jpg]]
"//点击展开//">>

!近代早期西欧哲学

<<imageSlider [[https://cl.ly/pewo/%E8%BF%91%E4%BB%A3%E6%97%A9%E6%9C%9F%E8%A5%BF%E6%AC%A7%E5%93%B2%E5%AD%A6.jpg]]
"//点击展开//">>


!哲学全景图
<<imageSlider [[https://cl.ly/pe3W/1.jpg]]
"//点击展开//">>

<<imageSlider [[[https://cl.ly/pe8p/3.jpg]]
"//点击展开//">>

!中东哲学体系

<<imageSlider [[[https://cl.ly/peRu/2.jpg]]
"//点击展开//">>

//根据邓晓芒赵士林合著的《西方哲学史》整理//

部分来源于:https://superscholar.org/comp-history-philosophy/
<$transclude mode="block" tiddler=bookinfo/>
[img width=60% [http://one.rizi.me/photos/rizime/jidujiao.JPG]]
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=30%></a>

<div class="tc-subtitle">

<<<
@@color:#808080;''书名:''《{{!!title}}》;
''作者:''{{!!author}};
''国别:''{{!!location}};
''系列'':{{!!series}};
''分类:''{{!!genre}};
''相关:''{{!!relation}}
@@
<<<
</div>

<$list filter="[field:book_title[希特勒时代的孩子们]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
''相似主题:''

<$vars tid={{!!relation}}>
<$appear show="<$text text=<<tid>>/>" $state="tiddler-slider" mode="block">
<$transclude mode="block" tiddler=<<tid>>/>
</$appear>
</$vars>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<span><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[现代汉语语法十讲]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$transclude mode="block" tiddler=booklogsinfo/>
我不知道为什么会翻看这本书,也许是因为“人生”二字,也许是因为路遥的名头,总之一气呵成的看完了。

如同上个世纪七八十年所有文学作品一样,小说《人生》也充满了浓厚的乡土气息,不,它就是描写农村的小说。主人公高加林,在城乡二元撕裂的环境中,在现实与理想中痛苦的涅槃。路遥写这部小说是在上个世纪八十年代,那时候是纯粹的城乡二元社会结构,农民是一种职业,工人和公务员端“铁饭碗”吃商品粮,这是两种阶级的存在,二者也没有直接的上升通道。如今近半个世纪过去了,把《人生》的故事移植到当今社会,主人公的经历也会照样存在,痛苦依然不会减少。只不过高加林在今天可能是生存在城市各个角落的,在农村可能叫胖丫,狗剩的,现在叫了Hensy或者David的人。而半个世纪之前的故事一样会继续下去。

<<<
他从田野上再一次来到城市。不过,这一次进来非同以往。当年他来到县城,基本上还是个乡下孩子,在城市的面前胆怯而且惶恐。几年活跃的学校生活,使他渐渐把自己的思想感情和生活习惯与城市紧密地融合在了一起;他很快把自己从里到外都变成了一个城里人。农村对他来说,变得淡漠了,有时候成了生活舞台上的一道布景,他只有在寒暑假才重新领略一下其中的情趣。
<<<

八十年前的高加林进城之后,混不下去还可以回去重新作一位农民。如今农村出来的年轻人,许多已经没有回头路可走了。虽然城市比之前具有了更多包容性和上升通道,但相比五十年,城市给人的压力,或者说社会给人的压力,作一个城市居民的压力是有增无减。五十年前的高加林虽然在城市进行了漂洗,但身上依然有一股泥土气息,是有根的,而今进入城市的年轻人,一旦经过城市的熏染和荡涤,身上再无那种泥土味,甚至在进城之前已经没有了泥土味。这种泥土味在之前是一种褒义词,是芬芳的,就像之前看[[伤痕文学系列|男人的一半是女人]]里面普遍对土地和劳动的歌颂。如今之于泥土,已经变成了贬义词,是老土,是落后的,是不入社会价值观主流的。如果说泥土味代表着现实,城市就是理想,而理想和现实之间的距离就是现代人的人生。


<<<
是的,现实是不能以个人的意志为转移的。谁如果要离开自己的现实,就等于要离开地球。一个人应该有理想,甚至应该有幻想,但他千万不能抛开现实生活,去盲目追求实际上还不能得到的东西。尤其是对于刚踏入生活道路的年轻人来说,这应该是一个最重要的认识。
<<<

尽管时代在变,但正像路遥这部小说的名字《人生》一样(路遥这个小说名字太大了,小说托不住这个大名字。不如其《平凡的世界》叫做人生更合适。),作为个体的人生在任何时代都无甚差异。


<<<
人生的道路虽然漫长,但紧要处常常只有几步,特别是当人年轻的时候。

没有一个人的生活道路是笔直的,没有岔道的。有些岔道口,譬如政治上的岔道口,事业上的岔道口,个人生活上的岔道口,你走错一步,可以影响人生的一个时期,也可以影响一生。——柳青
<<<

2018年07月21日周六下午10:10:15

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
!!! Standard Details

```
<$details>
Find out more about this technology => go to [[DetailsWidget|https://tid.li/tw5/plugins.html#DetailsWidget]] 
</$details>
```

<$details>
Find out more about this technology => go to [[DetailsWidget|https://tid.li/tw5/plugins.html#DetailsWidget]] 
</$details>

!!! Details with Persistent State

```
<$details state="$:/state/myDetailsStateTiddler">
.....
</$details>
```

<$details state="$:/state/myDetailsStateTiddler">

* If the text reference contains a tiddler, the state is saved in the text field. 
** Check $:/state/myDetailsStateTiddler
* no summary defined
** Note: You can click on the whole detail area to close as we have to emulate the change event using a click event.

</$details>
<br>

```
<$details summary="Save state in a state index" state="$:/state/myDetailsStateTiddler_2##details-state">
```

<$details summary="Save state in a state index" state="$:/state/myDetailsStateTiddler_2##details-state">

* If the text reference contains an index, this works in any case. 
** Check $:/state/myDetailsStateTiddler_2
** Maybe you want to set it’s tiddler’s type manually. (Delete this tiddler and see what happens.)

</$details>

!!! Details with Style and Class

```
<$details field="caption" open="no" class="success" >
```

<$details field="caption" open="no" class="success" >

* Summary = field "caption" from this tiddler (Test new stuff)
* class="success" => summary with green background
* State is not saved.
** When you close and reopen this tiddler, it will allways be closed.

</$details>


```
<$details tiddler="myTempState" open="y" class="warning" state="myTempState">
```

<$details tiddler="myTempState" open="y" class="warning" state="myTempState">

* for the summary use the tiddler myTempState (field defaults to "title")
* class="warning" => summary with red background
* save state in the tiddler [[myTempState]] (field defaults to "text")

</$details>


```
<$details summary="Local summary wins" tiddler="DetailsWidget" field="caption" class="notification" state="myTempState!!last-open">
```

<$details summary="Local summary wins" tiddler="DetailsWidget" field="caption" class="notification" state="myTempState!!last-open">

* local summary wins over field "caption" of DetailsWidget
* class="notification" 
* save state in field myTempState!!last-open
** note: same state tiddler as above

</$details>

!!! About the Author 


```
<$details tiddler="Coze">
coze
{{Jerry}}
</$details>
```

<$details tiddler="Coze">
coze
{{Jerry}}
</$details>
这个详情插件 $:/plugins/telmiger/details 比[[之前用的折叠效果|文字折叠宏]]似乎更好看和好用,几种效果如下:

```
<$details>

! This is the revealed content
And this is some text

</$details>
```
<$details>

! This is the revealed content
And this is some text

</$details>

---

```

<$details summary="Open here!">

!! This is the revealed content
And this is some text

</$details>
```

<$details summary="Open here!">

!! This is the revealed content
And this is some text

</$details>

---


```
<$details summary="This should be open" open="yes">

!!! This is immediately visible
To have another details section inside a details widget it must be transcluded. Example:

{{!!widget-author}}

</$details>

```
<$details summary="This should be open" open="yes">

!!! This is immediately visible
To have another details section inside a details widget it must be transcluded. Example:

{{!!Coze}}

</$details>

[[高级用法|详情展示高级用法]]:

<$details summary="Open here!">

{{详情展示高级用法}}

</$details>
<<table-dynamic filter:"[tag[Book]!tag[正读]!tag[已读]!tag[而废]]" fields:"tbl-expand title author location genre created" stateTiddler:"exmp03" tblClass:"w-100 thead-success" tblCaption:"''想读书目''">>






<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<div class="card text-white bg-success mb-3 shadow-lg" style="max-width: 18rem;">
  <div class="card-header">微信小程序</div>
  <div class="card-body">
    <span class="h5 card-title"></span>
    <p class="card-text">[img[Wechat2]]</p>
  </div>
</div>


<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
[[牧羊少年奇幻之旅]]
<$transclude mode="block" tiddler=bookinfo/>
!! 结构
<<textSliderNoButton "''心理学''" "*行动偏差 (Action Bias)
*行动者-观察者偏差 (Actor-Observer Bias)
*逆向选择 (Adverse Selection)
*情绪启发 (Affect Heuristic)
*阿克洛夫的柠檬 (Akerlof’s Lemons)
*选择性失明 (Alternative Blindness)
*可选路径 (Alternative Paths)
*模糊厌恶 (Ambiguity Aversion)
*[[定锚偏见 (Anchoring Bias)|https://hurricanecapital.wordpress.com/2014/05/04/mental-model-anchoring-bias/]]
*主观一致 (Arbitrary Coherence)
*联想偏差 (Association Bias)
*注意偏差 (Attentional Bias)
*吸引效应 (Attraction Effect)
*归因理论 (Attribution Theory) (aka Cause Theory)
*权威-错误影响倾向 (Authority-Misinfluence Tendency)
*自动化偏见 (Automation Bias)
*自动催化作用 (Auto Catalysis) (aka Evergreen or Self-Breeding)
*[[可得性偏差 (Availability Bias)|https://hurricanecapital.wordpress.com/2015/09/07/mental-model-availability-bias/]]
*错误衡量易得性倾向 (Availability-Misweighing Tendency)
*贝比鲁斯效应 (Babe Ruth Effect)
*逆火效应 (Backfire Effect)
*从众效应 (Bandwagon Effect)
*巴纳姆效应 (Barnum Effect)
*基本比率忽视 (Base-Rate Neglect)
*摇摆效应 (Beaty Effect)
*“因为”正当 (‘Because’ Justification)
*狗屎运 (Beginner’s Luck)
*信念偏差 (Belief Bias)
*本福德定律 (Benford’s Law)
*偏见盲点 (Bias Blind Spot)
*稳操胜券谬误 (Bird in the Hand Fallacy)
*怪异效应 (Bizarreness Effect)
*旁观者效应 (Bystander Effect)
*改变偏差 (Change Bias)
*司机的知识 (Chauffeur Knowledge)
*啦啦队效应 (Cheerleader Effect)
*童年失忆症 (Childhood Amnesia)
*支持选择偏差 (Choice-Supportive Bias)
*延迟选择 (Choice Deferral) (Procrastination)
*偏颇选择 (Cherry-picking)
*选择过载 (Choice Overload)
*聪明汉斯效应 (Clever Hans Effect)
*聚类错觉 (Clustering Illusion)
*鸡尾酒会效应 (Cocktail Party Effect)
*认知损耗 (Cognitive Depletion)
*认知失调 (Cognitive Dissonance)
*巧合 (Coincidence)
*承诺偏差 (Commitment Bias)
*[[复利]] (Compound Interest)
*复杂适应系统 (Complex Adaptive Systems)
*确认偏差 (Confirmation Bias)
*合取谬误 (Conjunction Fallacy)
*相合性偏差 (Congruence Bias)
*合取谬误 (Conjunction Fallacy)
*保守倾向 (Conservatism) (Bayesian)
*保守倾向 (Conservatism) / 退缩偏差 (Regressive Bias)
*一致性偏差 (Consistency Bias)
*触染偏差 (Contagion Bias)
*语境效应 (Context Effect)
*对比错误反应倾向 (Contrast-Miscreation Tendency)
*对话偏差 (Conversational Bias)
*跨种族效应 (Cross-Race Effect)
*潜抑记忆 (Cryptomnesia)
*[[累积优势|掌握一门语言打开一扇门]] (Cumulative Advantage) / [[马太效应|不确定性和未知之美]] The Matthew Effect) / 富人愈富 The Rich Get Richer
*好奇心倾向 (Curiosity Tendency)
*[[知识之祸]] (Curse of Knowledge)
*数据挖掘错误 (Data Mining Error)
*资料窥视偏差 (Data Snooping Bias)
*决策疲劳 (Decision Fatigue)
*诱饵效应 (Decoy Effect)
*默认效应 (Default Effect)
*防御性归因假设 (Defensive Attribution Hypothesis)
*防御性决策 (Defensive Decision Making)
*职业病 (Déformation Professionnelle)
*宗派效应 (Denomination Effect)
*被剥夺超级反应倾向 (Deprival Superreaction Tendency)
*灾难短视 (Disaster Myopia)
*失望厌恶 (Disappointment Aversion)
*讨厌/憎恨倾向 (Dislike/Hating Tendency)
*错位效应 (Disposition Effect)
*领地依赖 (Domain Dependence)
*避免怀疑倾向 (Doubt-Avoidance Tendency)
*害怕风险 (Dread Risk)
*化学物质错误影响倾向 (Drug-Misinfluence Tendency)
*[[达克效应|邓宁-克鲁格心理效应]] (Dunning-Kruger Effect)
*时长忽视 (Duration Neglect)
*反身性 (Economic Reflexivity)
*伊斯特林悖论 (Easterlin Paradox)
*心血辩护 (Effort Justification)
*自我损耗 (Ego Depletion)
*自利偏差 (Egocentric Bias)
*同理心效应 (Empathy Gap)
*皇帝新衣综合征 (Eperor’s New Clothes Syndrome)
*禀赋效应 (Endowment Effect)
*艳羡/妒忌倾向 (Envy/Jealousy Tendency)
*艳羡 (Envy)
*承诺升级 (Escalation of Commitment)
*本质主义 (Essentialism)
*可评估性偏差 (Evaluability Bias)
*期望过大 (Exaggerated Expectation)
*自视过高的倾向 (Excessive Self-Regard Tendency)
*预期 (Expectations)
*预期偏差 (Experimenter’s or Expectation Bias)
*指数增长 (Exponential Growth)
*外部刺激偏差 (Extrinsic Incentives Bias)
*阴影效应偏差 (Fading Affect Bias)
*合成谬误 (Fallacy of Composition)
*频率谬误 (Fallacy of Frequency)
*单因谬误 (Fallacy of the Single Cause)
*错误因果关系 (False Causality)
*错误共识效应 (False-Consensus Effect)
*虚假记忆 (False Memory)
*歪曲历史 (Falsification of History)
*熟悉性假设 (Familiarity Heuristic)
*遗憾恐惧 (Fear of Regret)
*功能积极效应 (Feature-Positive Effect)
*流畅性假设 (Fluency Heuristic)
*聚焦效应 (Focusing Effect)
*预测错觉 (Forecast Illusion)
*福勒效应 (Forer Effect) / 巴纳姆效应 (Barnum Effect)
*框架效应 (Framing Effect)
*频率错觉 (Frequency Illusion)
*功能固着 (Functional Fixedness)
*基本归因错误 (Fundamental Attribution Error)
*赌徒谬误 (Gambler’s Fallacy)
*伽拉忒亚效应 (Galatea Effect)
*注视假设 (Gaze Heuristic)
*生成效应 (Generation Effect) / 自我生成效应 (Self-Generation Effect)
*搜索引擎效应 (Google Effect)
*群体迷思 (Groupthink)
*群体归因错误 (Group Attribution Error)
*群体极化 (Group Polarization)
*光环效应 (Halo Effect)
*累赘原理 (Handicap Principle)
*难易效应 (Hard-Easy Effect)
*霍索恩效应 (Hawthorne Effect)
*享乐适应症 (Hedonic Treadmill)
*[[羊群效应]] (Herding)
*后见之明偏差 (Hindsight Bias)
*本土偏好 (Home Bias)
*敌对媒体效应 (Hostile Media Effect)
*热手谬误 (Hot-Hand Fallacy)
*房款效应 (House-Money Effect)
*幽默效应 (Humor Effect)
*双曲贴现 (Hyperbolic Discounting)
*意念动作效应 (Ideomotor Effect)
*受害者标签效应 (Identifiable Victim Effect)
*宜家效应 (IKEA Effect)
*被关注错觉 (Illusion of Attention)
*不对称洞察力错觉 (Illusion of Asymetric Insight)
*控制错觉 (Illusion of Control)
*外部因素错觉 (Illusion of External Agency)
*技能错觉 (Illusion of Skill)
*透明度错觉 (Illusion of Transparency)
*真相错觉效应 (Illusion of Truth Effect)
*有效性错觉 (Illusion of Validity)
*相关性错觉 (Illusionary Correlation)
*虚假相关 (Illusory Correlation)
*虚假模式识别 (Illusory Pattern Recognition)
*虚假优越感 (Illusory Superiority)
*无力关门 (Inability to Close Doors)
*动机引起的偏差 (Incentive-Caused Bias)
*应激超级反应倾向 (Incentive Super-Response Tendency)
*避免不一致性倾向 (Inconsistency-Avoidance Tendency)
*心灵感应 (Induction)
*受简单联想影响的倾向 (Influence-from-Mere Association Tendency)
*信息偏差 (Information Bias)
*信息过载 (Informational Overload)
*圈内人偏差 (In-Group Bias)
*群体内外偏差 (In-Group Out-Group Bias)
*样本大小不敏感 (Insensitivity to Sample Size)
*即时历史偏差 (Instant History Bias)
*意向处理错误 (Intention-To-Treat Error)
*网络过滤泡沫 (Internet Filter Bubble)
*内省错觉 (Introspection Illusion)
*[[倒错]] (Inversion)
*非理性恶化 (Irrational Escalation)
*元月效应 (January Effect)
*杰文斯悖论 (Jevons Paradox)
*公平世界假设 (Just-World Hypothesis)
*康德式公平倾向 (Kantian Fairness Tendency)
*滞后效应 (Lag Effect)
*沃贝贡湖效应 (Lake Wobegon Effect) (see Overconfidence)
*[[大数定律]] (Law of Large Numbers)
*规模报酬 (Law of Scale)
*[[小数定律]] (Law of Small Numbers)
*少即是多效应 (Less-is-Better Effect)
*瞄准与锐化效应 (Leveling and Sharpening Effect)
*喜欢/热爱倾向 (Liking/Loving Tendency)
*喜爱偏差 (Liking Bias)
*限价订单效应 (Limit Order Effect)
*琳达问题 (Linda Problem) (see Conjunction Fallacy)
*列表过长效应 (List-Length Effect)
*风险极大—极小赌注偏差 (Longshot-Favorite Bias)
*合奏效应 (Lollapalooza Tendency)
*厌恶损失 (Loss Aversion)
*低波动性异常 (Low Volatility Anomaly)
*用锤子的人综合征 (Man With A Hammer Syndrome)
*心理账户 (Mental Accounting)
*单因接触效应 (Mere Exposure Effect)
*不用心 (Mindlessness)
*明斯基时刻 (Minsky Moment)
*误导信息效应 (Misinformation Effect)
*通道效应 (Modality Effect)
*货币幻觉 (Money Illusion)
*蒙提霍尔问题 (Monty Hall Problem)
*心境一致性记忆偏差 (Mood-Congruent Memory Bias)
*动机拥挤 (Motivation Crowding)
*道德风险 (Moral Hazard)
*道德许可 (Moral Licensing)
*道德运气 (Moral Luck)
*动机挤出效应 (Motivation Crowding Out Effect) (see Undermining Effect)
*损失厌恶短视 (Myopic Loss Aversion)
*犬儒主义天真 (Naive Cynicism)
*多元化天真 (Naive Diversification)
*现实主义天真 (Naive Realism)
*消极性偏差 (Negativity Bias)
*消极性效应 (Negativity Effect)
*轻忽机率偏误 (Neglect of Probability)
*网络效应 (Network Effect)
*接班人效应 (Next-in-Line Effect)
*噪声交易 (Noise Trading)
*常态偏差 (Normalcy Bias)
*非自主发明综合症 (Not-Invented-Here Syndrome)
*狂躁症 (Neomania)
*新闻错觉 (News Illusion)
*观察员偏差 (Observer Bias)
*观察者期望效应 (Observer-Expectancy Effect)
*[[奥卡姆剃刀|思维的惰性]] (Occam’s Razor)
*不作为偏差 (Omission Bias)
*后果偏差 (Outcome Bias)
*外团体同质性效应 (Outgroup Homogeneity Bias)
*过度自信偏差 (Overconfidence Bias)
*过度乐观倾向 (Overoptimism Tendency)
*过度考虑 (Overthinking)
*帕金森定律 (Parkinson’s Law)
*空想性错视 (Pareidolia)
*[[帕雷托法则]] (Pareto Principle) (The 80/20 Rule)
*部分暗示效应 (Part-List Cueing Effect)
*交接权杖 (Pass the Baton) (We All Have To Die)
*[[巴甫洛夫联想]] (Pavlovian Association)
*峰终定律 (Peak-End Rule)
*持久性 (Persistence)
*人格化 (Personification)
*说服力偏差 (Persuasion Bias)
*悲观主义偏差 (Pessimism Bias)
*图优效应 (Picture Superiority Effect)
*安慰剂效应 (Placebo Effect)
*规划谬误 (Planning Fallacy)
*多数无知 (Pluralistic Ignorance)
*购后合理化 (Post-Purchase Rationalization)
*启动效应 (Priming Effect)
*首因和近因效应 (Primacy and Recency Effects)
*拖延行为 (Procrastination)
*亲创新偏差 (Pro-Innovation Bias)
*投影偏差 (Projection Bias)
*假确定性效应 (Pseudocertainty Effect)
*皮格马利翁效应 (Pygmalion Effect)
*逆反心理 (Reactance)
*反应式贬低 (Reactive Devaluation)
*重视理由倾向 (Reason-Respecting Tendency)
*近因偏差 (Recency Bias)
*回馈倾向 (Reciprocation Tendency)
*启发式再认 (Recognition Heuristic)
*反射效应 (Reflection Effect)
*后悔 (Regret)
*代表性启发 (Representative Heuristic)
*资源枯竭 (Resource Depletion)
*管束偏差 (Restraint Bias)
*奖惩超级反应倾向 (Reward and Punishment Superresponse Tendency)
*趋均数回归 (Regression to Mean)
*代表性启发 (Representativeness Heuristic)
*莫名其妙效应 (Rhyme as Reason Effect)
*风险规避 (Risk Aversion)
*风险补偿 (Risk Compensation) (Peltzman Effect)
*风险偏移 (Risky Shift)
*整数效应 (Round Number Effect)
*帆船效应 (Sailing-Ship Effect)
*突显效应 (Salience Effect)
*满意法 (Satisficing)
*泡泡纱错觉 (Seersucker Illusion)
*稀缺性错误 (Scarcity Error)
*二级思考 (Second-Level Thinking)
*选择性偏差 (Selection Bias)
*选择性认知 (Selective Perception)
*自我控制 (Self-Control)
*自我增强传染偏差 (Self-Enhancing Transmission Bias)
*利己主义 (Self-Interest)
*自选择偏差 (Self-Selection Bias)
*自利偏差 ([[Self-Serving Bias]])
*自利型归因偏差 (Self-Serving Attribution Bias) (see Self-Serving Bias)
*塞梅尔维斯效应 (Semmelweis Effect)
*衰老—错误影响倾向 (Senescene-Misinfluence Tendency)
*共享信息偏差 (Shared Information Bias)
*神枪手效应 (Sharpshooter Effect)
*相似性启发 (Similarity Heuristic)
*简单逻辑 (Simple Logic)
*简单,避免痛苦心理否认 (Simple, Pain-Avoiding Psychological Denial)
*模拟式启发 (Simulation Heuristic)
*睡眠者效应(Sleeper Effect)
*社会地位偏差 (Social Comparison Bias)
*社会期望偏差 (Social Desirability Bias)
*社会性懈怠 (Social Loafing)
*社会智力假设 (Social Intelligence Hypothesis)
*社会认同倾向 (Social-Proof Tendency)
*否认压制 (Squelch by Denial)
*现状偏差 (Status Quo Bias)
*刻板印象 (Stereotyping)
*次可加性效应 (Subadditivity Effect)
*主观验证 (Subjective Validation)
*沉没成本谬误 (Sunk Cost Fallacy)
*超级碗效应 (Superbowl Effect)
*迷信 (Superstition)
*[[幸存者偏差|幸存者偏见]] (Survivorship Bias)
*情节偏差 (Story Bias)
*战略性误传谎言 (Strategic Misrepresentation)
*压力影响倾向 (Stress-Influence Tendency)
*游泳者的身体错觉 (Swimmer’s Body Illusion)
*系统公正化效应 (System Justification)
*最佳选择启示 (Take-the-Best Heuristic)
*德州神枪手效应 (Texas Sharpshooter Effect) (see Sharpshooter Effect)
*节省时间偏差 (Time-Saving Bias)
*泰坦尼克效应 (Titanic Effect)
*[[黑天鹅效应|黑天鹅]] (The Black Swan)
*好转前的恶化谬误 (The It’ll-Get-Worse-Before-It-Gets-Better Fallacy)

*选择悖论 (The Paradox of Choice)
*[[平均指数]] (The Problem with Averages)
*公地悲剧 (Tragedy of the Commons)
*品性归属偏差 (Trait Ascription Bias)
*土耳其错觉 (Turkey Illusion)
*讲废话的倾向 (Twaddle Tendency)
*基本归因错误 (Ultimate Attribution Error)
*单位偏差 (Unit Bias)
*不用就忘倾向 (Use-It-or-Lose-It Tendency)
*志愿者式愚笨 (Volunteer’s Folly)
*熟悉路线效应 (Well Travelled Road Effect)
*威尔·罗杰斯现象 (Will Rogers Phenomenon)
*赢者诅咒 (Winner’s Curse)
*劣于常人效应 Worse-than-Average Effect
*蔡加尼克效应 (Zeigarnik Effect)
*零风险偏差 (Zero-Risk Bias)
*零和启发 (Zero-Sum Heuristic)
*[[邓宁-克鲁格心理效应]](Dunning-Kruger effect)
*[[Serial-position Effect]]系列位置效应
*[[HindSight Bias]]后见之明偏误

">>

返回[[思维模型|Thinking Models]]

<$button message="tm-close-tiddler">Close Me!</$button>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
$:/.my/styles

来源:http://tobibeer.github.io/tw5-plugins/#%24%3A%2F.tb%2Fstyles:%24%3A%2F.tb%2Fstyles


用法示例:

@@.note
''Note:'' 只有共产党才能救中国.
@@


@@.summary
''summary:'' 只有共产党才能救中国.
@@


@@.title-popup
''title-popup:'' 只有共产党才能救中国.
@@
新增appear 插件:$:/plugins/tobibeer/appear

来源:http://tobibeer.github.io/tw5-plugins/#appear

使用说明:[[Demo|https://rizi.me/demo.html#appear%E4%BD%BF%E7%94%A8%E6%96%B9%E6%B3%95]] 或 http://tobibeer.github.io/tw5-plugins/#appear-Examples:appear-Examples
罗素认为:

<<<
真理大体可分为两种:一种叫做外延的真理(extensional truth),一种叫做内容的真理(intensional truth)。外延的真理大体是指科学的真理,如自然科学的真理或是数学的真理。
<<<


外延的知识可以脱离我们主观的态度(subjective attitude)。凡是不系属于主体(subject)而可以客观地肯断(objectively asserted)的那一种真理,通通都是外延真理。

内容真理,内容命题通通是系属于主体,系属于主观态度上的一些话。

真理都是有普遍性的。

逻辑实证论者认为:形上学里边的那些话都是一些''概念的诗歌''(conceptual poem)。诗歌是满足我们的情感,所以他们说形上学只是概念的诗歌,都只是来满足我们主观的情感。(逻辑实证论者只承认外延的真理,而否认内容真理,这是一种对自我的一种否定。)

从语言的属性来看,唐君毅先生就曾经提出这样的观点:

<<<
他提出从我们事实上使用语言所表现的来看,当该是三分:科学语言是一种;文学语言是情感语言:至于道家、儒家所讲的,这些还是学问,他们所讲的是道。道不是情感;道是理性。但是这个理性我刚才说过,它不是在科学、数学里面所表现的那个理性。它既然是理性,因此表达这种理性的语言自就不是文学语言这种情感语言,可是这也不是科学语言。所以唐君毅先生提议把这种语言叫做''启发语言''(heuristic language)。
<<<

把逻辑实证论者的观点和唐先生的观点结合起来,似乎好理解一点:形而上的内容,也就是概念的诗歌,属于一种启发语言。

2018年06月10日周日下午07:05:36

在《西方思想传统》一书中,两位作者雅各布·布朗诺夫斯基和布鲁斯·麦兹利希明确了思想活动的三大“门类”:

<<<
第一个门类是真理,''寻求真理是宗教、科学和哲学关注的焦点'',而在理想世界中达成的一致将是绝对的和不自觉的,这就意味着必须在逻辑、数学或演绎层面体现出来。其次是''追寻正义,这是法律、伦理和政治关注的焦点'',此时达成一致主要是自觉的,虽然不需要绝对一致,但要想发挥作用仍然需要广泛地传播。第三个门类是''品位,主要涉及艺术'',完全不必达成一致,不同意见的碰撞往往更有成效。
<<<

2018年06月12日 23:34

宗教、哲学以及主体态度的表现和表象属于内容真理范畴。

2018年06月15日周五下午10:28:43
<$transclude mode="block" tiddler=booklogsinfo/>

''幸存者偏差''(survivorship bias),另译为“生存者偏差 ”或“幸存者偏见”,是一种[[逻辑谬误]],选择偏差的一种。过度关注“幸存了某些经历”的人事物,忽略那些没有幸存的(可能因为无法观察到),造成错误的结论。经济学称之为[[沉默成本]],社会学称之为[[沉默证据]]。

幸存者偏见一词来源古罗马西赛罗所讲的一个故事:有一群宗教信徒在某次沉船事故中幸存,之后他们就请人作画 --- --- 画面上一群人在事故中祈祷,以此来宣扬宗教信仰带来的救赎。其中一个信徒那这幅画给一个无神论者看,这个无神论反问道:那些祈祷之后淹死的人,他们的画像在哪里?故事里那些“祈祷之后依然淹死的人”,他们已经死了,不可能再去告诉别人,他们的祈祷失灵了。这个故事反应的现象,后世人称之为幸存者的偏见。

生存偏见可能导致过度乐观的信念,因为失败被忽略。逻辑偏差在于只关注筛选结果做出评估(显性),而忽略筛选条件与筛选机制等资讯(隐性)。

生活中处处充满着幸存者的偏见。每天晚上播出的新闻联播是其最佳说明典范,如果您根据节目中天天报道的欣欣向荣的蓬勃发展景象就认为全国一片和谐,那你就陷入了“幸存者偏差”。还有那些经常在各大论坛演讲的所谓企业家就是故事中没有被淹死的人,大部分创业者都葬身在大海,所以那些号召或者鼓动“全民创业”的人是不负责任的行为。

在整理此条的时候,朋友给我发来一张多肉的照片,我说这盆多肉土壤有问题,应该用砂砾土利于透气。朋友说,人家已经养了四年了,不透气还长这么好啊。我想这也是一种幸存者的偏见现象,只不过沉默的证据出现在未来,也就是说如果这盆多肉换为透气良好的砂砾土,长势会更好。

<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=booklogsinfo/>

先认识一下休谟这个人:

大卫·休谟(David Hume,1711年5月7日-1776年8月25日)是苏格兰的哲学家、经济学家和历史学家,他是苏格兰启蒙运动以及西方哲学历史中最重要的人物之一。虽然现代对于休谟的著作研究聚焦于其哲学思想上,他最先是以历史学家的身份成名(维基百科)。

再来看一下休谟哲学思想核心:

1. 因果问题

休谟有力驳斥了因果关系理论,他的理论:

<<<
我们无从得知因果之间的关系,只能得知某些事物总是会连结在一起,而这些事物在过去的经验里又是从不曾分开过的。我们并不能看透连结这些事物背后的理性为何,我们只能观察到这些事物的本身,并且发现这些事物总是透过一种经常的连结而被我们在想像中归类。(Hume, 1740: 93)
<<<

休谟指出,人类在作出过往的观测后,会自然而然的,在心理层面上期盼(expect) 下一次试验的成功。其中有三个特征:相继性,接触性,必然性。所以我们不能说一件事物造就了另一件事物,我们所知道的只是一件事物跟另一件事物可能有所关连。''我们所有的知识,都来源于我们现在和过去的感觉经验。我们并没有关于未来的经验。''

休谟对因果关系的认知主张属于哲学范畴。在心理学领域,因果关系的代表是佛洛伊德心理学,他认为人的行为以及性格都与过往有关 --- 家庭、小时候的经历以及伤害性事件等。与休谟认知呼应的是三大心理学派(佛洛伊德、阿德勒和荣格)之一的[[阿德勒心理学|被讨厌的勇气]](或哲学),阿德勒反驳了佛洛伊德的因果心理学,提出“目的”心理学。

休谟所驳斥的,我们从未“发现过什么,只不过是事物接踵而至罢了”,我们从未直接看到“由因操纵的任何力量,或者是由因与果之间的联系产生的任何影响。”

2. 归纳问题 Problem of Induction

休谟主张所有人类的思考活动都可以分为两种:追求“观念的连结”(Relation of Ideas)与“实际的真相”(Matters of Fact)。前者牵涉到的是抽象的逻辑概念与数学,并且以直觉和逻辑演绎为主;后者则是以研究现实世界的情况为主。而为了避免被任何我们所不知道的实际真相或在我们过去经验中不曾察觉的事实的影响,我们必须使用归纳思考。归纳思考的原则在于假设我们过去的行动可以做为未来行动的可靠指导(这有时又被称为自然划一原则—uniformity of nature)。

这里就涉及到“[[黑天鹅]]”现象,也是休谟归纳主义无法解决的。

这既是休谟问题。

综合因果和归纳这两个认识论问题,应该怎么解决那?康德针对休谟的哲学思想,提出了著名的先验哲学:

<<<
人类有自己的认识框架,我们把接受的感觉经验以符合我们这一框架的结构呈现出来。这一框架被称为“先验预设”(“priori knowledge”或“schema")。其中包括时间观,空间观和因果观。这些东西是内在于我们的。
<<<

在《[[黑天鹅]]》中,纳西姆·尼古拉斯·塔勒也提到休谟问题,这是[[之前读书笔记做的整理|不确定性和未知之美]]:

<<<
休谟问题,即所谓从“是”能否推出“应该”,也即“事实”命题能否推导出“价值”命题,它是休谟在《人性论》中提出的一个著名问题。这个问题在西方近代哲学史上占据重要位置,许多著名哲学家纷纷介入,但终未有效破解。休谟指出,大多数人都相信只要一件事物伴随着另一件事物而来,两件事物之间必然存在着一种关联,使得后者伴随前者出现,休谟在《人性论》以及后来的《人类理解论》一书中反驳了这个理论,他指出虽然我们能观察到一件事物随着另一件事物而来,我们并不能观察到任何两件事物之间的关联。而依据他怀疑论的知识论,我们只能够相信那些依据我们观察所得到的知识。因果联系之间其实存在一个信心或盼望的跳跃,比如我们认为明天必定会来到是基于经验中对昨天今天与明天的“知识”,不自觉的把明天作为今天的结果,这是盼望和信心,不是知识!

休谟因果问题——“我们无从得知因果之间的关系,只能得知某些事物总是会连结在一起。”

休谟归纳问题——:“我们有什么理由从对个别事例的观察中引出普遍性的结论?”“从单称陈述到全称陈述的推论如何能得到证明?”

休谟伦理问题——“从‘是’中推不出‘应当’”。
<<<


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=bookinfo/>
我好古,而非耽爱,只是想学会一种语言,掌握一种表达。之前我曾经[[提到一句话|关于读书的两个视频]]:掌握一种新的语言(例如管理学、金融学等)可以增大自己能力,改变自己的思维模式。古文,文言文相对当下的白话文算是另一种语言,我之前也提到过学文言的好处 <$appear show="open {{$:/core/images/chevron-right}}" hide="{{$:/core/images/chevron-left}} close" $state="image-buttons"> 
{{读文言文有什么用?}}
</$appear> 。也为此单独建立了文言文阅读和学习的主题:[[文言津逮系列]]。

五四时期以胡适为首的新文化运动学派发起白话运动,彻底斩断了中国文化几千年的文脉,把中文表达代入另一种话语系统时代,虽然白话作为书面表达语言极大的促进了沟通效率,降低了几年来文人有意或无意竖起的围墙,但事物的另一面是:也割裂了文化之根。 有人这样形容文言:

<<<
古典中文根本是由几个世纪的典故用一种简要的编码组成,流传于一个书虫们组成的精英小团体中,他们自己都彻底了解任何一点相关的文学背景。
<<<

这样描述也不为过,就像最近看这本书 --- [[怎样学古文二十五讲]]里周振甫 <<ref "[1]">> 先生所指出的,学习古文的障碍除了基本的一些词义古今异同、语法结构特殊之外,很大的障碍就是文言文里面的用典。古代文人喜欢掉书袋,用典的多少昭彰着作者学术造诣的深浅,就像微信朋友圈里面很多人喜欢晒豪车一个意思。

学习古文就要扫清这些障碍。作为业余学习者,除了多读之外,无它捷径可循。也不必死记硬背,找几本有故事情节、好看的书作为切入点,一点点读,读出书中的乐趣,自然水到渠成。

新文化运动从1918年算起到今天也不过区区1个世纪,相当于文言作为书写和叙事的历史实在是太短太短,可是我们连一个过渡阶段都没有。为什么这么说那?老一代国学大儒已经故去,文革又来了一次清洗,50、60年代的人又没有正经的接受过传统教育(他们是下乡青年的主题),旧学彻底断层。70、80年代的人课本上所学的那些“抽禾日当午”式古代文学只是沧海之一粟,还都是为了应付考试,放眼望去身边有几个人还乐道与古文阅读和写作。而90和新世代属于互联网原住民,网络信息的沉淀更拓宽了文言和白话之间的鸿沟,未来的结果是可以想象的到的结果:文言不再飞入寻常百姓家,只能属于学者象牙塔里面的一套语言编码系统。

一百年荡涤了几千年积累起来的宝库。可惜!!

--

<<<
吕祖谦说:“学文须熟看韩、柳、欧、苏。先见文字体式,然后遍考古人用意下句处。第一看大概主张;第二看文势规模;第三看纲目关键,如何是主意首尾相应,如何是一篇铺叙次第,如何是抑扬开合处;第四看警策句法,如何是一篇警策,如何是下句下字有力处,如何是起头换头佳处,如何是缴结有力处,如何是融化屈折、剪裁有力处,如何是实体贴题目处。”
<<<


<<<
学会读古文跟学会读外文相似。我向语言学大师吕叔湘先生请教,他小时候怎样学外文的。
<<<


-- -- --

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "1931年,周振甫入无锡国学专修学校,跟随学者钱基博(钱锺书父亲)学习。1932年,在上海开明书店任《辞通》校对、编辑。周振甫和钱钟书有深厚的学术情谊。周振甫于1977年给中华书局写《建议接受出版钱锺书先生的〈管锥编〉》提到:“钱先生在英国文学界有较高的地位,英国人编的文学史,有专章讲述钱先生的文学创作”。振甫曾负责《谈艺录》与《管锥编》的编辑工作,钱锺书亲笔赠言:“校书者非如观世音之具千手千眼不可。此作蒙振甫兄仇勘,得免于大舛错,得赐多矣。”三十年代初,周振甫开始从事编辑工作,负责编辑的著作有《乐府诗集》、《李太白全集》、《管锥编》等。参加了《明史》点校和《鲁迅全集》注释。编辑之余,还著有《文章例话》、《诗词例话》等书。">>
<$transclude mode="block" tiddler=bookinfo/>
Weekly:9.11~9.17

''书名:''《雪涛谐史》  明·江盈科

号称“史”,实不记史,多是坊间传说,古代段子荟萃。亘史云:“此可入《世说》,何云《谐史》乎?”,更像《世说新语》。每卜百十来字,诙谐、幽默、戏虐。正如作者再前言“谐史引”所载:

<<<
善乎李君实先生之言曰:“孔父大圣,不废莞尔,武公抑畏,犹资善谑。”仁义素张,何妨一弛,郁陶不开,非以涤性。唯达者坐空万象,恣玩太虚,深不隐机,浅不触的;犹夫竹林森峙,外值中通,清风忽来,枝叶披亚。有无穷之笑焉,岂复有禁哉?余故于雪涛氏有取焉耳。
<<<

摘几个段子,以飨:

<<<
宋时有显者,既归田,语所知曰:“我们从林下看宦途,知得滋味如此耳;但不知死人住地下,比生时较好否?”所知曰:“一定好。”显者曰:“何以知之?”其人答曰:“但闻林下人思量出去,不闻地下人思想转来。”显者大笑。
<<<


<<<
北人与南人论橄榄与枣孰佳,北人曰:“枣味甜。”南人曰:“橄榄味虽辣,却有回甜。”北人曰:“等你回得甜来,我先甜了一会。”
<<<


<<<
国朝有陈全者,金陵人,负俊才,性好烟花,持数千金,皆费于平康市。一日浪游,误入禁地,为中贵所执,将畀巡城。全跪曰:“小人是陈全,祈公公见饶。”中贵素闻全名,乃曰:“闻陈全善取笑,可作一字笑,能令我笑,方才放你。”全曰:“屁。”中贵曰:“此何说?”全曰:“放也由公公,不放也由公公。”中贵笑不自制,因放之。

及全病革将死,鸨子皆慰全曰:“我家受公厚恩,待百岁后,尽力茔葬,仍为立碑。”全答曰:“好好,这碑就交在身上。”盖世名鸨子为龟,龟载碑者也。
<<<

''下载地址:''[[三家村公开版权精品书籍]]
<span title="寻圣光的人"><a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=40%></a>
</span>

<$list filter="[field:book_title[寻圣光的人]] -[title[Manage Books]]+[sort[created]]">

<$link><$view field="title"/></$link>@@color:gray;  <$view field="description"/> - <$view field="relation"/>@@
<$list filter="[<currentTiddler>days[-7]]">  @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-7]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-20]]"> @@color:gray;^^近期^^@@</$list>

<$transclude/>   

---
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
读完[[我书架上的神明]],使我对读书这件事情认识的更加清晰了。虽然此书上的社会翘楚所列书目多为阳春白雪之书,虽然大部分调查对象对社会上一些书都抱有嗤之以鼻的不屑,而对于读书这件事我们应该报以虔诚和直率。而有些人的读书观我使不认同的。

读书的作用是什么?读书的目的不就是让我们的人生深度和广度有所延展,使我们对世界有所敬畏和尊敬,使我们有更多元的思想和更大包容性的胸怀,让我们有站的更高看的更远,从而仰望慈悲,俯从大众吗。当思考到这些时,我为我之前的一些行为而感到羞愧和自责,我之前总是看不起或者鄙视(至少心里暗自这么想的)哪些读通俗小说、读心灵鸡汤、读成功学、读故事会或者读网络小说的人,是典型的人文沙文主义。我不应该持有鄙夷,我应该更多给与的时同情和关怀(突然我感觉这个表达也是欠妥的,是不对的,似乎还是些许怜悯之意),如果他们和[[我书架上的神明]]书上的一些作者比,他们只是缺少了一些机会,生在一个没有机会或者没有能力受到良好指导和教育的家庭而已。这种读书行为没什么错,也不是不道德和低俗,而仅仅可能只是一种不幸。如果要做到知行合一,我想应该像左宗棠那副对联说的那样去做:

<<<
发上等愿,结中等缘,享下等福;

择高处立,就平处坐,向宽处行。
<<<


//2018年03月01日周四下午10:53:23//
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>

电影:《[[The Call of the Wild|https://ddrk.me/the-call-of-the-wild-2020/]]》
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

《世界顶级思维》这是一本挺垃圾的书,前后用时10分钟看完。一开始看到这本书就断定了他是一本垃圾书。一是作者名字是网名;二是书名大言不惭的号称世界顶级,凡此种种迹象基本上可以断定必为伪书。除此之外,还有一些书名包含“不得不”、“必须”、“不可错过”等这种字眼的书也基本上不值得去翻阅。之所以知道这本书垃圾还要翻看的原因,是看看这位伪作者都整理出来了哪些定律和效应 — 因为我一直在研究认知科学以及思维框架的建立。不过十分钟快速翻阅还是有一些小收获。这本书的编辑选择的大部分定律皆为“软定律”,也就是非自然科学方面,如一些心理学家、政治家以及经济学家等的断言。不能说这些话没有道理,是这些不能称为放之四海而皆准的定律,充其量是一些警句或者鸡汤,正如《[[黑天鹅]]》作者所言,软科学无专家,不要把他们的话奉为圭臬。书中有几条“硬法则”还是有点意思,皆为自然科学方面的现象,如:

''刺猬法则''是指人际交往中的“心理距离效应”,人与人之间需要保持适当的距离,只有这样才能最大限度地感受彼此的美好。

''蜂舞法则:''蜜蜂的舞蹈主要有“圆舞”和“镰舞”两种形式。工蜂回来后,常作一种有规律的飞舞。如果工蜂跳圆舞,就是告诉同伴蜜源与蜂房相距不远,约在100米左右。工蜂如果跳镰舞,则是通知同伴蜜源离蜂房较远。路程越远,工蜂跳的圈数越多,频率也越快。如果跳8字型舞,并摇摆其腹部,舞蹈的中轴线跟巢顶的夹角正好表示蜜源方向和太阳方向的夹角。蜜蜂跳舞时头朝上或朝下,与告知蜜源位置之方向有关:跳舞时头向上,表明找寻蜜源位置必须朝着太阳的方向飞行。蜂舞法则揭示的道理是:信息是主动性的源泉,加强沟通才能改善管理的效果。

''马蝇效应:''没有马蝇的叮咬刺激,马就慢慢腾腾地走走停停;而有了马蝇的叮咬刺激,马就跑得飞快。再懒惰的马,只要身上有马蝇叮咬,它也会精神抖擞,飞快奔跑。

''鲶鱼效应:''挪威人爱吃沙丁鱼,沙丁鱼只有在活鱼时才鲜嫩可口,但由于沙丁鱼不爱动,捕上来不久就会死去。一个偶然的机会,一个渔民误将一条鲶鱼掉进了装沙丁鱼的鱼舱,当他回到岸边打开船舱时惊奇地发现,以前都会死的沙丁鱼居然都活蹦乱跳。渔夫马上发现,这是先前掉进去的鲶鱼的功劳。沙丁鱼要想躲过“被吃”的噩运,就必须在鱼槽内拼命不停地游动,最终大部分沙丁鱼都能活着返港。

''毛毛虫效应:''打破常规,破旧立新。
法布尔曾经做过一个著名的实验:他把许多毛毛虫放在一个花盆的边缘上,使其首尾相接围成一圈,在花盆周围不远的地方撒了一些毛毛虫喜欢吃的松叶。毛毛虫开始一个跟着一个绕着花盆的边缘一圈一圈地走,一小时过去了,一天过去了,又一天过去了,这些毛毛虫还是夜以继日地绕着花盆的边缘在转圈。一连走了七天七夜,它们最终因为饥饿和精疲力竭而相继死去。毛毛虫习惯于固守原有的本能、习惯、先例和经验,无法破除尾随习惯而转向去觅食。后来,人们把这种喜欢跟着前面的路线走的习惯称之为“跟随者”的习惯,把因跟随而导致失败的现象称为“毛毛虫效应”。

''羊群效应:''投资理财不是赶时髦 
在一群羊前面横放一根木棍,第一只羊跳了过去,第二只、第三只也会跟着跳过去;这时把那根棍子撤走,后面的羊走到这里,仍然像前面的羊一样向上跳一下,这就是所谓的“羊群效应”,也称“从众心理”。

''托利得定理:''思可相反,得须相成。
测验一个人的智力是否属于上乘,只看脑子里能否同时容纳两种相反的思想而无碍于其处世行事。两种正反思想共存,说明你能够听进不同意见,能把反对意见加以分析,从而对决策起到积极的影响。

''前景理论:''前景与风险是一对双胞胎。
包括三个基本原理:一是大多数人在面临获得时具备风险规避意识;二是大多数人在面临损失时具备风险偏爱倾向;三是人们对损失比对获得更敏感。

2019年05月08日周三下午11:11:27


<$transclude mode="block" tiddler=bookkeywords/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$checkbox> 的为已读但未完成读书笔记的书籍,☑️的为已读并写完读书笔记的书籍。

<$macrocall $name=table-dynamic filter="[tag[已读]]" fields="tbl-checkbox tbl-expand title author genre created due" class="w-100" stateTiddler="your-state-tid"/>


<$button message="tm-close-tiddler">Close Me!</$button>


<$transclude mode="block" tiddler=bookinfo/>
希腊神话是一套庞大复杂的序列(希腊神话和罗马神话既既有相通的部分,也有差异,并不是一回事)。希腊人认为神话是他们的历史的重要组成部分,他们用神话故事来解释自然现象,文化变更以及传统的憎恨和友谊。神话其是希腊人对自己的领袖具有神话中的英雄或者神的血统的骄傲的根源(凯撒大帝自称埃涅阿斯后裔 <<ref "②">>,尊维纳斯为罗马人祖先)。基本上没有人会怀疑《伊利亚特》和《奥德赛》所描述的特洛伊战争后面的真实情况。这和中国历史上的神话故事不一样,中国神话人物体系有两部分组成,一部分是舶来的,印度佛教中的一系列人物,如如来、菩萨等;一部分是本土神话人物,主要是道教人物,如太白李金星等,还有一部分是神话故事中的人物,如齐天大神。中国神话对中国文化影响远远不如古希腊文化在当地人民心中的地位,只能算作民间实用性崇拜,求神拜佛,祈求平安,远没有上升到庙堂政治系统,尽管中国历代皇帝都以天子自居,号称天命神授,其实无非是蛊惑民心巩固自己权利和标榜政治地位的正统而已。

<$details summary="《维纳斯的诞生》作者:威廉·阿道夫·布格罗 | 1879年" class="notification">
[img[https://upload.wikimedia.org/wikipedia/commons/thumb/b/bb/William-Adolphe_Bouguereau_%281825-1905%29_-_The_Birth_of_Venus_%281879%29.jpg/1024px-William-Adolphe_Bouguereau_%281825-1905%29_-_The_Birth_of_Venus_%281879%29.jpg]]
</$details>  


//注:维纳斯的诞生,共有三幅作品,还有://  <<ref "①">>

<$details summary="亚历山大·卡巴内尔 | 1863年 | 藏于巴黎奥塞美术馆">
[img[https://one.rizi.me/Photos/rizime/1200px-1863_Alexandre_Cabanel_-_The_Birth_of_Venus.jpg]]
</$details> 

<$details summary="威廉·阿道夫·布格罗 | 1879年 | 藏于巴黎奥塞美术馆">
[img[http://one.rizi.me/Photos/rizime/637px-William-Adolphe_Bouguereau_(1825-1905)_-_The_Birth_of_Venus_(1879).jpg]]
</$details> 

今天的人物主角是维纳斯(Venus),古罗马神话中的爱神、美神,同时又是执掌生育与航海的女神,拉丁语的“金星”和“星期五”等词都来源于她。与之对应的古希腊神话中的爱神叫阿佛洛狄忒(Aphrodite),但她与维纳斯不同的是,阿佛洛狄忒不只是性爱女神,她也是司管人间一切情谊的女神。在希腊神话中,阿佛洛狄忒是奥林匹斯十二主神的一柱。

<$details summary="古希腊爱神阿芙洛狄蒂雕像,现藏于希腊雅典国家考古博物馆">
[img[https://upload.wikimedia.org/wikipedia/commons/0/02/NAMA_Aphrodite_Syracuse.jpg]]
</$details> 

维纳斯(Venus)出生于大海之中。相传在世界之初,统管大地的该亚女神与统管天堂的乌拉诺斯结合生下了一批巨人。后来夫妻反目,该亚盛怒之下命小儿子克洛诺斯用镰刀割下其生殖器掉入大海。阳具生出泡沫,维纳斯就这样诞生了。希腊语中“维纳斯”的意思就是泡沫。

<$details summary="乔尔乔内+体香| 沉睡的维纳斯 | 1510">
[img[https://upload.wikimedia.org/wikipedia/commons/thumb/8/86/Giorgione_-_Sleeping_Venus_-_Google_Art_Project_2.jpg/1920px-Giorgione_-_Sleeping_Venus_-_Google_Art_Project_2.jpg]]
</$details>  

维纳斯(Venus)也有两位情人,一个是罗马神话中的重要的战神玛尔斯(拉丁语:Mars,玛尔斯的节日是在三月和十月,拉丁语的“火星”和英语的“March”正是源自玛尔斯),另外一位情人是希腊神话中有名的美男子阿多尼斯(Adonis)。阿多尼斯(Adonis)是一个每年死而复生,永远年轻的植物神,他与年历有深厚的联系,由于阿多尼斯(Adonis)长的俊美而永远年轻,是一个受妇女崇拜的神。维纳斯和阿多尼斯(Adonis)的相爱是由于她那俏皮的儿子丘比特惹的祸,有一天母子玩耍时丘比特的箭不小心划伤了维纳斯(Venus),在养伤时遇到了阿多尼斯(Adonis)而相爱。

<$details summary="波提切利 |《维纳斯与战神》|1483">
[img[https://upload.wikimedia.org/wikipedia/commons/thumb/7/7d/Venus_and_Mars.jpg/2560px-Venus_and_Mars.jpg]]
</$details> 

<$details summary="《维纳斯与阿多尼斯 Venus and Adonis》作者:Peter Paul Rubens | Museum Kunstpalast">
[img[http://one.rizi.me/Photos/rizime/Francois-Lemoyne-Venus-and-Adonis.jpg]]
</$details> 

丘比特的箭不止使他母亲陷入爱河,也曾自伤而遭遇爱情。传说有一个国王的女儿名叫普赛克(赛姬Psyche),长得十分美丽,人们认为她就是美神的化身,而忽略了丘比特的母亲维纳斯的神庙。维纳斯十分生气,便请了丘比特去对赛姬射下金箭,要让她爱上世界上最丑陋的男人。当丘比特飞到熟睡的赛姬床前时,见到赛姬的美丽,使得已经拉开的金箭不小心刺破自己的手指,从此丘比特便爱上了赛姬。爱情害人害己啊:)

<$details summary="《儿时的丘比特和赛琪》作者:威廉·阿道夫·布格罗 |1890">
[img[https://upload.wikimedia.org/wikipedia/commons/thumb/4/48/Bouguereau_first_kiss.jpg/800px-Bouguereau_first_kiss.jpg]]
</$details> 

<$details summary="《抵御爱神》作者:威廉·阿道夫·布格罗 |1880">
[img[http://one.rizi.me/Photos/rizime/diyuaishen.jpg
]]
</$details> 

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "①" "威廉·阿道夫·布格罗(William Adolphe Bouguereau,1825年11月30日 - 1905年8月19日),是19世纪末的法国学院派画家。布格罗的绘画常用神话作为灵感,以19世纪的现实主义绘画技巧来诠释古典主义的题材,并且经常以女性的躯体作为描绘对象。布格罗在世时于法国和美国都享有高度的名声,并且在一生中获得众多的荣誉,同时他的作品在当时也都以超高价卖出。作为那个时代沙龙画家中的佼佼者,布格罗成为后来崛起的印象派等前卫艺术的首要攻击对象,并且在20世纪由于现代主义的崛起而被遗忘。到了1980年代,对于人物画和19世纪画风的兴趣重新崛起,布格罗的绘画才又开始被重视,并且被认为是学院派艺术最重要的画家之一。在他一生中,布格罗总共画了822幅当下已知的画,除此之外还有其他许多作品的下落不明。">>

<$details summary="《埃涅阿斯奔离燃烧的特洛伊城》,菲德里克·巴洛奇在1598所画,现存于罗马的博尔盖塞美术馆">
[img[https://upload.wikimedia.org/wikipedia/commons/f/f7/Aeneas%27_Flight_from_Troy_by_Federico_Barocci.jpg
]]
</$details> 

<<footnotes "②" "埃涅阿斯,特洛伊英雄,宙斯7世孙,安基塞斯王子与爱神阿佛洛狄忒(相对于罗马神话中的爱神维纳斯)的儿子。维吉尔的《埃涅阿斯纪》描述了埃涅阿斯从特洛伊逃出,然后建立罗马城的故事。他在希腊与罗马神话及历史中扮演很重要的角色。">>


注:看高清大图请前往Google Arts & Culture,本文图片均来于此。

2018年05月06日周日下午12:00:13
<<<
在古希腊,嫖妓是日常生活的一部分,卖淫属于合法行为,甚至还有雅典的国立廉价妓院,据说是由古希腊七贤之一的立法者梭伦建立的。同时期的东方,公元前8世纪,东西方不谋而合,妓业昌盛,丞相管仲建立了中国历史上第一个官方妓院,把妓女纳入国家公务员编制,由国家财政专款专用供养,设立专门机构,实行妓女职业化和国营化。全世界任何统治阶级都是一样的,行为的合法和不合法要看是否有利可图和便于维护统治权。清代的褚学稼在《坚瓠续集》卷中说:“管子治齐,置女闾七百,征其夜合之资,以充国用,此即教坊花粉钱之治也。”古希著名演讲家嫁名狄摩西尼有一个著名的演说:“如愿偿欲,吾辈有妓;嘘寒问暖,吾辈有妾;延子嗣、守家业,则吾辈有妻。”(《诉涅艾拉斯》)在古代,并不像现代人一样,在嫖妓这件事上背上沉重的道德包袱。
<<<

古希腊,交际花属最高级别的妓女,跟其他妓女不同,交际花不止为客人提供性服务,也并非逐次收费。古希腊文中,“交际花”一字本作“伴侣”解。这有点像日本的艺妓,更像中国的青楼女。青楼在中国文化中的地位可以用屋之横梁来形容,它不仅是文人骚客把酒弄欢,抒发请操场所,更是中国歌舞声乐文化的发源地和承载者。《全唐诗》将近5万首中,有关妓女的达2000多首。宋代“群妓合金葬柳七”,说的就是谢玉英、陈师师一班名妓凑钱安葬柳永的事迹。到了近代民国时期,更有甚者,民国三公子之一,袁世凯次子袁克文去世时候,有上千名妓女浩浩荡荡的为其送葬。芙里尼也就是这样一位青楼女子。


芙里尼的美貌当时艳压群芳,成为炙手可热的倾国人物,当然夜资也高昂,她的收入甚至多到能够让她资助忒拜城墙的修复。“婊子”也并非全部无情,她对一些颇具才情的人雨露均沾,例如主动为哲学家第欧根尼·拉尔修献身,而对一些为富不仁的富人和国王开出天方夜谭的价格。

<<imageSlider  [[https://cl.ly/r35o/%E9%98%BF%E8%8A%99%E7%BD%97%E7%8B%84%E5%BF%92.jpg]]    "《阿芙罗狄忒》作者:克尼多斯 | 卢浮宫">>

芙里尼也有不少情人,著名的雕塑家普拉克西特利斯就是其中一位,他的许多作品就是以芙里尼为原型,例如著名雕塑克尼多斯的《阿芙罗狄忒》,这个雕塑描绘的是阿佛洛狄忒正在准备沐浴,以重新获得贞洁(古希腊对话录作品《爱》(Erotes)中曾经讲了一个故事:尼多斯的阿佛洛狄忒雕塑是如此的美丽、性感、栩栩如生,以至于当它被摆放在尼多斯岛一个神庙中时,一个年轻人竟在半夜闯入了神庙,企图和她共赴巫山云雨。可见芙里尼的魅力,已经穿透了冰冷的大理石,散播到了蠢蠢欲动的荷尔蒙中)。

<<imageSlider  [[https://cl.ly/r28t/%E8%8A%99%E4%B8%BD%E6%B6%85%E7%9A%84%E5%AE%A1%E5%88%A4.jpg]]    "《芙丽涅的审判》作者:何塞·弗朗帕">>

芙里尼人生中最浓墨重彩、也最被世人津津乐道的一笔,莫过于对她的审判了。这是由于她被一个旧情人控告亵渎厄琉息斯的神明,法庭的审判眼看就要对她不利。此时芙里尼轻揭罗衣,露出她美丽的双乳,使在场的法官为之瞠目结舌,最后作出了无罪的判决。在古希腊的文化中,身体的美丽往往被认为体现了神性或是证明了神明的眷顾,从而对芙里尼引罪不究(这就是著名的热罗姆(Jean-Léon Gér?me)的《法庭上的芙里尼》油画)。谁说不是那,美貌生而有之,是上天的馈赠,是一种资本,也是一种利器。

<<imageSlider  [[https://cl.ly/r1Cf/%E6%B3%95%E5%BA%AD%E4%B8%8A%E7%9A%84%E8%8A%99%E9%87%8C%E5%B0%BC.png]]    "《法庭上的芙里尼》作者:热罗姆  |  汉堡艺术馆藏">>

后世也有很多人恶搞这个传说和名画。比如下面这幅画,为讽刺1884年美国总统候选人詹姆斯·G·布莱恩(James Gillespie Blaine)所作。

<<imageSlider  [[https://cl.ly/r2PJ/download/%E8%AE%BD%E5%88%BA1884%E5%B9%B4%E7%BE%8E%E5%9B%BD%E6%80%BB%E7%BB%9F%E5%80%99%E9%80%89%E4%BA%BA%E8%A9%B9%E5%A7%86%E6%96%AF%C2%B7G%C2%B7%E5%B8%83%E8%8E%B1%E6%81%A9.jpg]]    "讽刺1884年美国总统候选人詹姆斯·G·布莱恩">>

当然美丽也是一种力量,可人的女子往往会在云淡风轻中成为艺术和历史的配角。据说在一次波塞冬(波塞冬希腊神话中的,宙斯的哥哥,黑帝斯的弟弟)节上芙里尼当众宽衣解带,长发披肩,在众人瞩目中缓缓步入海中。此情此景正好击中了画家阿佩勒斯(Apelles)的艺术灵感,使他创作出了著名的《爱神从海中诞生》。后世所有与爱神维纳斯诞生有关的画作,都受到阿佩莱斯作品的启发。比如上一篇文章中提到的画家桑德罗·波提切利。艺术家因美人而不朽,美人因艺术家而重生。

<<imageSlider  [[https://cl.ly/r2wQ/%E5%87%86%E5%A4%87%E4%B8%8B%E6%B5%B7%E7%9A%84%E8%8A%99%E9%87%8C%E5%B0%BC.jpg]]    "《准备下海的芙里尼》作者:西米尔拉德斯基">>

注://看高清大图请前往[[Google Arts & Culture|https://artsandculture.google.com/]],本文图片均来于此。//

2018年04月20日周五下午10:24:04
```
“从女巫初现人世,就没有父母、儿女、配偶、家庭。
她是一个魔怪、一块陨石,弄不清是从哪儿来的。
上帝啊!谁敢走近她?她又待在哪里?
荆棘丛生的野林、人烟不至的荒地,都有她的踪影。
夜里她则栖身在一张古老的桌子下。
大家害怕撞见她,这使她更加孤独。
她的周围像围了一道火篱笆,谁想过她还是个女人?
即使过着这么可怕的生活,她还是保持着张弛有度的女性活力、女性的吸引力……”  
----米歇莱《女巫》
```

<$details summary="克劳迪奥·布拉沃《女巫》" class="notification">
[img[http://one.rizi.me/Photos/rizime/claudio bravo painter chile.jpg]]
</$details>

女巫应该是人类最古老和神秘的职业,先于宗教,不属于神,不属于人,从事人神之事,介乎天人之间,是神与人的中介人。世说只有阴性之人才通灵,所以中外文化中,凡巫,必为女性为灵媒,如中国东北萨满女巫、壮族的雅禁(俗称禁婆)。古老的《礼记·檀弓》中有这样的记载:“岁旱,穆公召县子而问曰:‘吾欲暴巫而奚若?’曰:‘天则不雨,而望之愚妇人,无乃已疏乎?’”女巫为阴,天旱当以女巫求雨。此用女巫之证。

女巫既隶属三界之外,儒释道的仁义道德、宗教戒律皆与之无关。所以无论中外,女巫的形象皆非主流,神秘、黑暗和性错乱。寓意敦伦之事的“巫山云雨”的“巫”就与之有关。宋玉《高唐赋》:“昔者先王尝游高唐,怠而昼寝,梦见一妇人,曰:妾为高唐之客,闻君游高唐,愿荐枕席。王因幸之。去而辞曰:妾在巫山之阳,高丘之阻,旦为朝云,暮为行雨,朝朝暮暮,阳台之下。”其实这事可能就是王做了一个春梦而已。王国维在《宋元戏曲史》论及楚国女巫:“至于浴兰沐芳,华衣若芙,缓节安歌,歌舞之盛也。乘风载云之词,生别新知之语,荒淫之意也。是则灵之为职,或偃蹇以像神,或婆娑以乐神...”。就是说楚国女巫貌美放荡,神秘不逮。

西方世界的女巫形象较之中国过犹不及,就看其招牌 --- --- 黑色的斗篷、胯骑扫把 --- --- 就可见一斑。

为什么女巫要骑一把扫把?这和像哈利波特里面女巫的神通毫无关系,与致幻剂和性有关。

<$details summary="汉斯·巴尔东·格里恩在1508年画的女巫图" class="notification">
[img[http://one.rizi.me/Photos/rizime/汉斯·巴尔东·格里恩在1508年画的女巫图.JPG]]
</$details>

在欧洲中世纪及文艺复兴时期,大部分面包都是用黑麦做的。而黑麦和类黑麦植物容易滋生麦角菌,这种菌有致幻作用。简单摄入这些迷幻剂后会令人产生各种不适,包括恶心、呕吐、皮肤过敏等。后来人们发现,通过皮肤吸收不会出现以上的副作用,并且伴有欢快的致幻效果,而身体上最容易吸收的部位是腋窝处的汗腺,以及阴部的黏液膜。迈克尔·J.哈纳挑在《致幻植物在欧洲巫术中的角色》一文中有这样的论断:“他们在洗劫那位女士(女巫)家的壁橱时,发现了一烟斗的油,是抹杆子用的,一根与她同甘共苦的杆子,飞驰缓行全靠它。”还有1470年左右的这篇记载:“但是平民们认定,女巫们也承认:在特定的白天或夜晚,她们会在一根杆上涂油然后骑着它前往指定地点,或把油涂在自己的腋下和其他长毛的部位。”  也就是说,扫把是女巫们自慰的器具。

<$details summary="Luis Ricardo Falero :《Witches on the Sabbath》(1878)" class="notification">
[img[https://upload.wikimedia.org/wikipedia/commons/d/d3/Witches_going_to_their_Sabbath_%281878%29%2C_by_Luis_Ricardo_Falero.jpg]]
</$details>

<$details summary="《安息日的开始》,艾伯特·约瑟夫·佩诺1910年创作" class="notification">
[img[http://one.rizi.me/Photos/rizime/安息日的开始.jpg]]
</$details>

<$details summary="《The Dance of the Witches》 伊萨克·伊里奇·列维坦-1882" class="notification">
[img[http://one.rizi.me/Photos/rizime/DpopLZkW4AAKNad.jpg]]
</$details>

西方神话故事中出没最多最有名的女巫,当属希腊神话中的瑟西(Circe) 、米蒂亚(Medea) 和卡珊德拉(Cassandra) 。

瑟西(Circe),最著名的女巫,具有强大的魔力,令人畏惧。她能透过药草的协助,诵念咒语与召唤神明来施法,冒犯她的人会变成动物,并创造出不存在的幻影,她可以藏住月亮与太阳让大地一片漆黑,也会下毒来杀害她的敌人。她名字已经是是女巫、女妖、巫婆等的代名词。

<$details summary="Evelyn De Morgan:《Cassandra》" class="notification">
[img[https://upload.wikimedia.org/wikipedia/commons/thumb/4/42/Cassandra1.jpeg/566px-Cassandra1.jpeg
]]
</$details>

<$details summary="Evelyn De Morgan:《Night and Sleep 》" class="notification">
[img[https://upload.wikimedia.org/wikipedia/commons/thumb/f/fc/Night_and_Sleep_-_Evelyn_de_Morgan_%281878%29.jpg/1600px-Night_and_Sleep_-_Evelyn_de_Morgan_%281878%29.jpg
]]
</$details>

米蒂亚(Medea),由爱生恨的复仇女巫。她是科奇斯岛国的公主,也是女祭司,一生命运乖舛,她爱上了与她父亲作对的杰逊王子,这段姻缘最后以悲剧收场。米蒂亚是月亮女神的干女儿,所以她懂得使用许多的黑魔法,她会调制灵药、占卜、下毒。不但法术高强也非常聪明与残忍,她曾为了杰逊,亲手杀了她自己的弟弟。后因为杰逊移情别恋,与邻国的公主结婚,被情人抛弃的米蒂亚一怒之下,制作了一件沾满毒药的礼服,送给杰逊的未婚妻,将其杀害。甚至还亲手杀了自己为杰逊生下的两名稚子,最后架著由著龙所拉的车离开。

卡珊德拉(Cassandra),特洛伊的女预言家。因为她能预知未来,所以被归在女巫之列。据说卡珊卓拉的力量来源是因为有一天真理之神阿波罗看见了卡珊卓拉,便爱上了她,阿波罗赐予她预知未来的能力,卡珊卓拉却拒绝了阿波罗的示爱,恼羞成怒的阿波罗对她下了一个诅咒,让别人永远不相信她所说的话,因此注定她永远知道真相却无力阻止悲惨的事情发生。她是特洛伊的人,她预言若是将木马迎进城内,特洛伊城必遭毁灭,却无人相信,特洛伊就这样灭亡了。

<$details summary="Medea by Anthony Frederick Augustus Sandys " class="notification">
[img[https://upload.wikimedia.org/wikipedia/commons/thumb/3/3f/Medea-Sandys.jpg/500px-Medea-Sandys.jpg
]]
</$details>

不管是在西方还是东方,女巫似乎都处在天地交错的阴影里,为所谓的主流社会和价值观所不容。最著名的当属中世纪“欧洲女巫大审判”。1484年,两位教士亨利希和耶科布,撰写了《女巫之槌》,书中详细列举了很多种识别女巫的方法,这是一部猎杀女巫手册,由此引发了声势浩大的女巫大屠杀。

中世纪的女巫大审判有着非常黑暗的一面,绝大多数被处死的“女巫”都是无辜的女性。对于女性不公平的审判可以从《女巫之槌》记叙中得知:“如果被告过着不道德的生活,那么这当然证明她同魔鬼有来往;而如果她虔诚而举止端庄,那么她显然是在伪装,以便用自己的虔诚来转移人们对她魔鬼来往和晚上参加巫魔会的怀疑。如果她在审问时显得害怕,那么她显然是有罪的,良心使她露出马脚。如果她相信自己无罪,保持镇静,那么她无疑是有罪的:因为女巫们惯于恬不知耻地撒谎。如果她对向她提出的控告辩白,这证明她有罪;如果她由于对她提出的诬告极端可怕而恐惧绝望、垂头丧气,缄默不语,这已经是她有罪的直接证据。如果一个不幸的妇女在受刑使因痛苦不堪而骨碌碌地转眼睛,这意味着她正用眼睛来寻找她的魔鬼;而如果她眼神呆滞、木然不动,这意味着她看见了自己的魔鬼,并正看着他。如果她发现有力量挺得住酷刑,这意味着魔鬼使她支撑得住,因此必须更严厉地折磨她;如果她忍受不住,在刑罚下断了气,则意味着魔鬼让她死去,以示使她不招认,不泄露秘密。”

借由“猎杀女巫”之名,三个世纪内约有十万人被处死,其中绝大多数是女性,尤其集中在宗教改革时期的欧洲地区。

2018年04月27日周五下午06:26:49
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

《萤窗清玩》是一本消遣书。故事也很俗套,与其他古代小说没有什么两样,无非是才子佳人,一见倾心,历经磨难,最终才子蟾宫折桂并抱得美人归。全书总共四个故事,第一个《连理枝》写的最精彩,其余三个可看可不看。

第一卷故事结尾有一评论倒也中肯:


<<<
烟花子曰:此传标其题曰《连理枝》以桃李柳三家,固结缠绵,有合乎连理之义也。看他全传,将桃李柳三人,写得异艳奇香,翘然物表。而当日英光浩气,犹觉咄咄迫人。又不同一味娇柔喁喁儿女也。 水平以儒修而该将略之才,已是五分难写。至碧仙以蛾眉而备龙韬之选,更是十分难写了。所以稗官俗说,于此等传,往往夸以勇力,藉以神通,资以法术,虚夸诞妄,直可当一狗屁观。。。。视俗本之夸以勇力,藉以神通,资以法术者,相去何啻天渊者哉。
<<<


这本书还有一个彩蛋,文末第五卷附了一篇《香闺十胜》。把古代闺房女子的妙处分为十项:一闺秀、二闺色、三闺才、四闺德、五闺态、六闺情、七闺事、八闺具、九闺饰、十闺迹。闺色为:

<<<
杏脸 蛾眉 蛮腰 玉骨 粉颈 冰心 香鬟 云鬓 桃腮 蝉鬓 凤眼 冰肌 朱颜 玉臂 酥乳 星眸  蕙质 莺声 温香 芙蓉面 窄窄金莲 一行玉齿
兰心 燕语 软玉 杨柳眉 纤纤玉笋 半点朱唇
指露春葱 一天丰韵 摄魄销魂 沉鱼落雁 生香玉
眼横秋水 万种风流 倾城覆国 闭月羞花 解语花
<<<


闺态:

<<<
匿笑 窥帘 撩萤 顾影 慵睡起 小打扮 欲前且却
含羞 倚户 拍蝶 惊人 倦游回 淡梳妆 似爱仍羞
薄带愁容 愁弹玉指 半露半藏 颜羞轻咬袖
<<<

足可见古人之审美观了。
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
在Twitter上看到有人推荐老舍这部作品的同名电影。我是先看了电影,再看了小说文本。

电影是黑白风格,有一种老电影的感觉,对还原故事发生时代 --- 民国 --- 有强烈的代入感。主演范伟 --- 丁主任丁务源 ---刷新了我对他的认识,看电影时我完全剥离了其喜剧演员的身份。电影故事,通过三个主人公 --- 丁主任、秦妙斋、尤大兴 --- 的逐一入场分成三段式结构,就像小说的三个小节。电影故事很简单,然而人物细节的演绎确然人唏嘘不已。虽然《不成问题的问题》里老舍描写的是民国环境下发生的故事,那么一个世纪有的今天,这个小说刻画的人物您仍然能在身边找到,而且是普遍存在。我想即便老舍先生即便活到现在,也会喟然感叹中国人何等的不长进。

电影中丁主任对自己管理的企业为什么不能盈利的回答穿越100年到今天也依然是最具时代代表性:

<<<
“等企业走上正规,明年会盈利的!”
<<<

//2019年01月03日周四下午02:02:49//


''电影《不成问题的问题》:''(需科学上网)

<iframe width="600" height="315" src="https://www.youtube.com/embed/mUCBKxidpgc" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<$transclude mode="block" tiddler=bookinfo/>
<<<
在评论家看来,埃利亚斯是在“用一种受控的语言书写”。而他的个人经历与学术作品之间的紧密关系表明,“受控”绝非风格那么简单,而是社会学中至关重要的核心观念。
<<<

1935年冬天的一个黄昏,一个中年男子乘船渡过英吉利海峡,从伦敦港踏上了大不列颠的土地。寒风中,他跟随着人潮沉默前行,去往流亡犹太人基金会。无人能体味他当时的感受,甚至包括未来的自己。不过有件事今天看来可以肯定,这个人前半生的记忆将长久封存在海峡的另一边——没有人会对一个普通犹太难民的经历感兴趣,他也无暇沉湎过去。他得去找点儿资助,还要学一些口语,才可能应对现实的窘境。

几番周折,在朋友的帮助下,中年人以学者的身份从基金会拿到了一小笔奖学金。在证明文件里他写道:诺贝特·埃利亚斯(Nobert Elias,港台也翻译为:诺博特·伊里亚思),生于1897年6月22日,哲学博士,社会学家。除此之外,再无文字。

封存个人的记忆,然后转身离去,对于38岁的埃利亚斯来说,不是第一回了。1915年,刚满18岁的埃利亚斯投身一战,就不得不将一段安宁祥和的记忆埋进心里。他出生在德国东部的布雷斯劳(Breslau,今波兰城市弗罗茨瓦夫),父母都是犹太人。身为纺织业厂主的独生子,埃利亚斯有一个几近完美的童年。玩具、保姆、家庭教师、网球、海滨度假,上层中产阶级应有的享受,他都拥有。虽说犹太人的择业仍有传统上的限制,例如不能担任官员,不能晋升某些教职等等,彼时的德国尚闻不到浓烈的排犹气息。在父母的安排下,埃利亚斯打算从医,那是犹太人最理想的职业之一。可是待他从著名的约翰尼斯文法中学毕业,即将迈入布雷斯劳大学校门之际,第一次世界大战爆发了。第二年,埃利亚斯先在东线作战,后来调到西线战场。年轻的通信兵背着笨重的电报机,肩扛大卷的电线,和部队一起向法国北部的佩罗讷(Péronne)挺进。密集的炮火撕开夜色,随处可见战马和士兵的尸体。一场战斗下来,远方还有隆隆的炮声,身边的战友已吹响口琴,唱起思乡的歌谣。

“那个场景我记得清清楚楚,”和一位访客谈起这段往事,埃利亚斯情绪激动。同时,他一再承认自己理解不了,“从家庭提供的彻底的安全感转向军队提供的彻底的不安全感”,他是怎么熬过那段日子的。因为,当他尝试去回忆去理解的时候,往事已经尘封七十年。绝大多数记忆在时光中磨损、阻隔、变形,化为齑粉,就算重新唤起,往往也会显得不可思议。

被埃利亚斯封存的关键记忆实在太多了。比如他极少向人提及,德国在一战中的失败如何影响了他的学业和志趣。战争的硝烟散去,并不意味着和平的到来。左右两派的极端势力都企图用暴力推翻羸弱的魏玛共和国,建立他们心目中的秩序。失业的军官和士兵组成了暗杀团,刺杀政治人物,制造恐怖气氛。高昂的战争赔款导致恶性的通货膨胀,榨干了无数德国家庭的财产。迟迟没有拿到哲学博士学位的埃利亚斯只得选择辍学打工维持生计。他做过五金材料厂的营销经理,还短暂客串过报纸的新闻记者,辛苦了整整两年,才帮助陷入财务危机的父母渡过难关。

正因为亲身经历了一战的残酷以及战后的失序,埃利亚斯的心中才浮现出一个重大的问题:暴力与秩序究竟有什么关系?然而当他带着这一疑问走上学术之路,却遭遇了更具体的困惑。

读大学的时候,埃利亚斯原本同时攻读医学和哲学,还取得了初级医学学位和实习医生资格。结果临床实习期间他才发现,自己不可能兼顾两个专业。为了更好地理解世界,他放弃医学,专志于哲学。可是长期的医学训练却不断地提醒他,哲学传统中的“人”与生理学意义上的“人”很不一致。理性、精神、意志、心灵,哲学家讨论的这些东西,在肌肉、骨骼、神经和大脑中能找到对应的结构吗?或者,西方哲学传统中抽象出来的“人”根本不存在?这些困惑不仅驱使着埃利亚斯的脚步偏离了既定的学术坦途,还令他和导师之间产生了不小的冲突。他的博士导师洪尼希斯瓦德(R. Honigswald)是著名的新康德主义 <<ref "①">> 哲学家,对学生的离经叛道大为不满。压力之下,埃利亚斯不得不对博士论文做了大量的修改和删节。即便如此,本该于1922年拿到的博士学位拖到两年后才取得。

师生之间的这场冲突,在埃利亚斯的学术道路上投下了第一道难以抹去的黯淡阴影。表面上看,它只是稍微延误了一个学者的治学进程,事实上却造成埃利亚斯错过了一个个关键的时间节点。首先,他很难获得“特许任教资格”。因为要获得这个资格,他得写一篇比博士论文更高水准的东西,交由学术委员会答辩并通过。显然,在洪尼希斯瓦德的影响范围内,前景渺茫。可是没有这个任教资格,他就不可能拥有“编外讲师”这个身份。而没有这一身份,他就休想获得大学的聘任。也就是说,至少在当地,埃利亚斯失去了学术研究和传道授业的机会。

另一方面,埃利亚斯从这场冲突中看到了哲学的无能。特别是对新康德主义这一类剥离了历史维度的先验哲学,他产生了生理上的厌恶。他决定将布雷斯劳的大学记忆封存起来,告别家乡,告别哲学,前往海德堡(Heidelberg)学习新专业——社会学。自此以后,终其一生,埃利亚斯都用“哲学的”(philosophical)这个单词评价他认为最负面的学术作品。

怀着重获新生的兴奋,1924年秋天埃利亚斯来到了海德堡。很快他发觉,这里的现实同样残酷。大学时期他曾经参加过哲学家卡尔·雅斯贝尔斯(Karl Jaspers)的研讨班,对海德堡大学的学术氛围十分向往。时过境迁,社会学的主要创始人马克斯·韦伯(Max Weber)已经去世,他的弟弟阿尔弗雷德(Alfred Weber)像宗族继承者那样统治着整个学术领域。韦伯兄弟把同事和学生团结在一起,构成了一个旁人很难涉足的谱系。像埃利亚斯这类毫无根基的向往者,只能尴尬地出现在各种研讨会的后排,拼命地做笔记。偶尔,他也有机会和滕尼斯(Ferdinand Tönnies)、桑巴特(Werner Sombart)这些古典社会学的大家交谈几句。不过很难想象,那些人会记得他。

在那段日子里,埃利亚斯不得不靠给留学生补习德语赚取生活费。后来,他终于成为海德堡大学的正式学生,阿尔弗雷德·韦伯的博士候选人。但是,鉴于严格的进阶顺序,以及犹太人的微妙身份,他在学术上的前途可谓遥遥无期。
他最大的收获可能是结识了卡尔·曼海姆(Karl Mannheim),一位来自匈牙利的犹太学者。此人仅比埃利亚斯大三岁,却已经是众人瞩目的学术新星。正是在他的引荐下,埃利亚斯才得以出入韦伯遗孀举办的学术沙龙,并且鼓起勇气在阳台上宣读自己的第一篇社会学论文。然而在1928年德国社会学协会的会议上,曼海姆与韦伯长期的竞争公开化了。这场学术冲突再一次改变了埃利亚斯的命运——在师生关系与朋友情谊之间,他选择了后者。翌年,曼海姆受聘为法兰克福大学社会学教授,埃利亚斯以学术助手的身份追随而去。曼海姆承诺,只要做三年助教,就帮助他取得特许任教资格。

再一次,埃利亚斯将过去封存,按照重新拟定的计划,展开新的学术探索。在法兰克福,他不仅拿到了学术生涯中第一份正式的薪水,并且顺利地在三年内完成了题为《宫廷社会》的任教资格论文。一切都表明,法兰克福的日子远比海德堡好过。可是,1933年的年初,就在埃利亚斯完成论文的时候,希特勒和纳粹夺权了。曼海姆兑现了承诺,在指导了论文答辩后,旋即被校方革去了教席,匆匆流亡英伦。而那篇《宫廷社会》的打印稿,就像埃利亚斯的记忆一样被封存起来,三十六年后才重见天日。

在法兰克福逗留期间,埃利亚斯再度体验到暴力与秩序的错综关系。他戴上圆猎帽,架着单片眼镜,装成贵族的样子混迹人群,去亲眼目睹希特勒的煽动能力。不久,一个党卫军中校开着敞篷吉普车冲进学校,咆哮着逼他交出社会学系的钥匙。埃利亚斯的结论是,所谓的理性根本压制不住暴力。在特定条件下,暴力甚至会利用理性,把自己组织得有条不紊。

1933年底,埃利亚斯怀揣父母倾尽所有的钱财逃到法国。他与在法兰克福认识的一个雕刻家和一个作家建起了一家小型的木制玩具厂。就像在布雷斯劳干过的那样,他又一次扮演营销经理的角色,奔走在巴黎大大小小的卖场。不到九个月,小厂就倒闭了,埃利亚斯陷入赤贫。数十年后他回忆道,虽然半生困顿,但唯有巴黎,让他真真切切尝到了饿肚子的滋味。
两年之后,希特勒撕毁凡尔赛和约,实行义务兵役法,开始扩充军备。同时纳粹德国还通过了纽伦堡法案,剥夺了犹太人的国民权利。在这种情况下,埃利亚斯接受一个移居剑桥的老朋友的建议,前往英国寻求庇护。于是1935年底,他登上了横渡英吉利海峡的客船。

在纳粹崛起的大背景下,像埃利亚斯那样流亡英国的犹太学者很多。那个时期,自然科学工作者尚好,人文社科类的学者很难找到工作,更别提教职了。比如早年成名的曼海姆就不得不屈就英国经济学院,做一名普通教师。在科学家圈子里颇有声誉的哲学家卡尔·波普尔(Karl Popper)在英国待了九个月,最终只好远赴南太平洋,到新西兰去任讲师。相形之下,埃利亚斯没有著作,少见文章,唯一像样的论文还躺在法兰克福大学资料室,其前景不言而喻。所以,流亡犹太人基金会的一小份奖学金,如同雪夜中的炭火,激起了他极大的生活热忱。
他像一个返乡的旅客,迅速地放下记忆的负累,一头扎进大英博物馆的图书室里。仅仅用了大半年的时间,埃利亚斯就完成了这个三年的研究计划,写出了厚达800余页的《文明的进程》。当然不难想象,这部被后人誉为皇皇巨著的作品在当时没有什么与公众见面的机会。直到1938年,在父亲的资助下,出版才略有可能。

那一年,年逾花甲的父母历尽艰辛,从布雷斯劳赶到伦敦来看望爱子。埃利亚斯劝父母留在英国,但是他们不肯。父亲说亲戚朋友全在家乡,不忍离弃。再说自己一生奉公守法,纳粹其奈我何?他们执意返回布雷斯劳,还帮《文明的进程》找到了出版商。

可是印刷工序做了一半,那个犹太裔的出版商就逃离了德国。埃利亚斯的父亲只好把半成品偷偷运到瑞士,在那里装订成册。1939年底,埃利亚斯收到父母的消息,说《文明的进程》在瑞士以猎鹰出版社的名义出版了。没过多久,1940年初,他收到母亲的信,说父亲已经去世。再后来,家乡的音讯全无。1941年,他又收到母亲的一封信,也是最后一封。那封信是通过红十字会转寄的,发自前往犹太人集中营的中转地。但是埃利亚斯不知道,当他收到信的时候,母亲已经死在了奥斯维辛。

《文明的进程》出版给埃利亚斯的命运带来了一线转机,然而战争立刻将其抹杀了。在曼海姆的帮助下,伦敦经济学院打算聘请埃利亚斯做高级研究员。不料纳粹德国对英国发起了大规模空袭,学院被迫从伦敦迁往剑桥,聘任也就不了了之。不仅如此,按照当时的政策,埃利亚斯埃像大多数敌对国的“可疑分子”那样,受到英国政府的严密看管。1940年,他先是被关押在利物浦附近的海顿敌侨营,后来又被转至马恩岛。

人类学家埃里克·沃尔夫(Eric Wolf)当时只是一个犹太少年,也在关押之列。后来在回忆敌侨营的经历时,他还记得那个叫“埃利亚斯”的教授,在英国特有的阴雨之中,于满地泥泞的军用帐篷之下,“在一块充当黑板的脏兮兮的纸板上圈圈画画,讲什么一个人怎样来到人世间,不是作为素朴孤立的个体,而是作为一个社会网络上的节点”。沃尔夫说,埃利亚斯的这个想法看似简单,却改变了他思考社会现象的方式。

如果说《文明的进程》在刚出版时还有些许反响,那么数年的战争也将其彻底清除了。诺贝尔文学奖获得者托马斯·曼(Thomas Mann)读过此书,对它颇有赞赏,如今他流亡美国,无暇他顾。美国著名历史学家比尔德(Charles A. Beard)很早也阅读过此书,并深受其影响,但是《文明的进程》一直没有英文版,妨碍了它的传播。还有两位著名的荷兰评论家,曾对《文明的进程》击节叹赏,可是他们在德国入侵荷兰时相继自杀了。就这样,《文明的进程》也像埃利亚斯的大多数经历,埋入记忆的深处。二战结束后,生存的压力并没有减轻多少。英国的街头挤满了难民,各个大学的门口等候着更多的求职者。为了生计,埃利亚斯只得去社区学校或训练中心碰碰运气。他帮情报机构甄别过德国战俘里的纳粹分子,在工党附设的成人教育中心做过辅导老师,讲过一些社会学的课。同时,断断续续的,他在伦敦大学兼职,教些成人教育的内容。他还做过群体治疗的精神分析师,为战争心理创伤的患者提供帮助。这种没有稳定职业没有固定收入的日子,他一过就是十年。直到1954年,57岁的埃利亚斯才得到人生中第一个正式的学术职位:莱斯特大学的社会学讲师。

在规模不大、声名不彰的莱斯特大学,埃利亚斯和另一位犹太裔学者一起,用了数年时间把社会学系建成英国最有影响力的人才基地。著名的社会学家安东尼·吉登斯(Anthony Giddens)的第一个教席就是在那里取得的。然而直到1962年正式退休,65岁的埃利亚斯都没有在莱斯特大学取得教授之职。在同事和学生的印象中,他是一个和蔼的老教师,仅此而已。

造成这一印象的主要原因还是关乎记忆。就在埃利亚斯获得教职之际,他得悉了母亲死在奥斯维辛的消息。这一巨大的打击像一道铁闸,几乎彻底地封闭了他的记忆。无人可以倾诉,无人可以理解,对于埃利亚斯而言,连倾诉和理解这两个词都显得轻浮。他甚至不愿发表文章——从任教到退休,他几乎什么都没有写。

另一个主要原因在于埃利亚斯的不合时宜(untimeliness)。历史的错位、时代的作弄、思想的独特,包括本人刻意的回避,都使得英国学界对他全然漠视。

这时候,遥远的加纳寄来了教授聘书,邀请他去建立社会学系。于是埃利亚斯再度转身,到加纳大学去待了两年,还成了非洲艺术品收藏方面的行家。

1965年,埃利亚斯返回英国,继续在莱斯特大学兼职授课。可能是因为非洲之行放松了身心,他开始尝试与年轻学者合作,发表了一系列文章。有些论文后来被学界视为体育社会学的奠基之作。他还与人合作出版了《局内人与局外人》等著作,探讨了体制、定居和迁徙等社会问题。然而,这些具有开创性的作品仍然没有改变英国社会学界对他长达四十年的忽视。
到了1968年,情况发生了变化。再版的《文明的进程》在荷兰、德国和法国受到了学界的重视和公众的追捧。第二年,他的《宫廷社会》也从资料室里的打印稿变成了正式出版物,同样好评如潮。1977年,埃利亚斯获得法兰克福颁赠的杰出学术研究奖——阿多诺奖,象征着命运之神的正式垂青。

欧洲大陆慢慢熟悉了埃利亚斯的名字,要他去做访问学者的邀请函也多了起来。他待在英国的时间越来越少。埃利亚斯先是在德国比勒费尔德的跨学科研究中心住了几年,后来又移居阿姆斯特丹。

然而在英语世界,无论是英国还是美国,埃利亚斯大体上得到的仍是冷遇。可以说,他在英国的40年,完全过着局外人的生活。而在美国,他的影响也局限在极少数优秀学者的圈子之内。实际上,当埃利亚斯于1984年选择永久定居阿姆斯特丹时,英语世界并没有意识到他们的损失。直到1989年,英国社会学会才想起正式邀请埃利亚斯来举行作品研讨会,然而此时的大师已是风烛残年不良于行。

正是在这二十年里,埃利亚斯斯进入了一生中最长的创作期,直至1990年去世。他重新开始用自己的母语进行创作,出版和发表了不少重要的作品,其影响也扩大到全球范围,并逐渐被人当作经典。

随着声名的确立,人们对埃利亚斯的个人经历也产生了兴趣。然而直到87岁高龄,他才谨慎地开启记忆之窗,允许他挑选的人从外部打量。可是记忆不是照片,经历了漫长的封存,它们早已模糊,变得相当不可靠。更多的个人生活根本没有机会再现,或者由埃利亚斯本人来述说。为什么从前线调回布雷斯劳做卫生员?为什么重返大学后会参加当地的犹太复国主义青年运动?为什么完成学业后迟迟无法获得哲学博士学位?为什么选择一辈子独身?甚至连这些疑问都须得后来者拼凑。以至于有学者抱怨,埃利亚斯身上存在“反自我”(counter-ego)的倾向。一生之中,他不断刻意地压制自己的记忆,造成了一种特别健忘的性格。而这种性格最终报复了他:当一部新著的草稿被过于热心的清洁工从寓所送进垃圾焚化炉,衰老的埃利亚斯再也没有能力凭借记忆来恢复它大致的轮廓。

不过,对个人记忆的压制同时也磨砺出埃利亚斯性格中坚韧与独立的那一面。刻意的健忘不仅驱散了坎坷境遇中的沮丧和恐惧,还帮助他实现了情感上的克制。实际上,今天的心理学家都知道,没有情感的参与,记忆难以成型——短时记忆或许可以办到,长时记忆则几无可能。埃利亚斯对个人记忆的种种压抑,本质上就是对个人情感进行的控制。在旁人看来,它使埃利亚斯具有一种超脱、甚至有些漠然的人生态度。

当这种态度反映到埃利亚斯的作品里,有人就质疑他不关注迫切的现实困境。为此他在《投入与超脱》中解释说,他想以超脱的态度去追求真理,“用充分客观的知识”取代形而上学的胡说八道,取代意识形态的各种神话,从而有助于人类对未来的有效把握。在另一个场合他悲痛地承认,母亲在毒气室里遇害的场景一直铭刻于心,“我过不了这道坎”。但是他又接着说:“我倒是很想写一本书,来讨论整个纳粹的暴行。可是有太多的东西需要我去做出阐释。”直到去世后,《德国人》一书才以遗著的方式释放了埃利亚斯的情感,讨论了他一直想讨论的问题:一个产生莫扎特、贝多芬、歌德和席勒的德国,为何堕落为充满暴力和压迫的地狱?即使这样,这本书的副标题依旧体现出埃利亚斯的克制:十九世纪与二十世纪的权力争夺与生存习惯的发展。

一位专家一语道破埃利亚斯的写作风格:“他用一种受控的语言书写。”而他的个人经历与学术作品之间的紧密关系表明,在他的心目中,“受控”绝非风格那么简单,而是至关重要的核心观念。这一点,在他的代表作《文明的进程》里体现得尤为突出。

以赛亚·伯林(Isaiah Berlin)说,二十世纪是有史以来最糟糕的世纪。如前所述,对此埃利亚斯肯定深有体会。他在一个史无前例的残酷背景下来写作《文明的进程》,显然不是为文明——尤指过去四五百年来以“民族—国家”为中心的西欧文明唱赞歌。大致来说,埃利亚斯的目的是要帮助人们重新认清,到底什么是文明?文明是怎么起源、怎么成型的?从而深刻地理解文明的发展、曲折、倒退与崩坏。


2018年05月15日周二上午11:35:14

----
@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "①" "新康德主义(Neo-Kantianism;Neukantianismus)是伊曼努尔·康德的哲学思想在18世纪的复兴。新康德主义重视康德的科学著作,强调概念研究而淡化直觉的地位。但新康德主义的伦理思想往往与社会主义接轨,并对奥匈马克思主义和爱德华·伯恩斯坦的修正主义产生了重要影响。新康德主义受到阿瑟·叔本华《作为意志和表象的世界》(1818)以及其他后康德哲学家,如雅各布·弗里德里克·弗里斯和约翰·弗里德里希·赫尔巴特等人对康德哲学批评的影响。在这之后的德国哲学一定程度上都关涉到新康德主义。“新康德主义”一词也可以指任何以部分或有限地认同康德观点的人。自彼得·斯特劳森出版《感觉的界限》(1966)一书以来,人们对康德的作品的关注逐渐复兴。由于强调认识论而牺牲本体论,《感觉的界限》被归为新康德主义的立场。在借之后,让-吕克·南希近期的著作鉴了现象学对先验的理解,并继续强调对康德著作的反向阅读。1933年,纳粹上台,德国各地的新康德主义圈子被解散。">>
<$transclude mode="block" tiddler=bookinfo/>
去年看完林语堂的《[[苏东坡传]]》,接着找来了苏东坡的随笔集《[[东坡志林]]》来读  <<footnote "①"" 可到[[三家村公开版权精品书籍]]下载">>。

<<imageSlider  [[https://i.loli.net/2018/08/12/5b70519230d52.jpg]]    "赵孟������绘:苏东坡">>


苏东坡是个天妒其能的人,徒具大才,而一生几经变数,颠簸流离,穷困潦倒。而他并没有隐忍遁世,做一个骑鹤下扬州书画琴棋诗酒花的清流,依然与天斗,与人斗,在穷困面前学会了逆来顺受,甚至会用柴米油盐酱醋茶幽生活一默。我想这一切的原动力皆来自于苏东坡对家人的热爱,对生活的热爱。

<<<
洛下有洞穴,深不可测。有人堕其中不能出,饥甚,见龟虵无数,每旦辄引首东望,吸初日光咽之,其人亦随其所向,效之不已,遂不复饥,身轻力强。后卒还家,不食,不知其所终。此晋武帝时事。辟谷之法以百数,此为上,妙法止于此。能服玉泉,使鈆汞具体,去僲不远矣。此法甚易知易行,天下莫能知,知者莫能行,何则?虚一而静者,世无有也。''元符二年,儋耳米贵,吾方有绝粮之忧,欲与过子共行此法,故书以授之。''四月十九日记。
<<<

苏东坡所记这则养生辟谷说,看后十分酸楚。苏被贬海南后,由于米贵而趋于断炊,于是便想着叫孩子过吃空气之法。

<<<
张君持此纸求仆书,且欲发药。不知药,君当以何品?吾闻《战国策》中有一方,吾服之有效,故以奉传。其药四味而已:''一曰无事以当贵,二曰早寝以当富,三曰安步以当车,四曰晚食以当肉。''夫已饥而食,蔬食有过于八珍,而既饱之余,虽刍豢满前,惟恐其不持去也。若此可谓善处穷者矣,然而于道则未也。安步自佚,晚食为美,安以当车与肉为哉?车与肉犹存于胸中,是以有此言也。
<<<

这则“赠张鹗”可谓是苏东坡的“处穷哲学”了,也是其对生活的态度和幽默:车与肉犹存于胸中,是以有此言也!胸中有华车糜肉,其它不都是多余的吗?

2018年04月23日周一下午09:19:56
<$transclude mode="block" tiddler=bookinfo/>
`有则改之,无则加冕`  ^^~~冕~~(勉)^^ 

此句出自《论语·学而》:

<<<
曾子曰:"吾日三省吾身":为人谋而不忠乎?与朋友交而不信乎?传不习乎?
<<<

宋朝朱熹《论语集注·学而篇第一》批注:

<<<

“曾子以此三者日省其身,有则改之,无则加勉,其自治诚切如此, 可谓得为学之本矣。” 
<<<

毛泽东在第七次全国代表大会《论联合政府》政治报告中提到:

<<<
“对于我们,经常地检讨工作,在检讨中推广民主作风, 不惧怕批评和自我批评,实行“知无不言,言无不尽”,“言者无罪,闻者足戒”,“有则改之,无则加勉”这些中国人民的有益的格言,正是抵抗各种政治灰尘和政治微生物侵蚀我们同志的思想和我们党的肌体的唯一有效的方法。”
<<<

<$details summary="《论联合政府》">

[img[http://f.cl.ly/items/3c233l2X0y3b263L0q3V/maozd.jpg]]

</$details>

从此,此句广为流传和被人们熟知。

三家村批注:

<<<
有则改之,无则加冕。不传习乎?
<<<


而现实那?“知者不言,言者不尽”、“言者获罪,闻者足戒”、"有则改之,无则加勉”。这就是魔幻现实主义。

```
面对现实中的无奈、虚弱和无助,如果没有精神需求,会遁入犬儒;如果有些精神需求,又很容易委身于灼热的宏大概念;而现今最悲哀的是沉默,或者皮里春秋的喃喃自语。
```


2018年03月10日周六下午10:05:44
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
[[深入缘起,断诸邪见。|2018年01月09日 周二下午 05:32:52]]

怎么讲“缘起”?

要“缘起性空,性空缘起”<<footnote "[1]" "佛法的中观正见。">>,“因缘法从因缘的无明一念而起”,“一念灵知,觉性常明,久之复生无明”。

什么是“缘起性空,性空缘起”?

佛说一切法皆从因缘所生。性空,不是无,没有;性空是“断见”。《楞严经》有段话非常重要: 

<<<
如来  <<ref "[2]">> 藏中,性色真空,性空真色,清净本然,周通法界。随众生心,应所知量,循业发现。世间无知,惑为因缘,及自然性,皆是识心,分别计度。但有言说,都无实义。 
<<<

佛在此话之前一路讲唯物的地、水、火、风,一切物质是缘起性空的,是“非因缘,非自然性”,这应该是讲物质的最高理论物理,现代的理论物理已经快走到这个边缘了。

从思维的逻辑来讲,法起因缘,缘起性空、性空缘起,缘起断念。

//2018年01月20日周六下午09:24:51//

什么是自然物质世界的“非因缘,非自然性”?是指本体而言,是法身境界。性空的空,不是因缘空得了, 也不是自然空,自然空是自然外道。所以讲本体而言,是非因缘,非自然性;讲起用而言,世间一切法都是因缘所生,并非自然生,也无主宰,因为它是性空缘起。所以讲缘起之理,要修证,要能深入缘起,才能断诸邪见。换言之,如果你没有证悟到缘起性空的境界,你即使学佛,许多的知见仍然还是邪见,因为没有证道。

好难理解!

从现代思维科学来看,我是主体,是物质的,我的属性是“非因缘,非自然性”的(这里的非自然,应该是相对空来讲,类似“我思即我在”的意思);法是精神的,因缘所生,非自然。所以,要修佛法,需要在无明的境界,即断诸邪见性空(生而再断,非空。非空,也无可断)的状态,进行证悟,什么时候证悟到了空的境界,即见佛法。从精神世界来,到自然世界去,修而证道即悟,人间即佛土 <<footnote "[3]" "成佛的境界,也就是代表了学佛要求证、要到达的境界,这境界也就是佛土。从修持的因上来讲,叫做境界;从修持的果上来讲,称为佛土。 ">>。

//
''Modified:''<$view field="modified" format="date" template="YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss"/>//
 

--- 

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[2]" "如来,佛的十大称号之一。如来,“就像来了一样”。如指真如,含两层意思:凭借真如之道,通过努力,不断累积善因,最后终于成佛,故名如来,也就是真身如来;通过介绍真如之道,使众生增长智慧、消除烦恼、获取利益,故名如来,也就是应身如来。也有解释作“如诸佛而来,故名如来”。民间常以如来、如来佛专指佛教创始者释迦牟尼佛,释尊,即当时的悉达多太子。">>
<$transclude mode="block" tiddler=booklogsinfo/>

“阅读的悖论”(reading paradox):为什么人的灵长类脑会进行阅读呢?阅读作为一种文化活动仅仅出现了几千年之久,为什么人类的脑具有阅读的本能倾向呢? 

//
2020年10月11日周日下午06:47:10//

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=bookinfo/>
@@.note
''Keywords:'' {{!!description}}
@@

时不时有点恐慌和焦虑:想读的书太多了,而生也有涯,殆已!。现在在 <<tag 想读>>标签下已经有96本了,而且还在日益增长。除此,在我笔记上还有一份“待寻找书单”,从2016年到现在,完成的不到一半。两份书单加起来完成率在三分之一。

不过在这几年的读书记录过程中也摸索出一些规律来,多少可以解决一些眼下恐慌和忧虑。

首先,不断长高变大的书单经常被更新。有增加,亦有删除。一些书目随着时间的推移,也失去了对其兴趣,就会被删去,例如之前一直热衷的古代小品系列,现在逐渐被一些名家名篇代替;还有一些书目会被直接删除,因为随着对作者和作品的了解更多,发现同类著作有更好的作品替代之。

其次,一些书目是需要时间换取阅读体验的,需要用几年甚至一辈子来慢慢咀嚼、消化。如 <<tag 正读>> 中的《[[说文解字]]》、《[[诗经]]》和《[[资治通鉴]]》。如此书目,会多少减少一些读书压力。

再者,部分书目的阅读并不需要多少时间。这类书目多集中在社会科学、经管以及部分认知类书目,此类书目多是观点输出和论证。所以阅读这部分书的时候,可以采用《[[如何阅读一本书]]》中的“检视阅读”,即速读。了解其观点即可。

还有,少部分“打眼”书,立刻删除。经常会被一些书的名字蛊惑,如此,就会列入 <<tag 想读>> 中。可是真正拿起来读的时候,实难多翻一页。如前几天删掉的《[[修改过程]]》。

最后,非人文艺术“软科学”外的其他书目,都有个一个“顶部效应”,即每个专业或学科经典或权威的只有几个人或几本书,其他的著作都是这些著作的解读、注释或者分支。对于这类具有“顶部效应”的书籍,花时间在找书或甄别上,然后就是利用《如何阅读一本书》中的“分析阅读”或“主题阅读”法好好阅读了。

如此,或多或少可以缓解“阅读的焦虑”。

//2019年05月24日周五下午09:35:57//
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
一方面因为工作,一方面为了兴趣,最近对读书以及与读书有关的书和研究项目比较关注。我在 [[Calibre Library数据库|https://drive.google.com/drive/folders/107OuJ2L689Ob-DgEurtBAeahVgcFfvQ0?usp=sharing]] 中建立了一个“书的书”标签,主要是关于人类阅读史、个人阅读史以及书籍收藏史等方面的书;关于阅读行为科学研究和阅读心理学方面的书似乎很少,现有的也大多是国外著作,如《牛津阅读手册》、《阅读心理学》(The Psychology of Reading )等,中文阅读领域的研究比国外要晚和浅陋太多。最近读的这本《[[阅读心理学]]》,应该算是中文阅读心理学方面专业著作了,不过太水,有点像学生写的毕业论文 --- 凑数迹象严重,不过也不妨碍这拨人有些许研究成果。

<<<
本书全面系统地总结了国内外阅读心理学研究取得的成果,内容包括总论、阅读心理学的研究方法、眼动与阅读、字词识别、词切分机制、句子理解、语篇理解、阅读能力的发展和阅读障碍等九部分,囊括了阅读心理学的重要内容,基本上反映了当代阅读心理学研究的进展。
<<<


虽然对这本书基本上是速览,也发现一些有价值的观点和科研成果(有的来自国外)。

<<<
当其他条件恒定时,同一被试或不同被试之间存在的阅读速度差异主要与如下问题有关:被试是否容易形成有规律、有节奏的眼动并将之保持。这种眼动的特点是:第一,每行注视次数相同;第二,注视停留时间长短有序,每行的第一次注视停留时间应该是最长的,接近行尾时的注视停留时间次之。(7)在排版时一行文字长度应该为75—85mm,这样有利于阅读。<<ref "[1]">>


眼疲劳会减慢阅读速度。进一步的研究表明,若眼跳距离较大,如150mm,眼睛会很快变得疲劳。<<footnote "[2]"同上">>

他们通过实验研究发现:(1)读者对低频词的注视时间较长,对句子结尾的词的注视时间较长;(2)读者对每个实意词至少注视了一次,只是对一些短的功能词进行跳读;(3)注视时间随着词在句子中的作用和词本身的特点而变化;(4)总注视时间反映了理解该词所需要的时间;(5)当需要对句子意思进行整合时,注视时间增加。
  <<ref "[3]">>
<<<


2018年04月05日周四下午09:37:27

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  
<<footnotes "[1]" "《阅读心理学:关于阅读节奏和眼动的实验研究》(The Psychology of Reading:An Experimental Study of the Reading Pauses and Movements of the Eye)">>

<<footnotes "[3]" "《阅读的理论:从眼睛注视到理解》(A Theory of Reading:From Eye Fixation to Comprehension )">>
多数眼跳  <<ref "①">> 都是从一个已知区域朝向新的未知区域,即向前眼跳(progressive saccade),但有时还会出现反方向的眼跳,被称为''回视''(regression),指退回到前面语句的眼跳。回视也是一个重要的眼动现象,对于熟练阅读者来说,10%—15%的时间被用于回视。

在一次阅读行为过程中,对文章的认知加工影响眼动模式,眼动中存在一些认知控制。眼跳和回事次数多了,疲劳感就会加快。二影响眼跳和回视的因素是多方面的,如陌生词和熟练词、阅读视窗的字数等   <<ref "②">> 

另外眼睛似乎并不是常常等待目前所注视的词加工完之后才继续向前运动。

''关于跳读''。Morrison解释跳读现象:当读者正在注视词n时,在125ms后词n被识别,注意转移到词n+1,并作出移动到词n+1的眼跳计划;词n+1很快被识别(在175ms时),注意转移到词n+2,并作出移动到n+2的眼跳计划。由于第二次眼跳计划在第一次眼跳计划之后很快地作出(相差50ms),所以第一次眼跳计划被取消,即当被试注视完词n后,直接移动注意到词n+2,词n+1被跳读(如图):

<<imageSlider  [[https://cl.ly/qriJ/Snipaste_2018-04-13_23-22-21.png]]    "Morrison模型中的眼跳过程">>

''E-Z读者模型''(E-Z reader model)是由Reichle、Pollatsek、Fisher和Rayner在1998年提出的一种阅读加工模型。

<<imageSlider  [[http://f.cl.ly/items/2n3Y0L0x1v3v31361U2Q/Snipaste_2018-04-13_23-26-07.png]]    "E-Z读者模型7示意图">>

<<imageSlider  [[http://f.cl.ly/items/0g023s0y0H1E0d2Q1U0p/Snipaste_2018-04-13_23-28-06.png]]    "E-Z读者模型9示意图">>

''SWIFT模型''主要有两大功能模块:词汇加工(lexical processing)和眼跳计划(saccade programming),具体见图:

<<imageSlider  [[http://f.cl.ly/items/0G162N3W1L1S012w2a0g/Snipaste_2018-04-13_23-22-21.png]]    "SWIFT模型的功能模块">>

''Glenmore模型''的结构成分主要包括:输入模块、字母加工模块、单词加工模块、显著图、注视中心以及眼跳产生器(产生实际的眼跳运动),见下图:

<<imageSlider  [[http://f.cl.ly/items/3S2Q4520220a2A3m1S1h/Snipaste_2018-04-13_23-32-03.png]]    "Glenmore模型结构示意图">>

<<imageSlider  [[http://f.cl.ly/items/3z3f220W1915170n1m2I/Snipaste_2018-04-13_23-36-03.png]]    "Glenmore模型内部连接性的简明图解">>

2018年04月13日周五下午11:05:41 

--

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "①" "眼球的跳动(saccade)是巴黎大学的Javal教授(1878)发现的。眼跳的功能是改变注视点,使下一步要注视的内容落在视网膜最敏感的区域——中央凹附近,这样就可以清楚地看到想要看到的内容了。通常我们不容易觉察到眼睛在跳动,而觉得是在平滑地运动。">>

 <<footnotes "②" "Rayner和Pollatsek(1981)为眼跳的直接控制提供了可靠的证据,他们使用窗口技术,窗口随注视点不同而不同。他们发现,在一次注视中,当有正常文章的窗口大小从9个字符增加到17个字符,再到33个字符时,该次注视之后的眼跳距离显著增加。">>


上一篇我整理了几个世界主流[[阅读行为眼动模型|]] <<footnote "①"人的眼球运动有三种基本的类型:注视、眼跳和追随运动。为了看清楚某一物体,两只眼睛必须保持一定的方位,才能使物体成像在视网膜上。这种将眼睛对准对象的活动叫注视。为了实现和维持对物体最清楚的视觉,眼睛还必须进行跳动和追随运动。">>研究结果,包括注视(fixation)、眼跳(眼球的跳动saccade)、追随运动(pursuit movement)、跳读(word-skipping)、回视(regression)等基本概念。从世界范围内各大语系的研究结果来看,阅读行为从物理(相对于心理而言)也就是身体参与行为 --- 眼动而言有其基本规律:眼跳速度、回视次数可以加速我们阅读疲劳;注视位置、眼跳以及追随运动的合理可以加速我们阅读。

为什么要了解阅读行为眼动规律?

对于民间研究者或一般阅读和写作者来说,有两方面的目的:

* 从阅读角度来说。如果说阅读方法(例如查尔斯·范多伦的[[如何阅读一本书]])为软件的话(我更愿意把这些阅读方法看为一种阅读框架,是一种方法论),身体就为硬件,而了解阅读眼动运动规律,就相当于您知道这台机器运作的运作机制,只有知道了电脑或手机CPU、显卡等参数,我们才能够知道这台机器的性能如何,从而在实际工作中发挥其最大的功效,甚至可以通过跳频或外挂等模式超越本身的局限。之于阅读,了解了阅读的眼动规律,可以提高阅读效率,一目十行不再是梦。从而在有限的人生时间,阅读更多的书。

* 从写作的角度来说。也只有知道了人类阅读的眼动规律,如阅读时候的注视点落在哪里,眼跳和追随运动的轨迹,跳读和回视的原因等,我们在写作或文本输出的时候就不会逆自然规律而行,从而让读者可以顺畅而快速的阅读。

这是站在个人的角度来看。从科研者的角度,眼动规律可以为仿生和人工智能提高理论基础,而在社会实际效用上,可以为阅读困难症儿童提供解决方案。

2018年04月15日周日下午02:50:35
<$transclude mode="block" tiddler=bookinfo/>

这本书的作者是《[[如何阅读一本书]]》中文版的引进者,也是翻译者之一,应该是一个出版人。这也是想翻阅此书的主要原因。但速览了此书后,大失所望。言语啰嗦,思维混乱,所提倡的阅读法并无多少价值。
@@.note
''Keywords:'' {{!!description}}
@@

[[上一篇|2019年06月14日周五下午04:04:02]]中提到“杂草完全是人类行为的产物”,无论是文化意义上 --- 杂草的概念,还是自然行为上 --- 杂草的进化。一些杂草会绕过人类的干预生存下来,甚至是人类创造了杂草的生存空间,推动杂草完美进化。这种欲刈而善的结果,自然科学家称之为''“杂草悖论”'':除草反而会刺激杂草生长,我们本想阻止杂草们创造奇迹,结果反而制造出了能绕过我们控制系统的物种。大自然平衡被打破,总有一种新的力量出现使其趋向平衡。万物皆然!

除了上面的“杂草悖论”,最近看的另一本书  --- 《[[大自然的社交网络|大自然的社交网络]]》 --- 还提到一种自然现象:顶端优势。

''顶端优势''<<ref "①">>指植物的顶芽优先生长,对侧芽萌发、侧枝生长的抑制作用,也包括对侧枝、叶子生长角度的影响。

自然科学中的顶端优势同社会学的''马太效应''<<ref "②">>相映成趣。植物顶芽更容易接触到阳光,从而长势更好;人类占有社会资源多的人更容易致富,从而富者越富。

所以,人类一思考,上帝便笑了^^@@color:gray;揶揄@@^^。

//2019年06月17日周一下午10:41:49//

-- -- --

@@color:gray;<i class="fa fa fa-info-circle fa-3x fa-pull-left "></i>@@  <<footnotes "①" "另外顶端优势的形成,与生长素的两重性有关。低浓度促进生长,高浓度抑制生长,甚至杀死植物。顶芽处生长素浓度低,促进生长;侧芽处生长素浓度高,抑制生长。同时也和细胞分裂素有关。">>

<<footnotes "②" "在社会学中,马太效应有一个不那么文学化的名字:“累积优势”。这段《圣经》中的文字中已经体现了突破性法则:“凡有的,还要加给他,叫他多余;没有的,连他所有的也要夺过来。”(《圣经·马太福音》詹姆斯一世钦定版)">>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=booklogsinfo/>

了解或掌握一门语言,就打开一扇通往世界的门。

我这里说的一门语言,非指广义的如汉语、英语等表达语言,而是指狭义的对某一学科或领域特有的表述形式活符号,如生物学、计算机科学等。 

为什么这么说那。 

当了解某种语言,您不仅在通往这个世界畅行无阻,更重要的是您可以用另外一种世界观审视和观察事物,并用此学科的思维方式思考问题,以便更加接近实物的真相。 

就如年后看的这本[[《控制论和科学方法论》|控制论与科学方法论]]来说吧。我们日常生活中许多现象和行为都可以通过另外一种语言来表述和还原 — 虽然这有点修辞学的矫揉造作之嫌,并通过之科学原则改造这个世界。

 “负反馈”,其实就是通常所说的“做起来看看再说”。在我们生活中再平常不过的这句话,在另外一种领域换句话来表达就是一种新的语言形式。而这便常的思维模式,在解决问题上是很有效的。例如鹰击长空,不但能准确地扑到固定目标,甚至连飞速躲避的兔子、老鼠也不能逃脱。在此过程中,老鹰锁定目标在捕猎过程中不断的通过负反馈调节接近目标。地对空导弹亦是利用此原理。

那么“正反馈”那?

“正反馈”,即我们日常生活中的“恶心循环”。简单来说,当A产生了更多的B,B会回过来产生更多的A,这个过程就称为正反馈。负反馈是目标减少的过程,正反馈是目标差不断增大的过程。“盲人骑瞎马,夜半临深池”是典型的正反馈恶性循环。[[马太效应|心理学]]即正反馈的另外一种表述形式。还有冷战时期美俄军备竞争亦是。在实际应用中,这种“恶性循环”被广泛应用,如核发电、炸药爆炸等。正反馈往往预示着失去平衡而失去控制,这时候就需要阻尼或负反馈调节,使其回归。

如果上面的正负反馈例子并不常见,那么您知道什么叫“知道”吗?怎么样才算“知道”?(见下一篇)

这就是日常生活中的科学语言描述和科学应用的魅力。

//
2019年05月19日周日下午04:43:33//

<$transclude mode="block" tiddler=bookkeywords/>
年后一段时间一直忙着为项目融资,通俗的说是与VC机构打交道找钱。虽然之前也有类似的经历,但是随着环境的变化和时间的推移,这次外面融资经历还是收获和感叹颇多。

''不要抱任何幻想和臆测''

不管是对自己的项目也好,还是和VC们沟通、谈判,不要抱任何幻想,做最坏的打算,做尽可能的准备和努力。

对项目要科学的评估,用数据或者自己试错的经验进行冷静而客观的分析,这样对己对人都有一个明确而清晰的认识。由此,则可能做到心中有数,不会被市场裹挟,不会被投资商的冷眼或挑剔所左右。

做最坏打算才不会有最大的失望。情绪是容易传染的,所以尽量别被外界所干扰。

''不要盲信投资公司人员''

投资公司公司的结构(基金-投资公司-投资代理人-Fa),决定了您接触的谈判人员 --- 除非是具有一定的行业经验或多年的一线工作经验的实战派,大部分你接触的人员都是从评估模型和市场相关项目数据做出的评判,他们的行业认识和经验并不比您多和深入。所以,不要被供求关系的不平衡而对其“高看”,事实上许多投资经理只是科班出身一两年的小青年而无任何实际项目经验。看人,更不用深究,他们大多数人被社会世故所左右,所谓标准都是硬性的那几条 --- 和大部分相亲差不多,不要想着可以遇到什么伯乐。

以上的基本现状就决定了您接触的大部分人员事实上并不能给您一个有效的判断或有效的信息反馈。事实上,大部分也不会给您什么反馈。即便是在见面会上,他们所针对的问题和做出的一些判断,都很泛泛 --- 用一定的框架思维做出的硬性几条标准。当然,也不可否认,极少数的投资人具有非常好的职业素养和人格魅力,他们不仅谦逊的提出自己的提问,还会职业的给出一些参考意见和建议。

''“小鬼”当道 ''

伯乐不常有,决定了您大部分遇到的是一般办事人员 --- 投资经理或项目分析师等底层职员,由于这些人的眼光、能力和资历所限,大部分项目都会被卡在这里,包装好的项目或具有极其漂亮的背景或数据及现金流好的项目才有可能顺利通过他们这一关。所以,如果您有机会,还是尽量找投资高层 --- 投资总监、合伙人、创始人,至少您的项目“死”的其所。

''内功第一''

创业者在寻找资本,投资方在找投资回报率高的项目,双方的机会成本都非常大的。所以,从项目的角度,他们都是外因,项目融资成败关键在于自己,是内因。好的项目是投资商求着您要求跟进的。这就要求把内功修炼好。

所谓的内功,有几个关键性因素:项目商业逻辑(也就是项目本身)要通,至少需要被您验证过;团队要精炼高效,对早期项目来说,人比事更重要;最后,运气!不要相信哪些所谓的成功项目报道,连奥巴马都说自己当上总统是运气,那些事后英雄多半都是忽悠或者骗子(多看几本书就知道,真正的大家怎么回答这个问题的)。我说的运气细分可能的话包括几个因素:天时、地利、人和。也就是在正确的时间地点,您作对了正确的事,这就是运气。

未尽待补。

PS,积累了些许资源,对其它创业者也许有用,欢迎[[交流|About]]。

2018年03月19日周一下午21:40:50
<$transclude mode="block" tiddler=bookinfo/>
!! 结构
<<textSliderNoButton "''哲学''" "*溯因 (Abduction)
*隐喻 (Metaphors)
*实用主义 (Pragmatism)
*现实主义 (Realism)
*[[还原论|尼采的锤子]] (Reductionism)
*明喻 (Similes)">>

返回[[思维模型|Thinking Models]]
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<<table-dynamic filter:"[tag[正读]]" fields:"tbl-expand title author genre created" stateTiddler:"exmp03" tblClass:"w-100 thead-info" tblCaption:"''正读书目''">>






<$transclude mode="block" tiddler=bookinfo/>
民国清流第二部看完了,比第一部少用了很多时间。第二部民国十六年(1927)始,民国十九年(1930)终。从这个时间段内民国的风云变化已经可以推测到这一部分内容没有上一部分精彩,上一部真是大师纷呈,群星灿烂,争奇斗艳。虽然作者为第二部冠以“大师们的战国时代”,并有一部分新人陆续呈现,如徐志摩、林语堂、巴金、郭沫若等,但不管从个体鲜活的魅力描述,还是到清流们的交际轶事,这部分更像是在写断代文学史。作者把更多的笔墨用在了这部分人的作品及其风格上了。不过也难怪,后五四时期,中国社会处于剧烈震动,也是民国清流激荡分化的岁月。大多数知识分子继续高举“个性解放与自由”的旗帜,而部分人放弃“五四”个性主义,走向无产阶级战斗集体主义,中国大地上逐渐有党的出现,国民党、共产党开始活跃,无论是主义之争还是权力裹挟,这段时期的文人无论如何也不可能做一个真正的清流了。


<<<
''清流'',旧时常用来称负有时望、不肯与权贵同流合污的士大夫。《三国志·魏书·桓二陈徐卫卢传》有“陈群动仗名义,有清流雅望”之说。
又,士大夫,“士者,事也,任事之称也”。《论语·泰伯》曰:“士不可以不弘毅,任重而道远。”皇侃义疏:“士,通谓丈夫也。”
中国的“士”,是官僚政治体制所化之人,“处江湖之远则忧其君,居庙堂之高则忧其民”。中国的“士”,即中国的知识分子,一贯疏离政治和权威,是以纯粹自由人的身份,出现在社会生活中的。他们的价值,在于具有独立人格。他们一直在社会边缘作文化漫游、文化守望,表明他们的文化存在和文化思考的独立意义。
<<<

1927年之后,随着国民党北伐一路披靡,一个新的专制王朝的诞生,整个中国笼罩在国民党一党专政独裁统治之下。“锢闭思想、干涉言论”,民国初年相对自由宽松的乱世不再。
清流如胡适发出“宁鸣而死,不默而生”的呐喊,鲁迅、郁达夫等五十一人发表《中国自由运动大同盟宣言》,也喊出“不自由,毋宁死”的口号,这些该是民国清流的绝唱。

''当一个旧的政治制度和一个新的价值系统之间不兼容的时候,权力与权威相分离,社会就进入有震荡强度的变革时期,所谓清流便逐渐退出历史舞台,绝唱也难有续响。''


<<<
早年民国,清流的夸父逐日、精卫填海、飞蛾投火式的文化壮举,写就了中国“士”的短暂而辉煌、灿烂的人文精神传奇与文化梦想的挽歌。
<<<


这些有才华的作家们原本可前仆后继,咨嗟于民族国家之忧乐,寄怀于江山风景之兴替,践行自己的庄重使命,把人民的焦灼与痛苦、追求与奋斗浓缩在自己的作品之中,来折射古老民族及其灵魂在新旧嬗替的大变革中的真容。但政治却限制了他们的艺术想象力和创造力,使文学成为一曲悲壮的交响乐曲。

2018年08月05日周日下午02:44:03
马基雅维利因《君主论》而遗名(曾被视为世界上最具影响力与畅销的十大名著之一,与《圣经》、《资本论》等书并列),《君主论》因“马基雅维利主义”而昭彰,“马基雅维利主义”又使“政治”和“政客”成了贬义词而被广泛引用,马基雅维利也因暴政而死。

“马基雅维利主义”是一种政治实用主义,也被称为政治现实主义(Realpolitik)。它的原则是''“在政治活动中摒弃道德的羁绊。……为了达到政治目的而施以任何形式的骗术与手段,.......表面仁厚实则残忍的虚伪政治。”。''非道德统治把政治手段和权术的道德性搁置起来,当作一个不予考量的因素,这是马基雅维利《君主论》的基本原则和理论。在《非道德的政治: 马基雅维利主义的持久真理》(Amoral Politics: The Persistent Truth of Machiavellism,下称《非道德政治》)一书里,以色列特拉维夫大学政治哲学教授本-艾米·沙尔夫斯坦(Ben-Ami Scharfstein)把马基雅维利主义定义为一种''“非道德政治”''。

中国古代的法家政治家商鞅、韩非、李斯其实就是“马基雅维利主义者,强调政治的统治性,而无道德一面。(见[[子产政治道德和历史的退步]])

所以马基雅维利的这本《君主论》小册子被世界广泛认为是专制君主政府(又称“暴政”)的指导手册,“暴政”的说明书,专制统治  <<ref "②">>  者的权术指南。<<ref "①">>  

在本书中,马基雅维利提出一个君主如果希望巩固自己的权力,就不要受任何道德准则的束缚,应该不择手段去实现自己的目的。


<<<
“因为关于人类,一般地可以这样说:他们是忘恩负义的、容易变心的,是伪装者、仿冒品,是逃避危难、追逐利益的。”(第80页)

对于一个君主来说,不仅不必具备各种美德,而且还要保留那些不会使自己亡国的恶行。在慷慨与吝啬方面,“明智之士宁愿承受吝啬之名,因为它虽然带来丑名但是不引起憎慨,追求慷慨之誉,则必然招致贪婪之名,而贪婪之名则使丑名与憎慨俱来。”(第78页)

“在我们的时代里,我们看见只有那些曾经被称为吝啬的人们才做出了伟大的事业,至于别的人全都失败了。”(第77页)
在残酷和仁慈方面,君主对于残酷这个恶名不必介意,所应重视的倒是不要滥用仁慈,因为仁慈会带来灭顶之灾, “被人畏惧比受人爱戴是安全得多的”。(第80页)

但君主要掌握好使用残暴手段的限度和范围,即损害行为要一下子都做完,对臣民的财产和他们的妻女不要染指。在守信和失信方面,君主应当效法狐狸与狮子。“由于狮子不能够防止自己落入陷阱,而狐狸则不能够抵御豺狼。因此,君主必须是一头狐狸以便认识陷阱,同时又必须是一头狮子,以便使豺狼惊骇。” (第83-84页)

当遵守信义对自己不利,或原来使自己作出诺言的理由不复存在时,一位英明的君主绝不能够、也不应当遵守信义。但君主又必须深知怎样掩饰这种兽性,并须做一个伟大的伪装者和伪善者,要显得具备一切优良品质。“因为群氓总是被外表和事物的结果所吸引,而这个世界中尽是群氓。”(第86页)
在书中,马基雅维利还提出君主必须学会避免那些可能使自己受到憎恨或轻视的事情。君主必须像提防暗礁一样提防被人认为变幻无常、轻率浅薄、软弱怯懦、优柔寡断,他应该努力在行动中表现伟大、英勇、严肃庄重、坚忍不拔,使人们对自己抱有“谁都不要指望欺骗他或者瞒过他”的见解,这样才能对抗一切阴谋,坐稳江山。(第87—88页)

同时,君主为避免自己因袒护人民而受到贵族非难、因袒护贵族面受到人民的非议,就应设立作为第三者的裁判机关(议会),而用不着国王担负责任。“对于国王和王国来说,世界上再没有比这个制度更好、更审慎,再没有比这个方法更安全的了。”(第91页)

君主务必把担带责任的事情委诸他人办理,而把布惠施恩的事情由自己掌管。一位君主必须依靠他的行动去赢得伟大人物与才智非凡的声誉。当一位君主公开表示自己毫无保留地赞助某一方或反对另一方,他也会受到尊重,采取这种态度明确的办法总是比保持中立更有用处。(第 107页)
<<<

而事实上,马基雅维利本身就是“暴政”的受害者。朱利亚诺·迪·洛伦佐·德·美第奇(Giuliano di Lorenzo de’Medici )掌权后,立即对旧政府势力进行了残酷清洗。1512年末马基雅维利被解除一切公职,并在1513年以密谋叛变为罪名被投入监狱,受到了严酷折磨的吊刑(Strappado),肩膀脱节,浑身剧痛,后被释放。也正是在这个时候他写作了《君主论》。马基雅维利心力憔悴、贫困潦倒,希望把这部政治权术著作献给那个差点没把他整死的朱利亚诺,好换取命运的改变。朱利亚诺死后,又献给他的侄子洛伦佐(Lorenzo)。但此书在马基雅维利死后才得以出版。

<<imageSlider  [[http://f.cl.ly/items/0P051y163T1J3p3J0j1V/400px-Macchiavelli01.jpg]]    "佛罗伦萨乌菲兹美术馆的马基雅维利塑像。乌菲兹美术馆曾经是美第奇家族的政务厅。">>

《君主论》不仅是对一个专制君主政府的建言,而且还在积极证明:所有那些发生在马基雅维利自己身上的统治手段,包括惩罚和酷刑,都是正当的。这就像500年后莫斯科大审判中那些政治犯一样,他们一面被判处了死刑,一面还在维护要夺走他们性命的制度。马基雅维利洞察人性的脆弱和阴暗,在他所鄙视的软弱而可怜人类中,就包括他自己。这就是发生在马基雅维利身上最大的讽刺,一个黑色幽默。

而更为讽刺和悲哀的是,统治阶级需要看此书吗?因为统治阶级本来面貌就是非道德和不择手段的,不需要这本书。

2018年05月12日周六下午02:25:47 


@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "①" "在马基雅维利的时代,还没有今天我们所理解的“专制”概念,这个概念要到17世纪方才出现,而在18世纪,由于孟德斯鸠的阐述而成为一个现代意义上的负面政治概念。下一篇阐述。">>

<<footnotes "②" "本书是西方许多君主、领袖学习统治术的经典。相传本书是“英王查理一世爱不释手;英国护国公克伦威尔珍藏着它的手稿影本;法王亨利四世被刺杀时,人们发现他贴身带的,竟然是一部染血的《君主论》;普鲁士腓特烈大帝把它作为自己决策的依据;路易十四,这位赫赫有名的法国君主,每晚必温习此书,并说:“不读此书不能高枕而眠”;拿破仑对《君主论》也百读不厌,胜利的联军在清扫滑铁卢战场时,从缴获的拿破仑的御车中,发现了一本他写满批注的《君主论》;希特勒放在床边经常从中汲取力量;墨索里尼称之为政治家的指南……。">>
<$transclude mode="block" tiddler=bookinfo/>
!!! 鲍默:《西方近代思想史》
鲍默指出二十世纪的人普遍有失落感:

<<<
“日益为一般人所使用的三个词,证实了这种失落感,这三个词就是著名的三A:荒谬(absurd)、焦虑(anxiety)与异化(alienation)”(487页)。
<<<

在解释新马克思主义和左派理论何以在欧洲知识分子中有如此大的吸引力时,鲍默就说:

<<<
第一,生活在一个无所事事的资本主义社会的显贵们普遍有罪恶感;第二,共产主义在一个欠缺信仰而又渴望信仰的世界中,可以充当宗教;第三,左派的神话是一个悲观世界中的乐观福音,给人以解放和革命的指望;第四,党员在党内可以感受到一种密切的、类似“家”的连接关系;第五,作为一种学说的共产主义,运用严密推理,有科学的面貌(大意,577页)。
<<<

葛兆光评价:这种富于同情的了解的解释大致很对,只是橘枳异地,寒暑不同,未必可以用在中国新马与左派的头上。

!!! 赫维茨达拉:《来自远方的拷问——哈维尔自传》

在回答关于政治观点的问题时,哈维尔说:

<<<
“我摒弃‘社会主义’这个词,完全是因为我一直反对过分固定的词汇,从语义上讲也就是失去意义的词汇。我反对空洞的意识形态术语和咒语,它把思想僵化在一种观念不变的封闭结构里,而且越封闭就离实际生活越远。”(16页)
<<<

他觉得现在世界的危机在于非人力量越来越大,造成一种心境即失落感:


<<<
“对形上学的掌握的失落,对先验论经验的失落,对一切超人的道德权威的失落,对一切更高的境界的失落。这虽然很奇怪却又非常符合逻辑:一旦人类开始把自己看作是世界上最高意义的源泉及衡量一切事物的尺度时,这个世界便失去其人情味,人类也就开始失去对世界的控制。”(18页)
<<<

在谈到他作为异议者的生活时,他曾经相当恳切地指出,


<<<
“不要和中央进行臃长的一般性的思想争论,那样会使许多具体的事成为中央的牺牲品,‘只’需要为那些具体的事而斗争,并为之做好不屈不挠斗争到底的准备。换句话说,就是不要躲在密室里进行斗争,而要把斗争公开化”(93页)。
<<<

在谈到知识分子时,他说:

<<<

“我也认为,知识分子应该不断使人不安,应该作为世界之痛苦的见证人,应该因独立而引起异议,应该反抗一切隐藏着的和公开的压力和操纵,应该是体制、权力及其妖术的主要怀疑者,应该是它的谎言的见证人。因此,一个知识分子不能去扮演被分配的角色,也不能屈从于胜利者们所写的历史。一个知识分子不应该属于任何地方,他不管在哪里都应该做为一个刺激物,他不应该有固定的位置。”(177页)
<<<

2019年03月06日周三下午09:56:14
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
!'“40后”流行的是:
苏联文学为主、《安娜卡列尼娜》、《高老头》、《悲惨世界》

!'“50后”、“60后”流行的是:
卢梭的《忏悔录》、巴金《随想录》、张洁的《爱,是不能忘记的》、王蒙的小说、劳伦斯《卡恰泰莱夫人的情人》、《光荣与梦想》、《一九八四》、《第三次了浪潮》、伤痕文学系列、寻根文学、西方现代思潮、李泽厚《美的历程》、黑格尔《美学》、《顾准文集》、四书五经系列、汤恩比《历史研究》、弗洛伊德、加缪、《傅雷家书》、房龙《宽容》、《围城》、杨绛《洗澡》

!“70后”流行的是:
金庸、卡尔维诺、博尔赫斯、三毛、卡夫卡《城堡》、马尔克斯《百年孤独》、王安忆、余华、莫言、阎连科、陈忠实、贾平凹、严歌苓、吴思、王小波、西方现代思潮、黄仁宇《万历十五年》、蔡志忠、余秋雨《文化苦旅》、

!“80后”流行的是:
村上春树、网络小说(南派三叔等)、《三体》

!“90后”流行的是:

!“00后”流行的是:


''1978-1988年是一个完整的年代。''


<<<
1997年是一个截然的分水岭,它把30年中国阅读史划为两段。中国到了1997年,才开始真正天覆地地告别传统社会。1994年、1995年的“人文精神大讨论”,我把它称作“春江水暖鸭先知”。知识分子已经敏感地感受到一个新时代即将到来,这个新时代就是彻底的商品经济——所有价值被重估,标准只剩一个:金钱,理想主义崩溃,是非观念开始丧失。
<<<


1988-2008年却是一个无法被完整描述的年代。

<<<
纵观中国30年阅读史,却没有一条一贯不变的价值取向“金线”贯穿其中,从雷锋到郭敬明,从李谷一到李宇春,时代偶像的变化找不到一丝共同之处,这其实才是最大的问题。
<<<

2018年06月18日周一下午10:55:34
百年思潮的演变和特殊的历史阶段。

! ''1900年 - 1911年''

!! 概述:
新旧交替 青黄不接

清代已强弩之末,西方列强割地盘踞,地方军阀已经形成,进步人士暂露头角,民众生活凄苦而不化。


! ''1911年 - 1920年''
!! 概述:
这是个变革的年代,是大师辈出的年代,是思想、学术突飞猛进而又激烈冲突的年代。我称之为''“黄金年代”''。

!! 思想潮流:
(旧)儒教、文化启蒙、个性解放和自由主义、朴素的民族主义、民族虚无主义  <<ref "[1]">>

!! 标志事件:
#白话运动
#妇女解放运动 
#新生活运动 
#五四运动
#《新青年》杂志

!! 标志人物:
辜鸿铭、蔡元培、胡适、陈独秀、周作人、周树人、钱玄同等


! ''1921年 - 1949年''

!! 概述:
这是个文人站队、军阀占位、党派迫害的年代;也是个个人斗争、民族战争的战火纷飞的年代 --- 个人信仰斗争、抗日战争和国共内战。文人从此开始政治化。

!! 思想潮流:
集体主义、马克思主义、共产主义、三民主义、宏大的民族主义 

!! 标志事件:
# 陈独秀和胡适思想分途、《新青年》分裂;
# 陈独秀上海成立共产党小组 --- 共产党成立 ,《共产党》创刊;
#北伐战争
# 1931年“918”事变
#国共两次合作
#45年日本投降
#中华人民共和国成立

!! 标志人物:
陈独秀、毛泽东

!!! 政治文人(悲剧文人):
矛盾、鲁迅、叶绍钧、冰心、巴金、沈从文、郭沫若、老舍、曹禺等


! ''1949年 - 1966年''
!! 概述:

焕发理想的年代,朴素的家国建设

!! 思想潮流:

!! 标志事件:
#上山下乡运动
# 57年反右运动

!! 标志人物:

! ''1966年 - 1978年''
!! 概述:
狂躁的年代、幻灭的年代;社会进入全面文化大革命,文人进入冰封期。

!! 思想潮流:


!! 标志事件:
# 无产阶级文化大革命
# 69年上山下乡运动
# 71年林彪叛逃事件
# 72年恢复歌舞表演和中过乒乓球出访北美
# 73年出版业恢复
# 75年邓小平施政
# 76年1月周恩来去世;3月邓小平下台;4月“四五天安门事件”;7月唐山地震;8月华国锋执政;9月毛泽东去世;10月四人帮被捕
# 77年恢复高考
# 78年秋西单民主墙贴出第一张大字报;冬季十一届三中全会召开,宣布告别政治运动;12月中美建交;

!! 标志人物:
老三届

! ''1978年 - 2000年''

!!  ''1978年 - 1988年''
!!!  概述:
这是一个完整的阶段。

在黑夜里走的人,终于看到了曙光;压抑的思想终于可以得到喘息。尽管短暂,弥足珍贵。这个时期出现了港台热、出国热、下海热和思想大讨论。 也是一个权力寻租和民间经济骚动的年代,出现了第一批民营企业家。我称之为''“白银时代”''。

!!!  思想潮流:
新启蒙运动(世界各种思想被引进来被讨论)、理想主义、现代化启蒙

!! 标志事件:
# 77年回复高考
# 78年改革开放,一部分先富起来
# 79年中越战争;
#第一批民营企业家出现:哇哈哈、南街村等
#伤痕文学、寻根文学、西北风等流行

!! 标志人物:
北岛、王蒙

!!  ''1988年 - 2000年''
!!!  概述:
相比78-88这十年,这是一个混乱不堪的阶段、价值观错乱的阶段。中国完全告别了传统社会,进入商品经济,所有的价值都重新被评估,标准只有一个:金钱!伴随着前十年的改革开放,社会出现了无数问题。经济飞速发展带来了无数暴富的机会。传统知识阶层被边缘化、理想主义消亡。我称之为“青铜年代”。

!!!  思想潮流:
现代化思潮

!! 标志事件:
# 六/四/事/件
# 北京亚运会
# 疯狂炒股、南下淘金、海南创业.....
#人文精神大讨论(92-95年)

!! 标志人物:
李慎之、

! ''2000年 - 2010年''
!! 概述:
不完全的市场经济开始执行,朴素的互联网网民开始出现,第一批互联网企业冒出。我称之为“''白开水年代''”。

!! 思想潮流:
拜金主义、精英的利己主义、市侩主义、狭隘的民族主义、互联网恐怖主义、犬儒主义<<ref "[2]">>

!! 标志事件:
#网络出现在人们的生活中;
# 天涯论坛火热,涌现出一批网络知名ID;
# 网络小说开始流行(玄幻、鬼故事、小情小调的青春文学流行)
# 大学毕业不再包分配
# 房地产热盛行
# 互联网泡沫出现


! ''2010年 - Now''
!! 概述:
移动互联网浪潮 大数据时代 前AI时代 互联网原住民出现。文人从此娱乐化!

!! 思想潮流:
实用主义、自由主义、新儒家(前五四)、新左派、犬儒主义、虚无主义

!! 标志事件:
# 小米成立
#  微信盛行
# 公众号、朋友圈进入人们正常生活
# 网络支付成为日常必备
# 佛系流行

!! 标志人物:


---
不断整理和修正中。欢迎交流,提供您所认识和解读的时代变革和思潮演变的轨迹。
{{Jerry}}

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[2]" "犬儒主义(Cynicism)指讥诮嘲讽,愤世嫉俗,玩世不恭。犬儒主义诞生于公元前5世纪的希腊,指一种对文化价值的对抗精神,一种深刻的怀疑。它认为世界是不值得严肃对待的,不妨游戏之。到了现代,犬儒主义的含义发生了一定的变化,但是其对世界的不信任和拒绝的态度没有变。犬儒主义者由于政治的黑暗而远离政治、放弃政治,拒绝参与政治,或遁入孤独和内闭,或转向任诞的审美主义,而其骨子里则是虚无主义。他们对于世界保持了清醒的距离意识,但是却不敢或不愿与之正面对抗,而以一种嬉笑怒骂、冷嘲热讽的态度来曲折地表达自己的不满和妥协混合的矛盾立场。">>

 <<footnotes "[1]" "当代中国民族主义者有下列类型:追求中华民族利益最大化的,可称为“Realist Nationalism”(现实民族主义);支持中华民族所建立的政体及其强大的,可称为“Statist Nationalism”(中央集权民族主义);支持在国际社会推广中华民族代表的价值观的,可称为“Civic Nationalism”(公民民族主义);强调血浓于水、坚持捍卫中华民族的尊严与地位的,可称为“Primordial Nationalism”(原始民族主义)。">>
[img width=60% [http://one.rizi.me/photos/rizime/zglshesjls.jpeg]]
《我书架上的神明》这本书号称是''中国当代知识分子的思想资源和心路历程'',其模仿了[[《哈佛书架:100位哈佛大学教授推荐的最有影响的书》|https://www.asuswebstorage.com/navigate/s/46D1AED36A064B369797A0BAD50D95CA4]]([[书目|https://www.asuswebstorage.com/navigate/s/60BBB01989914B62A42179288298F7B34]])的调查创意,移植中国知识界,透过中国71位知识分子回答“哪些书对你的思想的形成产生过帮助?”和“ 为什么?”此两个问题,罗列出一个长长的书单。此一方法也不失为找到好书读的方法,通过各个领域翘楚所荐,找到各个领域的好书。退而求其次也可以看作是一则则读书笔记或者书评吧。

现在书单整理如下,自飨,共飨。

1. ''艾晓明'' 中山大学中文系教授

''研究方向:''中国现当代文学、比较文学与世界文学、女权主义

''推荐书目:''

# 《文学讲稿》,[美]纳博科夫著,申辉慧译,上海三联,2005

''理由:''纳博科夫认为,要做一个优秀读者,并不是一定要参加一个读书会,或者与书中主人公认同,或者是自己也写东西,而是:1. 须有想象力。2. 须有记性。3. 手头应有一本字典。4. 须有一定的艺术感。


<<<
“风格和结构是一部书的精华,伟大的思想不过是空洞的废话”

聪明的读者在欣赏一部天才之作的时候,为了领略其中的艺术魅力,他不只是用心灵,也不全是用脑筋,“而是用脊椎骨去读的”
<<<

2. ''白谦慎'' 波士顿大学艺术史系终身教授

''研究方向:''艺术与社会史

''推荐书目:''

# 《谈美书简》(朱光潜著,上海文艺出版社,1980)
# 《美学散步》(宗白华著,上海人民出版社,1981
#《批判哲学的批判:康德哲学述评》,李泽厚著,人民出版社,1979)
#《意图的模式:关于图画的历史说明》([英]巴克森德尔著,曹意强等译,中国美术学院出版社,1997 Painting and Experience in 15th century Italy,Michael Baxandall,Oxford University Press,1972)
#《东晋门阀政治》(田余庆著,北京大学出版社,1989)

''理由:''
受20世纪80年代的文化热和美学热的影响;《东晋门阀政治》写作的慎重态度。虽说开卷有益,但影响我们的,常常是人和事,不见得是书。

//
2018年02月14日周三下午10:52:48//

3. ''陈方正 '' 香港中文大学中国文化研究所所长

''研究方向:''现代化比较、科技与现代化关系以及科学哲学,近年来致力于科学史研究。

''推荐书目:''

# 《中国历代政治得失》,钱穆著,北京三联,2002
#《国史大纲》,钱穆著,商务印书馆,1994
#《微积学发凡》,郑太朴著,台湾商务印书馆,1968
#《柯氏微积分学》,[德]库兰特著,朱言钧编译,中华书局,1952
#《膨胀的宇宙》,[英]爱丁顿著,曹大同译,商务印书馆,1937
#《原子及宇宙》,[德]黎铿巴著,陈岳生译,商务印书馆,1936
#《竞逐富强:西方军事的现代化历程》,[美]麦克尼尔著,倪大昕、杨润殷译,学林出版社,1996
#《法律与革命:西方法律传统的形成》,[美]伯尔曼著,贺卫方等译,中国大百科全书出版社,1993
#《法律与资本主义的兴起》,[美]泰格、[美]利维著,纪琨译,学林出版社,1996
#《朱熹的历史世界》,余英时著,北京三联,2004

''理由:''

引领进入科学的启蒙读物。《朱熹的历史世界:宋代士大夫政治文化的研究》,这是具有开创性的一部中国学术—政治思想史,穷搜经典,发覆探幽,达到了如此的深度、广度以及结构上的完整、严密。

//
2018年02月17日周三下午9:35:48//

''下载地址:''

[[《我书架上的神明》|https://www.asuswebstorage.com/navigate/s/9AD66DEE446E46A3B71F07C5DB8860914]](mobi格式)
<$transclude mode="block" tiddler=booklogsinfo/>
胡适的这几本小册子(《[[胡适谈读书与做人]]》、《[[中国哲学史大纲]]》《[[容忍与自由]]》)陆陆续续都看完了。其中有许多文章非学术要求是不必看的,例如胡适谈新生活、谈女性解放等,大部分文章今天看来依然不过时,例如谈自由、中国哲学漫谈以及中国文学等。我总对朋友说,要了解中国古典哲学书籍,不要看现代人写的,一定要看民国时期写就的。因为民国那波学人在青少年时期都受过文言文专业训练,所以更容易从古代典籍里钩沉索引,对原始素材的解读能驾轻就熟,如胡适。

我在读《[[民国清流:那些远去的大师们]]》时谈起过胡适(见问下相似主题),付之阙如。单说《[[容忍与自由]]》这本书的收获吧。

!! 关于自由

!!! 什么是自由

“自由”可说是一个倒转语法,可把它倒转回来为“由自”,就是“由于自己”,就是“由自己作主”,不受外来压迫的意思。宋朝王安石有首白话诗: 风吹屋顶瓦, 正打破我头。 我终不恨瓦, 此瓦不自由。 这可表示古代人对于自由的意义,就是“自己做主”的意思。 另外,在中国古代思想里,“自由”就等于自然,“自然”是“自己如此”,“自由”是“由于自己”,都有不由于外力拘束的意思。陶渊明的诗:“久在樊笼里,复得返自然”,这里“自然”二字可以说是完全同“自由”一样。

在欧洲文字里,“自由”含有“解放”之意,是从外力裁制之下解放出来,才能“自己作主”。

!!! 中国古代自由主义思潮
古代思想的第一位大师老子的自由主义:“天下多忌讳,而民弥贫。”“法令滋彰,盗贼多有。”“民之饥,以其上食税之多,是以饥。”“民之难治,以其上之有为,是以难治。”“民之轻死,以其求生之厚,是以轻死。”“天之道损有余,而补不足。”“人之道则不然,损不足以奉有余。”“民不畏死,奈何以死惧之?”以及“无为政治”主张。

孔子的偏左的“中间派”自由思想:“有教无类”、“三军可夺帅也,匹夫不可夺志也。”。

全世界的自由主义的最早一个倡导者孟子:“贫贱不能移,富贵不能淫,威武不能屈”。(这是中国经典里自由主义的理想人物)、“民为贵,君为轻”。

在春秋时代,因为国家多,“自由”的思想与精神比较发达。秦朝统一以后,思想一尊,因为自由受到限制,追求自由的人,处于这“无所逃于天地之间”的环境中。

汉朝的儒教太黑暗了,就有桓谭、王充(《论衡》)、张衡起来,作大胆的批评。后来佛教势力太大了,就有齐梁之间的范缜(《神灭论》),唐朝初年的傅奕,唐朝后期的韩愈出来,大胆地批评佛教(《谏迎佛骨表》)(“一封朝奏九重天,夕贬潮阳路八千”。),攻击那在当时气焰熏天的佛教。

在理学极盛时代,也曾有多少次批评正统思想或反抗正统思想的运动。王阳明的运动就是反抗朱子的正统思想的。李卓吾是为了反抗一切正宗而被拘捕下狱,他在监狱里自杀的。他死在北京,葬在通州。北方的颜李学派,也是反对正统的程朱思想的。清朝有“颜李学派”,反对当时皇帝提倡的“朱子学派”。

!!! 中国古代自由主义的局限性
中国古人太看重“自由”、“自然”的“自”字,所以往往看轻外面的拘束力量,也许是故意看不起外面的压迫,故意回向自己内心去求安慰,求自由。这种回向自己求内心的自由,有几种方式,一是隐居隐遁、一种是梦想神仙的生活。

东方自由主义运动始终没有抓住政治自由的特殊重要性,所以始终没有走上建设民主政治的路子。西方的自由主义绝大贡献正在这一点,他们觉悟到只有民主的政治方才能够保障人民的基本自由,所以自由主义的政治意义是强调的拥护民主。


<<<
自由主义的第一个意义是自由,第二个意义是民主,第三个意义是容忍——容忍反对党,第四个意义是和平的渐进的改革。
<<<

“我年纪越大,越觉得容忍比自由还更重要。”为什么容忍比自由还更要紧呢?因为容忍就是自由的根源,没有容忍,就没有自由可说了。

2019年08月20日周二下午03:21:05

<<slider label:"关联书籍和主题" src:"<$transclude tiddler=bookkeywords/>"
srcClass:"alert alert-secondary">>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
!结果:
<<imageSlider  [[https://cl.ly/oqCd/Snipaste_2018-01-15_17-24-34.png]]    "点击展开">>

中央研究院第一届81名院士,在1949年的人生抉择。去台湾的10人,去它国的12人,留在内地的近60人。这些全中国最聪明的大脑们,高达74%的人对中国未来发展产生严重误判,付出惨重代价,政治运动中不幸自杀或批斗致死14个。学识渊博,而见识浅薄。

!人物:
<$details summary="点击展开" tiddler="DetailsWidget" open="y" class="warning" state="myTempState">

[img[https://cl.ly/oqxT/DTWQe31U8AAcBbk.jpg]]
</$details>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
添加一个注脚宏($:/macros/danielo/footNote),注脚样式 [[popupStyle]]。

使用方法:

1. 单独注释:

```
<<footnote "[1]"我就是我啊">>  |  <<footnote "Coze" "[[coze]]">>  |  <<footnote "Coze" "{{Coze}}">>  
```
我是谁?<<footnote "[1]" "我就是我啊">>

2. 多次注释:

```
<<ref "Coze">>
```
我是谁?<<ref "Coze">>

3. 底部注释:

```
<<ref "[1]">>
+
<<footnotes "[1]" "You can see this footnote at the bottom of the page or inside a popup">>
```


我是谁啊?<<ref "Note2">> 您是谁啊?<<ref "Note3">>

---
<<footnotes "Note2" "我就是我Coze啊">>
<<footnotes "Note3" "您是访问者吧.">>

<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
系统2的一大主要功能是监督和控制思想活动以及由系统1引导的各种行为,使得一些想法直接体现在行动上,或者抑制或改变其他想法。系统2具备推理能力,它很谨慎,但对一些人而言,这个系统也是懒惰的。

系统2的属性之一就是记忆,是冲动、凭直觉的。是不需要消耗多少体能的思考行为。

所以,“懒人”更容易利用系统1,属于直觉型的。但是,并不说明系统2思维的人并不是“懒人”。

另外一方面,聪明并不是指具有很好推理能力的人,也指在记忆中搜寻相关信息和在必要时调动注意力的能力。也就是说,系统1和2都有聪明的属性。

那么实际生活过程中,什么是正确的思考行为那?

那就是不要做一个''“懒惰的人”'',克服系统2的懒惰属性,加强自我控制,不要过于自信的信任自己的直觉,对直觉再进行一下复核,也就是系统1给出的直觉后,让系统2也转起来。这种人被称之为''“勤快的人”'',他们更机警,思维更活跃,不会满足于貌似正确的答案,对自己的直觉也常持怀疑态度。心理学家基思·斯坦诺维奇认为他们更''理性''。

实验表明,自我控制能力的孩子在智力测验中得到更高的分数,控制其注意力的能力和控制其情感的能力之间有着紧密的联系。也就是,控制能力的提高可以提高认知能力。能高认知能力的人,不一定具有高的控制能力。也就是说,高智商并不能消除成见,高智商并不代表好脾气。肤浅的或者惰性思考是一个反思缺陷,是一个理性错误。

''总结:''没有“笨人”,只有“懒人”,提高控制力,做一个“勤快人”。

//2018年01月16日周二下午05:45:00//
<<<
子产相郑 <<footnote "①"子产在郑国做相国的时候">>,病将死,谓游吉曰:“我死后,子必用郑,必以严莅人 <<footnote "②"必须严厉对待人民">>。''夫火形严,故人鲜灼;水形懦,人多溺。''子必严子之形,无令溺子之懦。”子产死,游吉不肯严形,郑少年相率为盗,处于萑泽  <<footnote "③" 萑(huán)泽:泽名。">>,将遂以为郑祸。游吉率车骑与战,一日一夜,仅能克之。(节选自《韩非子》-子产诫游吉)
<<<

昨天我看《[[君主论]]》时候[[说“马基雅维利主义”中国早已有之|政治有道德吗?]],就是法家韩非子的主张。睡前看先秦文言故事就看到了《韩非子》- 子产诫游吉篇,更印证了我的想法。

子产是郑国名相。子产所说的“夫火形严,故人鲜灼;水形懦,人多溺。”,实为法家思想,用严格的法律惩戒人民,从而使民众远离犯罪。

韩非子法家思想是战国时期唯一的改革派思维。儒、墨、道各家有一个共通的态度,就是托古立言;他们都假托古圣贤之言以自重。孔子托于文王、周公,墨子托于禹,孟子托于尧舜,老、庄托于传说中尧、舜以前的人物;一个比一个古,一个压一个。尧舜禹都是传说中的大圣大贤人物,这就是决定了孔孟和老庄的政治主张都是有道德一面的。不托古而变古的只有法家。法家源流于“法术之士”(见《韩非子·定法》),法术之士是以政治为职业的专家,这就是决定了法家思想非道德的一面。而法家思想的缘起还要看当时的社会环境,才能正本溯源,认清本质。春秋末期,封建制度开始松动,贵族政治崩坏,出现了两方面的结果:一方面是平民的解放,一方面是君主的集权。这时候国家的范围,一天一天扩大,社会的组织也一天一天复杂。人治、礼治,都不适用了。法术之士便创一种新的政治方法帮助当时的君主整理国政,做他们的参谋。这就是法治。当时现实政治和各方面的趋势是变古——尊君权、禁私学、重富豪。法术之士便拥护这种趋势,加以理论化(见朱自清《经典常读》诸子篇),便成了法家,中国早期的“马基雅维利主义”。法家思想影响深远,绵延到今天而不绝。

再回头看子产的“夫火形严,故人鲜灼;水形懦,人多溺”观点,虽说是法家思想。但就子产本人来说,并非绝对的法家派,《新序》子产不毁乡校篇可见一斑:

<<<
郑人游于乡校 <<footnote "④" 乡间学校">>,以议执政之善否。然明谓子产曰:“何不毁乡校?”子产曰:“胡为?夫人朝夕游焉,以议执政之善否。其所善者,吾将行之,其所恶者,吾将改之,是吾师也,如之何毁之?吾闻为国忠信以损怨,不闻作威以防怨。譬之若防川也,大决 <<footnote "⑤" 决堤">> 所犯,伤人必多,吾不能救也,不如小决之使导,吾闻而药之也。”
<<<

子产为何不毁乡校?“其所善者,吾将行之,其所恶者,吾将改之,是吾师也,如之何毁之?”兼听则明,从善如流。“郑人游于乡校,以议执政之善否”这可能是中国最早期的集会结社的自有。从这几点来看,子产的政治观点还是有善政一面,具有政治的道德性。几千年前的政治主张比我们现在还明善!如今的自我审查,莫谈国是,是一种历史的严重倒退。

人类几千年的发展史,进步的是术,日新月异的技术发展;而在道 --- 人性和思想--- 方面的进步微乎其微。

2018年05月13日周日上午11:25:48

<$transclude mode="block" tiddler=bookinfo/>
<<<
总有一天会重新好起来。纵使我们今天怀着惘然若失,一筹莫展的心情,像半个瞎子似的在恐怖的深渊中摸索,但我依然从这深渊里不断仰望曾经照耀过我童年的昔日星辰,用从父辈们继承下来信念安慰自己:我们所遇到的这种倒退有朝一日终将成为仅仅是永远前进的节奏中的一种间歇。——斯蒂芬·茨威格《昨日的世界》
<<<

<$details summary="《昨日的世界》" class="notification">
[img[https://cl.ly/qFjp/download/yestday.jpg]]
</$details>

我们所遇到的这种倒退(参见<<ref "[1]">>)
有朝一日终将成为仅仅是永远前进的节奏中的一种间歇。谁都知道历史进化的方向是趋向进步的光明,可是历史的主角是人类,人性就是硬币的两面---恶与善,当历史的主角人性硬币恶的一面被掀开,历史就会停滞和倒退,历史的天空是灰暗的。人性也是易传染和延续的,就像感冒病毒,当环境适宜,人皆以病,唯有强壮着和逃避这种环境者得以幸免。所以,人类很难预测这种倒退和停滞,这种灰暗和阴霾的天空的时间会有多长,何时被结束。历史的经验教训,往往也是靠不住的,它只能对善者有效,对恶的惩戒微乎其微。因为,当权力的锤子在历史的主角手中时,他看什么都像钉子。

茨威格式的期冀是浪漫的--- --- 我依然从这深渊里不断仰望曾经照耀过我童年的昔日星辰,有点像中国文人的温柔---- --- 花儿只能在墙角悄悄的绽放和枯萎。茨威格选择了自我摧残式的枯萎,为了反对和强烈控诉法西斯对思想的专制统治,他与妻子双双服用镇静剂自杀--- ---——“出于自愿和理智的思考”,出于对他的“精神家园欧洲”的毁灭的痛心。

有信仰人格的文人在恶面前用恶的残缺--- ---浪漫--- ---反击恶;无信仰人格的文人要不选择妥协要不选择沉默,慢慢枯萎;恶的文人成为恶的帮凶和鼓吹手。小民,只能选择读书,痛苦中等待涅槃--- --- 我们所遇到的这种倒退有朝一日终将成为仅仅是永远前进的节奏中的一种间歇。

2018年03月17日周六下午09:21:50

下载 : [[《昨日的世界》|https://www.asuswebstorage.com/navigate/s/32D5212A1006480CB4D27CB1426C89624]] (mobi格式)

--

@@color:gray;<i class="fa fa  fa-wikipedia-w fa-3x fa-pull-left "></i>@@  <<footnotes "[1]" "[[有则改之,无则加冕]]">>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
<$transclude mode="block" tiddler=bookinfo/>
刚从[[蒋介石的岁月|蒋介石与现代中国的奋斗]]中出来,接着走进了鲁迅的人生。[[文学的群星闪耀时-国内篇]]开篇便为鲁迅(鲁迅之疑),接着是萧红(萧红:一个漂泊的灵魂)、老舍(人民艺术家老舍)、莫言(解释莫言)和张贤亮(一个作家的“野蛮生长")。除了对萧红和老舍毫无兴趣之外,对鲁迅和莫言则是读的重点。一个故去,成了符号;一个活着,成为骄傲。

我对鲁迅的了解,基本上停留在从中学课本学到的有限知识的残留。三味书屋、闰土、呐喊、在仙台、阿Q和热血馒头,这些词汇之于我就代表了鲁迅。作为一个时代代表性人物,应该了解,而我确由于少年时在课堂上被老师强迫性要求对课本人物进行时代意义总结和积极精神归纳而由衷的排斥和反感。说实话,那时候我也弄不懂哪些大时代背景下符号人物的积极意义和时代号召作用,留下的印象只是在课堂上生生被老师烙上去的。而今日再读,尤其是纵览鲁迅生平,方知鲁迅作品何来与何去。也算是自己真正做完了少年时课堂上的一道作业。

2018年02月05日周一上午12:48:27

''下载地址:''

[[《文学的群星闪耀时-国内篇》|https://www.asuswebstorage.com/navigate/s/395E4B3DF9F04D4BBFF9049FBD435F5F4]](mobi格式)
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
<<<
<span style="float:right;width:120px">[img [RIZI-black.png]]</span>

本站 @@color:Black;^^ ''Λ''^^@@(
 [[备用IPFS 地址|http://io.rizi.me/]])主要内容为[[读书日志|Reading Logs]],逻辑结构以[[书|Library]]为[[主题|Album]]聚合。平台基于开源程序<<dbadge "Tiddlywiki" "5.1.22" "info">>开发,存储在
<<dbadge "~OneDrive" "EDU" "success">>,腾讯云函数和Heroku解析并作图床 @@color:Grey;^^[[Rizi Box]]^^@@,每天00:00由<<badge success "Microsoft Flow">>自动更新,通过<<badge info "Cloudflare">>分发,并支持<<badge primary "Markdown">>语法。最佳效果请科学上网并使用<<dbadge "Chrome" "Firefox" danger>>浏览器。本站提及的书目如有需要请[[联系我|Jerry]]。 <<fa fa-info-circle>> 转载者请注明来源!
<<<

<<fa fa-telegram>> [[Telegram阅读频道|https://telega.one/s/GoReading]]  | <<fa fa-group>>
[[Λ-Reading Newsletter|Λ-Reading]] | <i class="fa fa-weixin"></i>  <$appear type="popup"show=" 公众号"  keep="no" $state="sticky">
[img[http://one.rizi.me/Photos/rizime/Wechat.jpg]]
</$appear>  |  <<fa fa-commenting >>  [[留言|Your Message]]
\define thisSeriesSelect()
<$select tiddler='$:/temp/newbook' field='series' default='None'>
<$list filter='[[$:/data/SeriesTitles]indexes[]sort[title]regexp:[(?i)$(thisSeriesSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisGenreSelect()
<$select tiddler='$:/temp/newbook' field='genre' default='None'>
<$list filter='[[$:/data/BookGenres]indexes[]sort[title]regexp:[(?i)$(thisGenreSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisAuthorSelect()
<$select tiddler='$:/temp/newbook' field='author' default='None'>
<$list filter='[[$:/data/BookAuthors]indexes[]sort[title]regexp:[(?i)$(thisAuthorSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisLocationSelect()
<$select tiddler='$:/temp/newbook' field='location' default='None'>
<$list filter='[[$:/data/BookLocations]indexes[]sort[title]regexp:[(?i)$(thisLocationSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisTagSelect()
<$select tiddler='$:/state/booktag' field='selected_tag'>
<$list filter='[[$:/data/BookTags]indexes[]sort[title]regexp:[(?i)$(thisTagSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

Adding books:

<!--Title-->
Title: <$edit-text tiddler='$:/state/newbook' field='book_title' class='tc-edit-texteditor' placeholder='Book Title'/>
<!--End Title-->
<!--Author-->
<$reveal type=match text=true state='Library Tracker Settings!!show_author'>
Author: <$reveal state='$:/state/Library Tracker/add author' type=nomatch text='new'>
<$set name=thisAuthorSearch value={{$:/state/newbook!!narrow_author_select}}>
<<thisAuthorSelect>></$set> <$edit-text tiddler='$:/state/newbook' field='narrow_author_select' placeholder='Narrow Author List'/> (<$button set='$:/state/Library Tracker/add author' setTo='new'>New Author</$button>)
</$reveal>
<$reveal state='$:/state/Library Tracker/add author' type=match text='new'>
<$edit-text tiddler='$:/state/newbook' field='book_author' placeholder='Author'/><$button><$action-setfield $tiddler='$:/data/BookAuthors' $index={{$:/state/newbook!!book_author}} $value=1/><$action-setfield $tiddler='$:/state/newbook' $field='book_author' $value=''/>Add</$button><$button set='$:/state/Library Tracker/add author' setTo='notnew'>Done</$button>
</$reveal><br>
</$reveal>
<!--End Author-->
<!--Series-->
<$reveal type=match text=true state='Library Tracker Settings!!show_series'>
Series: <$reveal state='$:/state/Library Tracker/add series' type=nomatch text='new'>
<$set name=thisSeriesSearch value={{$:/state/newbook!!narrow_series_select}}>
<<thisSeriesSelect>></$set> <$edit-text tiddler='$:/state/newbook' field='narrow_series_select' placeholder='Narrow Series List'/>  (<$button set='$:/state/Library Tracker/add series' setTo='new'>New Series</$button>)
</$reveal>
<$reveal state='$:/state/Library Tracker/add series' type=match text='new'>
<$edit-text tiddler='$:/state/newbook' field='book_series' placeholder='Series Title'/><$button><$action-setfield $tiddler='$:/data/SeriesTitles' $index={{$:/state/newbook!!book_series}} $value=1/><$action-setfield $tiddler='$:/state/newbook' $field='book_series' $value=''/>Add</$button><$button set='$:/state/Library Tracker/add series' setTo='notnew'>Done</$button>
</$reveal><br>
</$reveal>
<!--End Series-->
<!--Genre-->
<$reveal type=match text=true state='Library Tracker Settings!!show_genre'>
Genre: <$reveal state='$:/state/Library Tracker/add genre' type=nomatch text='new'>
<$set name=thisGenreSearch value={{$:/state/newbook!!narrow_genre_select}}>
<<thisGenreSelect>></$set> <$edit-text tiddler='$:/state/newbook' field='narrow_genre_select' placeholder='Narrow Genre List'/> (<$button set='$:/state/Library Tracker/add genre' setTo='new'>New Genre</$button>)
</$reveal>
<$reveal state='$:/state/Library Tracker/add genre' type=match text='new'>
<$edit-text tiddler='$:/state/newbook' field='book_genre' placeholder='Genre'/><$button><$action-setfield $tiddler='$:/data/BookGenres' $index={{$:/state/newbook!!book_genre}} $value=1/><$action-setfield $tiddler='$:/state/newbook' $field='book_genre' $value=''/>Add</$button><$button set='$:/state/Library Tracker/add genre' setTo='notnew'>Done</$button>
</$reveal><br>
</$reveal>
<!--End Genre-->
<!--Location-->
<$reveal type=match text=true state='Library Tracker Settings!!show_location'>
Locaction: <$reveal state='$:/state/Library Tracker/add location' type=nomatch text='new'>
<$set name=thisLocationSearch value={{$:/state/newbook!!narrow_location_select}}>
<<thisLocationSelect>></$set> <$edit-text tiddler='$:/state/newbook' field='narrow_location_select' placeholder='Narrow Location List'/> (<$button set='$:/state/Library Tracker/add location' setTo='new'>New  Location</$button>)
</$reveal>
<$reveal state='$:/state/Library Tracker/add location' type=match text='new'>
<$edit-text tiddler='$:/state/newbook' field='book_location' placeholder='Location'/><$button><$action-setfield $tiddler='$:/data/BookLocations' $index={{$:/state/newbook!!book_location}} $value=1/><$action-setfield $tiddler='$:/state/newbook' $field='book_location' $value=''/>Add</$button><$button set='$:/state/Library Tracker/add location' setTo='notnew'>Done</$button>
</$reveal>
</$reveal>
<!--End Location-->


<!--Tags-->
<$reveal type=match text=true state='Library Tracker Settings!!show_tags'>
Tags (it will always be tagged with `Book` by default):<br>
<$reveal type=match state='$:/state/newbook!!add_or_create_tag' text='create'>
New Tag: <$edit-text tiddler='$:/state/booktag' field='tag_temp' placeholder='New Tag'/>
<$button>Create Tag
<$action-setfield $tiddler='$:/data/BookTags' $index={{$:/state/booktag!!tag_temp}} $value=1/>
<$action-setfield $tiddler='$:/state/booktag' $field='tag_temp' $value=''/>
</$button>
<$button set='$:/state/newbook!!add_or_create_tag' setTo='nocreate'>Done</$button><br>
</$reveal>
<$reveal type='nomatch' state='$:/state/newbook!!add_or_create_tag' text='create'>
Tag to add: 
<$set name=thisTagSearch value={{$:/state/newbook!!narrow_tag_select}}>
<<thisTagSelect>>
</$set>
<$fieldmangler tiddler='$:/temp/newbook'>
<$button>
<$action-sendmessage $message='tm-add-tag' $param={{$:/state/booktag!!selected_tag}}/>Add Tag
</$button>
<$edit-text tiddler='$:/state/newbook' field='narrow_tag_select' placeholder='Narrow Tag List'/>
(<$button set='$:/state/newbook!!add_or_create_tag' setTo='create'>New Tag</$button>)
</$fieldmangler>
<br>
</$reveal>
List of current tags:<br>
<$fieldmangler tiddler='$:/temp/newbook'>
<$list filter='[[$:/temp/newbook]tags[]]'><$view field='title'/> <$button>Remove Tag<$action-sendmessage $message='tm-remove-tag' $param=<<currentTiddler>>/></$button><br> </$list>
</$fieldmangler>
</$reveal>

<$fieldmangler tiddler={{$:/state/newbook!!book_title}}>
<$button>
<$action-setfield $tiddler='$:/temp/newbook' title={{$:/state/newbook!!book_title}}/>
<$action-sendmessage $message='tm-add-tag' $param='Book'/>
<$action-setfield $tiddler='$:/state/newbook' book_title=''/>
<$action-setfield $tiddler='$:/temp/newbook' tags=''/>
Add Book</$button>
</$fieldmangler>
<ul>
  <$list filter="[tag[Album]!<currentTiddler>!sort[created]]">
    <li>
		<$link><$view field="title"/></$link>

</li>
  </$list>
</ul>

增加了`alink`宏(
$:/.tb/macros/alink),也就是别名的超链接。
在此Tiddler的栏位增加此格式` alink:|系统更新|System update|update log|系统更新日志|`,即可实现。


```
; test
: <<alink 系统更新>>
: <<a: "System update">>
: <<a: 更新日志>>
: <<alink "update log">>
; proof
: alink:<code>{{alink(别名)宏的使用!!alink}}</code>
```
实现效果:

; test
: <<alink 系统更新>>
: <<a: "System update">>
: <<a: 更新日志>>
: <<alink "update log">>
; proof
: alink:<code>{{alink(别名)宏的使用!!alink}}</code>

{{alink(别名)宏的使用!!alink}}
<div class="card text-white bg-primary mb-3 shadow-lg" style="max-width: 18rem;">
  <div class="card-header">Alipay</div>
  <div class="card-body">
    <span class="h5 card-title"></span>
    <p class="card-text">[img [AliPay.jpg]]</p>
  </div>
</div>

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
<<<.tc-big-quote
人类进化之树,历史是梗,艺术是花,今日是果。--- 郭子
<<<

<$list filter="[field:topic[Art and History]]+[!sort[created]]">

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  @@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> @@  - <$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/>  
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-60]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-60]]"> @@color:gray;^^有点久了^^@@</$list>


<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>

<<tabs "[[Book List]] [[Add Books]] [[Manage Books]] [[Library Tracker Settings]]">>
\define thisBookList()
<$list filter='[tag[Book]$(SelectedFilterPart)$sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]' variable=CurrentBook>
	<tr>
		<td>
			<$link to=<<CurrentBook>>>
				<$view tiddler=<<CurrentBook>> field='title'/>
			</$link>
		</td>
		<td>
			<$view tiddler=<<CurrentBook>> field=author/>
		</td>
		<td>
			<<thisSetLocation>>
		</td>
		<td>
			<$view tiddler=<<CurrentBook>> field=series/>
		</td>
		<td>
			<$view tiddler=<<CurrentBook>> field=genre/>
		</td>
	</tr>
</$list>
\end

\define thisBookList2()
<$list filter='[tag[Book]sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]' variable=CurrentBook>
	<tr>
		<td>
			<$link to=<<CurrentBook>>>
				<$view tiddler=<<CurrentBook>> field='title'/>
			</$link>
		</td>
		<td>
			<$view tiddler=<<CurrentBook>> field=author/>
		</td>
		<td>
			<<thisSetLocation>>
		</td>
		<td>
			<$view tiddler=<<CurrentBook>> field=series/>
		</td>
		<td>
			<$view tiddler=<<CurrentBook>> field=genre/>
		</td>
	</tr>
</$list>
\end

\define thisSelectThing()
<$reveal type='match' state='$:/state/newbook!!sort' text='author'>
	<$select tiddler='$:/state/newbook' field='selected_type'>
	<option value=''>
		All
	</option>
		<$list filter='[[$:/data/BookAuthors]indexes[]]'>
			<option>
				<$view field='title'/>
			</option>
		</$list>
	</$select>
</$reveal>
<$reveal type='match' state='$:/state/newbook!!sort' text='genre'>
<$select tiddler='$:/state/newbook' field='selected_type'>
<option value=''>All</option>
<$list filter='[[$:/data/BookGenres]indexes[]]'>
<option><$view field='title'/></option>
</$list>
</$select>
</$reveal>
<$reveal type='match' state='$:/state/newbook!!sort' text='series'>
<$select tiddler='$:/state/newbook' field='selected_type'>
<option value=''>All</option>
<$list filter='[[$:/data/SeriesTitles]indexes[]]'>
<option><$view field='title'/></option>
</$list>
</$select>
</$reveal>
<$reveal type='match' state='$:/state/newbook!!sort' text='location'>
<$select tiddler='$:/state/newbook' field='selected_type'>
<option value=''>All</option>
<$list filter='[[$:/data/BookLocations]indexes[]]'>
<option><$view field='title'/></option>
</$list>
</$select>
</$reveal>
\end

\define thisMakeSelectedValue()
$(sortType)$[$(SelectedType)$]
\end

\define count1()
<$count filter='[tag[Book]$(SelectedFilterPart)$sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]'/>
\end

\define count2()
<$count filter='[tag[Book]sort[$(sortType)$]regexp:$(searchField)$[(?i)$(thisSearch)$]]'/>
\end

\define thisSetLocation()
<$reveal type='nomatch' state="""$:/state/Library Tracker/$(CurrentBook)$""" text='edit'>
	<$button class='tc-btn-invisible' set="""$:/state/Library Tracker/$(CurrentBook)$""" setTo='edit'>
		<$view tiddler="""$(CurrentBook)$""" field=location/>
	</$button>
</$reveal>
<$reveal type='match' state="""$:/state/Library Tracker/$(CurrentBook)$""" text='edit'>
	<$button class='tc-btn-invisible' set="""$:/state/Library Tracker/$(CurrentBook)$""" setTo='noedit'>
		{{$:/core/images/done-button}}
	</$button>
	<$select tiddler="""$(CurrentBook)$""" field='location'>
		<$list filter='[[$:/data/BookLocations]indexes[]]'>
			<option>
				<<currentTiddler>>
			</option>
		</$list>
	</$select>
</$reveal>
\end


If you click on the location of a book it will allow you to change the books location.

|Sort by |<$select tiddler='$:/state/newbook' field='sort' default='title'><option value='author'>Author</option><option value='genre'>Genre</option><option value='series'>Series</option><option value='title'>Title</option><option value=location>Location</option></$select>|<<thisSelectThing>>|
|Search by |<$select tiddler='$:/state/newbook' field='search_in' default='title'><option value='author'>Author</option><option value='genre'>Genre</option><option value='series'>Series</option><option value='tags'>Tag</option><option value='title'>Title</option><option value=location>Location</option></$select>|<$edit-text tiddler='$:/state/newbook' field='search_text' placeholder='Search'/>|

<$set name=sortType value={{$:/state/newbook!!sort}}>
<$set name=searchField value={{$:/state/newbook!!search_in}}>
<$set name=thisSearch value={{$:/state/newbook!!search_text}}>
<$set name=SelectedType value={{$:/state/newbook!!selected_type}}>
<$set name=SelectedFilterPart value=<<thisMakeSelectedValue>>>

<$reveal type='nomatch' state='$:/state/newbook!!selected_type' text=''>
Number of matching books: <<count1>>
<table>
<tr><th>Title</th><th>Author</th><th>Location</th><th>Series</th><th>Genre</th></tr>
<<thisBookList>>
</table>
</$reveal>
<$reveal type='match' state='$:/state/newbook!!selected_type' text=''>
Number of matching books: <<count2>>
<table>
<tr><th>Title</th><th>Author</th><th>Location</th><th>Series</th><th>Genre</th></tr>
<<thisBookList2>>
</table>
</$reveal>

</$set>
</$set>
</$set>
</$set>
</$set>
<a href={{!!douban}} target="_blank"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!cover}} width=30%></a>

<div class="tc-subtitle"> 

<<<
@@color:#808080; 书名:《{{!!title}}》;作者:{{!!author}};国别:{{!!location}};分类: {{!!genre}};系列:{{!!series}};备注: {{!!note}}@@
<<<


<$list filter="[has:field[book_title] +field:book_title{!!book_title}] -[[Manage Books]] -[is[shadows]] -[is[system]] -[<currentTiddler>] +[!sort[created]limit[10]]">

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; <$view field="description"/>  | <$view field="caption"/> |  //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>

</$list>

---

''Backlinks: ''
<$list filter="[all[current]backlinks[]]">
<li>
<$link><$view field="title"/></$link> ^^ <$view field="caption"/>^^
</li>
</$list>
''作者其它作品和相似主题:''
<$list filter="[search:relation,author,book_title,keywords:{!!author}] -[<currentTiddler>] -[[Manage Books]] -[is[shadows]] -[is[system]] +[sort[created]limit[10]] [{!!relation}]">
<li>
<$link><$view field="title"/></$link> ^^ <$view field="author"/>^^  <$view field="description"/>  //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//
</li>
</$list>

''Backlinks: ''<br>
<$list filter="[all[current]backlinks[]]">
<li>
<$link><$view field="title"/></$link> ^^ <$view field="caption"/>^^
</li>
</$list>

''关联书籍和主题:''<br>
<$list filter="[{!!book_title}][!is[system]search:keywords,relation,book_title,description,summary,caption,title:words{!!keywords}] -[<currentTiddler>] -[[Manage Books]] -[is[shadows]] +[sort[created]limit[10]] [{!!relation}]">
<li>
<$link><$view field="title"/></$link>  <$view field="description"/> ^^  <$view field="caption"/> ^^
 //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//
</li>
</$list>

<div class="tc-subtitle">最後更新於<$view field="modified" format="relativedate"/>
<<alert dark src:"关键词: {{!!keywords}} | 综述:{{!!caption}} {{!!description}} | 摘要: {{!!summary}}  |  存疑:{{!!doubt}} 
 | 相关:{{!!relation}} | 备注:{{!!note}}"class:"leftbar border-dark">></div>
''Bullet Journal''(Bullet Points),子弹笔记,简称bujo,是一套以简洁表述加符号识别的GTD+Note的结合体。由于对GDT很感兴趣,加上用Tiddlywiki一直在写笔记,所以大致浏览了一下此书,也顺便搜索了一些国人的使用情况,无甚突破性新意。比较适合时间较宽裕的文艺青年做规划整理使用,可以有功夫用笔勾画出自己所需要的Style。事实上,此套笔记或GTD策略,一个[[Google Keep|https://keep.google.com]]就完全可以实现,并且还可以通过时间和地理位置主动性提醒。



* [[官方参考网站|https://www.tinyrayofsunshine.com/]]
* [[知乎的评论|https://www.zhihu.com/question/50114499]]
* [[学习心得|https://www.jianshu.com/p/9dd8835761c4]]


//2018年03月12日周一下午04:16:11//

pre {
	background-color: #95A8A2;
	padding: 20px 14px 14px;
	box-shadow: 3px 3px 5px 2px #e1e1e1;
       border-radius:8px;
}
pre > code {
	color: #FFFFFF;
}
[img [http://www.csun.edu/science/ref/learner/cognitive%20science/cognitive-science.jpg]]

Cogntivie Science is the tudy of the nature of intelligence and reasoning. It draws on evidence from a variety of empirical disciplines, including:

* [[生物学]] Biology
* [[神经科学]] Neuroscience
*  教育心理学 educational psychology
* 教育理念 educational philosophy
* [[语言学]] linguistics
* 计算机科学 computer science,
* 社会学 sociology

---

@@color:gray;<i class="fa fa fa-info-circle fa-3x fa-pull-left "></i>
''Reference:''<a href={{!!ref}} target="_blank">[1]</a> @@ 


<h2><b>Comments Demo: Update</b></h2>

<$reveal type="nomatch" state="$:/state/Comment1" text="show">

<$button class="note "set="$:/state/Comment1" setTo="show"><img src="data:image/gif;base64,R0lGODdhEAAQAIACAAAAAOroMSwAAAAAEAAQAAACFYyPqcutAKN0tCYJrN4HRw5eWEiGBQA7"/> </$button>

</$reveal>

<$reveal type="match" state="$:/state/Comment1" text="show">

<$button class="note "set="$:/state/Comment1" setTo="hide"><img src="data:image/gif;base64,R0lGODdhEAAQAIACAAAAAOroMSwAAAAAEAAQAAACFYyPqcutAKN0tCYJrN4HRw5eWEiGBQA7"/> </$button>

这里没有什么秘密

</$reveal>

''Decision theory''(决策论),是一个交叉科学,涉及数学、统计、经济学、哲学、管理和心理学等学科。它主要如何进行决策,以及如何达到最优决策。其目标是帮助人们进行进一步良好决策的工具和方法论。常见的如启发式决策,典型实力就是赌徒谬论 <<footnote "[1]"赌徒谬论是错误地相信一个随机事件受到之前的随机事件的影响。例如,有百分之五十的概率使一枚硬币出现正面。赌徒谬误的表明,如果硬币出现反面,下次它翻转,出现正面。这是完全不正确的。">>。


!! 结构
<<textSliderNoButton "''[[决策过程|Decision theory]]''" "* 五W问题(Asking the Who, What, When, Where, and Why Questions)
* 反置 (Invert)
* 正确与非共识
* [[黑天鹅|黑天鹅]]
** [[高斯分布|不确定性和未知之美]](正态分布、钟形曲线)
** [[大数定律]]
" >>
返回[[思维模型|Thinking Models]]

!! ''决策流程''(宏观的[[Thought Framework]]):

*认识问题
*# 系统1:(基于[[PKM]])直觉输出
*#系统2:复查
*#*Who, What, When, Where, and Why Questions
*#*定义问题
*#**降噪
*#** 属于黑天鹅、灰天鹅还是灰犀牛
*#//''关于问题:''目标是什么?核心问题是什么?可不可以量化?量化的上下限是什么?//

*分析问题
**拆解问题(哲学:还原论,见:[[尼采的锤子]])
**#问题分析法:思维导图、鱼骨图法等
**#问题量化
**#问题同构与自相似
**#事物的隐结构与隐秩序
**#复杂系统变动:勒夏特列原理<<ref "[2]">>  、正反馈与负反馈的交错 <<footnote "[3]" "好的越来越好,差的越来越差">>
**分析问题
**#分析方法:[[Mental Models]]

**//''关于分析:''有哪些有利因素?那些可以利用的资源?有哪些不利因素与阻力?//

*设计解决方案
**决策
***决策工具
***#SWOT分析
***#加权平均分析
***#[[决策树|决策树]] 
***黑天鹅、灰天鹅还是灰犀牛思维解决
**//''关于解决:''时间和空间的要求是什么?事情是求效率还是求公平?如何照顾参与的人?//

*行动



!!! 正确与非共识
独立思考的重要输出结果就是非人云亦云。大部分人的观点并不是代表着正确,也就是人数的多寡并不是判断正确与否的标准。共识只是一个民主概念。所以,在大多数认为的情况下,要保持警惕。在金融股票市场以及红海市场,做到正确而非共识,才可以一骑绝尘。

[img width=60% [http://one.rizi.me/Photos/rizime/zqyfgs.png]]

!!! 反置 (或曰倒置 Invert)

芒格说:“Invert, always invert”。

何谓“Invert”?其实就是中国古话说的:“有所为,有所不为”。有所不为是为了有所为,通俗的说就是“专注”。



-- -- --

@@color:gray;<i class="fa fa fa-info-circle fa-3x fa-pull-left "></i>@@

<<footnotes "[2]" "勒夏特列原理(英语:Le Chatelier's principle),又称平衡移动原理,是一个定性预测化学平衡点的原理,其内容为:
化学平衡是动态平衡,如果改变影响平衡的一个因素,平衡就向能够减弱这种改变的方向移动,以抗衡该改变。
也就是说,对于一个在某一个特定条件下达到平衡的体系,假设这个条件改变,这个平衡就会朝减弱该改变的方向移动。
这个原理只能用来定性判断,不能进行定量计算,不能首先判断平衡是否处于平衡态。

例如:改变了压强,返回的却是温度、浓度、体积等另外维度上的因素的反噬。

组织,公司,社会:你压制了一种因素,别的(许多)不同维度的因素就会反噬以减弱你的改变。但是这种反噬不是线性的,它是以整个系统的级别的变动来表征的。系统发展的本质就是:从一个平衡到另外一个平衡。">>


<$button message="tm-close-tiddler">Close Me!</$button>
iVBORw0KGgoAAAANSUhEUgAAAGQAAABkCAYAAABw4pVUAAAgmElEQVR42m3daY4kx7GFUd//ziiKIimKSxBHDRQ30A+38A7wwVA/srsiI8IHG64Nbu75fvnlly/ffvvtl19//fXLn3/++eW///3vl2+++ebLzz///GX39t1f//rXj/v/+te/vvznP//58re//e3Lv//9749n//jjj4/rf/7zn/vu47m///3vX3766afd+/j+q6+++mjvf//7397Z87u3Z9feR/+//fbbx/3ff//9i/uu//KXv2jro93vvvtu7+3ex3s//vjjvt93e2b319/GvjGv/fW7z+a08e37vf/x+f7773dv/W0Ou15/a9N4dt+YjG/P7hp9tLHx7h6arb2NZ+8Yz/7Wxwe9tf82+D1k8mt8L29yG/we3iR3fx2YzF4eMda45/f+rhF7g9rg9/yeXee7j3l77+uvv9699bXv1v6+3/trh3Ds83H/hx9+QPhNYtfrd3/vnTF/z+27jzGb39rfe2PervfMPuufsGwc//jHP/bc/jZ+hN31xrP/196+3/P+3juj39raXDfGPb/rPVN67tm1uf4/xur9t4s9uMnvJmLrHOE36HW25zdgmrF7+5skbCAjjskiJEkkZWtj9wnC3id5u7drzNb/iI8462fM27sIvvFh1r4fsfaeOWw+CGF+BG/XY6a5r/2NZ/fXhvlj1ua4a+9uHujj+WnKniOMu97Y9g7N2/XapLlvN3ROrTfgTYak7zNJ20sdDM3Z8yPWnt9AqCFm7LPBkJy1s/ZI5tohyZix9vc/zcQM0IbY2iS55kNyPT/N2N9rf+0gzuYCFkEgSd+9PbN+CA9NXHv7mzCOmJi572k+bSryEEYQN2jdeNf/g+GIj5N7iPTVhpTYa5Dk7/k9o/M9u/tszr73zoi7gSDwmLH/1xZJREywtfYRdM+TrE2YTTGH9bd2NgaSt/cxfJrAfu37zR/E0Exasmvjp92Qwfw9j9mED7PWH+E0H1oMacDeG3GolJswfd9RKzi4a4MlCYgLRgwEBhd2alOouYmPOJO8TQyurn3901SMAUsIwQYY+65HDFJpPHtvbYLBfc8oM/BsDhuyDxhau3t/8wRjYGf9r28CAqY7H+9qX3+jwXOxztyk+iPu/sZ9BgtMIc4aB1sGtmd2DU9JHi0haYRh17tPE2EsSCpzEQ+s1nsDm2CLtzUikMSOH0yZv7/3DAdh1+ZHi8sMUEQzwNTe33uYz8bQbjaaU7LxPMTfw/t7g+cK73+wQ3K4grvGiH1oDrUkuWUWyOP97FkE22SoLRuzd0kj72j3dg2j9z7NBQu8v/VPgHiHNIVrXuYRRphe2N34zW39bf60eh/9jzYcmr1Hs8YcY+dg0ArCu+tXtQIjXiYJI86+h9H86jW+zwa//2kbTXFNk1xz9WAoZiHO7oNABpAk8vN3D3NpsjEVlozX3MBEmS1uMMc6EIhFuMB6DTTNIe0cDAyvJolz0Iswbv7r83lYA5vcBgHnSNruMZD7X2fiBjalgyUpfHCYT2pJsokgJkgBmzyR/e9+bR6IMH4wgVmYT1JpOdjYOMx/xOLMcDg8y6aCOQacK1t6YTZvatdgX0Co/V0TyMf47oLrBXp4Qxrj6noGhiN2B4tZbASY4FobLIjRHtjaNWIbrPd3zaFY//uba0o49sxgbtegkiSvDzAMIhsX8PDWHi0k2a7BPMHhbdFKmmwshJNnp3+0Mf7HTjBIDfpIdoM4HsmNWA1uE6G21BgzMIIrrW8RLWPHtUVsrrL7bJSx8H72P2jkQGAoJNAn70n7YJXk75pby4BzUIQKu4fgbC6nA7Hd52AQJsJbG7Vnn8ZwfRPgDfD9qS1Ngcm+A0s18PsfcUm+ASEmI7f+1xfYG6ysXc8zwIQD7JFEMFHXVVzBpoGNffSHWea3tjCb628+3H6ST1ibbmGgMbuutrkJqo2XZmr/MSj7eLhqJIJu7meTaUSOMVw9je8ZsMDm8OY8T635+jCdneCK+w6MSZGIo/TRIK1xjv4xu94NZvB+CNt1KBCP8Aoq0WfMLJIIso1tzzdOa2K1uSxqxkCRLAbXwzBbVE4yBGnUrgaxmsTvpvbiFP1Xc5qlZVPEBQzmJofwiMHeyK3teQLSdAXvipYRNhkK75vf+pSR4EC0fbCN8cazfjDT+LnW5oe+H8x+u6CWOvKygXAVdSSOwGlZTFK353YNNqQ36p1wJatJtKY2A0Gu5AoiZYXrLWI+N5l3CNJ2LQgENe6DSukU3pw4hYPAYSC8hAuUgT3u9dovbOsflKH/202SJfCr61k1NGFqXAym8iSd5wFWMA7mG1wleR/XjKm4hDcDNsQortm7XXsew8YsxG+uax9BIK02v9qUEZNgcSC47hyWXqOXDEGD4K6HNAXPHj3Eox0MMg+gKW6JMQbrMk8iDQySVMzjp5M0xGxiEDExRBBK22RlS2yEkJsimRyQGlCutj5LPOslu8ZcDgN0oAldQhCx7z6byICvvX3PG9WeMfE+eXSPFF4DI6ii0iZHUsAAZpA0kIXzTZcwqMVQbYvowV5hEO5b7AGrEpHGLyjk+rKJBMj4QYVcE++ScDWiNj82C6zC/LXNTrhu0NwIHkzVwGM8V/2RNpgH56k1XCxsNUvK4/B8XWP32BRqyhsq7GkPQdmYZpFBlPGQ+n0ErTIMdcUbR9wUfIWRYDRIbVyibxmEzpfNghTN4povYRN3sVHoOSY9gzE4EWPDe343b2GDuwbVwNgUhOiyKs0TAYOxYjBYoAU1+PXjBWU0GfO1x15hLmehBpw7bc0eM6s5YBhkCppro5pbEwdh9BU2NgXS3HTQE+FqTPjPW4D5PKp6W7UplRSQdiUJZvLsZE277An2EJhNoAkcBHag3lgTpbRJfwo2umxazaW9JBdDG9HzFhFanFHNYxNoN2bKWBiPPiEJ6H37h+SL2DFIVhRnGVgdCip5JDrXRjG5a9yeEXdIHJos6W9QKcIHU1xxEFdJbxxwI2hjacSOGGBKn5jLxrCxZQ7Ib0HFTe+AUjC8T0MNbaw/ccgmA99E3Cy/0iBqZrCuEQMGw8iu3IE10kKTYDbmVxhMtCuBCAKGBHKYR9JJ3qfpihrsCxuYB5ZpMpuAoF1voen64jDIxXXZmTCZHzvHwD8wIgi83gDJADsGf+uyEEudlLyTrCy1d5+U1RU1GcQjaYIwcQ2Yw3AwxgMCczfoxQDMdC3R14hb0KeuTDqfw1MksB7EAWpQyTXee4LqBrHGx1N90gU6E4EbIIO6lzGHVOFsbEwjZBEvKYKZMrQ0R3tyTXUouI4IUoPZDAK7w1sMMT6HrVaDgC1IQLKtyRemMR961CDX24IUNAf6sCEcGpqHHo+x3IXJGjzNqAElxWwCteX3k9J6a5gJtmC0dIiItjYLc1qQ0PULsGrscm018DC+K53GU2Eyvo3HuyU+ZjHgDDJm88Z4f42bCIf7/hZHgXDMfV0MqiRSIzbD/bp6ouNW4IG5urYG0wpHsKH9BnVdbDJBdVyYLSVvwQdGc1+5orw/DoHJXwegWd9mgcGqZV0eEc03pwatXUZuuoVWs1G0EH12/XCeWoMB6xNgooPFDL79XU/wvnphriTpcN0CBDDBppGienPskvQJqCyxeUsYa7L6Z5MIlpQ/T6sZBn1e4QLbBJDNravdrLT7AkWa03QOZXjqiBCjQZ8IsnGJdEWDoBp4cQeMlVhrip0kd6WxET7NuQUDhKE2zPPsXHNdrStj4MGoOZa4lqkFkDXIjZtqgwR92uCt+jSLjvlgefddo/dD3BYSU0sGtgbvVghiJFcUvnaNvukYnpxqlZvFbcFF1w9oDma1TqwpcZq9D83lWtJcxBSE1nvEODDGla1NNN8aaPdrg3hbXZIwVsJ5l80fNYWRvAEGmLdgMI0zmr6QUm4KmtaYPFhcP+6LmBtB0yzEam6JpnEdtXmr1sGgQE/cRBvBGulvkCnoA1FcZYwk6XcZGYSDoeYC5bKaeyNsdUAeYvFGaAq8lsshFSS7iT4pbtLKAN81ch6S9AycB1sG3JU5BpBU8e5onfE2XYJ4DDZNwzDCRvLB9K45OI2LuP68SzDUxaU6EJaxGwS6t0/NgCCZZj7eSsP/ZillTRlI3gNNkO9HHLCDePVeWiGI2FYmQR/Ya1AJgmgKyST5PCvEwwgwa2xsXmHF8zw6/bWqnuA1iL65vAbVdZWbNXcNhfahuWDy4aIgjlt4MZd3xD5IRxgYbw1eszE3qERYBQ5ghWsKz1srTGCa+4Lx+qq31iI2xhJzrF905RGut/SnNpJBB0uEtTDWzUgYIM5AcHEMb7TtY9bDXX41D6DVJpUUndGUegv1bhg4zNIe1aRJZRbiKA265Zg3MWkLHuYVRqVnWpvMuMLsFtHBdH2Q7NbmYqaCC4JSyW+5qnvue747qcxXuuntIa6aQIUkGTDOd7GIFNIMhDcZhOwWB+VDiAParMcgKAMHZ2UAbnkn6QO73VyDuQw0TZQIbeKUTWHDCA+DXJskt4WwVxhaC9zSKNfaB9viHKjwuI4YUu+mEXQ3NGqYmnII6ndzT/n1HIQbwXK12QHMa8EBSENsECJCFxQSJsym+aSwVfc33dE6MA4Gbw1jupmJwLGJBFIQymnAHPRRsUmTPQ8NXrOeiMNONMtLEnliLakvJtYgC9JguKwuBpW5t1AbbJkYDG9ujM1qe9rCLMa6WV5jAIMcgptoJNlslFpnBO+afelBOAhTiX+RAzOlXx7pAzs8mDKj3hZc5bqxOTCRZIMFCzRgA4FMrrW51LY2pukIjLq1vQouynwGmNGF6U1XcNVbi9vNN+xVc2F38Q1UuiYczRAQxtq06xCIW54NkbiMsybfqnEDslnlbn4xQJJXBwDxMIuUYpbFLZhvcnfPoP4Rc/+LY0y+zPL83ieNiEGS7xYFDgMHRBxD+DgwxlhYZ1MaFIIp0Flvj+sPCZbLclHJ9MJdlux+kE9T8reIroXZ3TosRdMUNO+DZvGumuhkgGk2Te7OLDHDjZDFERhbTRWkimvECgou2DCwXG+vDon75gxJPIO5Nfjs8T4PXnYxihqr5vCB0YIaGC0u6M6g7lunea5JXzfHgJ0m/m5KvkVtrfgDezSruSqCQtOMR7rjlsuyhxySEgts1uBjlgxD00WeN142s7DMBoLtRzs0TrJ4XzhrcpFcnkFzR11jZrw+3V+imoXDQFMv7JEmpTmII30D+rotzmQRgoOC8fpz38pkg1YwrbiccEqXSBRiAGLztprbErfc3Fd37xLmx9VtVXpL5tkUaljYQFzvcwJMBky1jqlV46RLBNv7nAmS1WVe6w2k9RpsEXqrSVzTTILTxKfr7ksXRF5XHv53/0htDMHt+Jp+oRWE03weV7Cb4HG6tawMnqALtDBQPDCTk7kl6d0W5n63vWEotW+QRcW1j/gtausWAVpE8o1FVhhxwRj7wJWtQ9CCCaEBQaEZCE94CY7xllmYTfNprjk/MMBPN7keL+EZnPZ8vY2uF1B1frl0g8HCUZJOeuXG2AzMNh6TI5niGt/1hAawgNh1SNi5HidCkxhrmo6ZTR8pCmFjuoUDzJaeBM7iHmGgDD2Y5pmc9AgDDzPhvCCp5ZGNUBHTMybbOIIUe5/kyTXRErkxbjHYoLXuk+K1z8Ew3q7MwfxKvggfVPAm2Qwpf/QgbAJhsNgtG/U+tc/uQJ7CbB0Ocdyj5jyH7kxqhNz0CeZ1TflugkeoDtb7mEcyWmvbCBZzJd5uRWKJjbjG10362mNjeG8kleYSBswjYObvHZLflVOeJ9dWDNfdyTXwhWlBtLosXBQE3vWGBl1303xdyRJn111f6bKq/lriz/3VP2LRHDasmksYGoc0iOOKIwZNNj7ERNyPPsGg8WJuYZHw9niQno1yXXduf5d1CbAIHkMeyUBMQVu3KPD9GWQThrk+bA4bgBnsAAw3QIPtPnH99awU9y3bwmU2olX4tK7LwrSFZnczTjesEiaBZKtZLG4ZS2GwDg5hsl8G87VHuDgA92yUJwLnVzOqjWBdswEkietXA93JwlAYbLLVjGoeewODCQrN3f/6J+nGX4ejFZHtH2HlnmpwMRdU393GdyWQzdk9MOp+95M0V9bErfGagyz0a/UHA8cmgBE2oDudpDNqkGGswSAQZotau4ZOjUv85n5E+KS+ETSG8q66Zw9eF8MJBMku7NBc9KBJ4qB70pyxNmNAONCTTbrrMYLipqu4yY/kkR5+djEdjDUOEbuwMTdxKNZAbAM0GSmYbmkQpNFSwkHzmoWl+vonMF35NF6TLbO6MoqZ1azmwrpT7DpAd08hm0XTCRN06ZmM4rI6KE9EqoCAFFBjg+tOolaXwM9G3FXLprQFaSSrtbmY0XJRmOy7HrGEWGAzFZjG39wYyf209AdBaUZT8D3MDCzfUh/CBykwhzC3MNvcaL44ybLzowmFBREofJe7QmiaQyvqysFsxGqtsI7dL/FoXktxWtrTg284BBjT00tpTq9htPmxYd6t5sJ1cVLTLc2t0XyudHdKWXZmL+/6Um0wO20J4hUmbuGzBm3eYQAZSNLTIKdV7aDuluq0lvUWHjddQxuai2KQGUwwc70VsEcyK1zdg8j7ucu0ssBWDmlh95m3YMH7rWtrxqM7yXijnKjuD3mNsLtTCcE17n4jbH5594lr3OBMvusffd5kqHY3WNKEaq7+EZQ3VwNcV/2eRtrdtj0k2YdmtrC6BQm1kd1WR6AIdzXddXeqtQKz2/YeT4QmiLZb7tkKwR7uhbgmd7c+2+rb6pW61jQNzIjYtV/viWZwO+8Bks0YgJ5ukWgQ2LioVfmy2MaMmOzMLayud8nV37sIXGZ1JRS9u8wsZf80qDNqKl3R47BhuMlQ41u31aCPR9IDJsEGA9r1DwZw/YM8QV/3HN6KxNpAGA3m3KfZ3qe1IupbNEjYSP4tTOct2XLRZe+u2bPJpc89oomwPUVq19UVyjPIdXW7WMXgkawmyu5mn7veAlpICmliEDFPUEpYMLe5oB4cU01qnZb+wHJzZxhP2ApTnreg1Q2tTXxqnxmogQfDTrCg9ffslrfOYTjikHyDN/GzIbPeCrtwS2HACu3j7eivktujWu+GT9pWTSIcpHCTJck3EUiaW3jd9Y2uPGq/O8HYnU+Dwgob5vRkvGpiS38oQ2sSngt+dNMPPZWnfrUOmktqxP1rKhrXrj7EOTDefd5QgsRWEIIK7fPOYD5JLDEtdvUMR3VRpP8e1tadVy1Y6IbUrrk33WM8n55ojX7NBTbIbK7uwTkGh9G7W3/ZDMTCWZJXYnQPn+tKIozu8eWI3+O39Sdo9TzXVvqmW7fLHILDoWhujmtMQLpYJkuMFl35NAawZHx733haXgo5Gpd16zUkEFq8W6DQNWAvM5DqoMAMj6nllDC7fj/i+oAZksUgqrSnSc2qklwww94gTg0yB8N97dN+ubQ6CD13uEsEUvZNt9TmgeUb5DYrfI8nr7cGOdD/wTQY2aylRJv0dV1N0kPSGVWasc/VBHELgy3og8GtYyLdLcKrwebKtijNEgFi3nOGC5v6w2zj5ar2PshjM5pCJ8zsVjcb1XsC0xwoAnnr3B63qxHy3Qnlu27AhPEk6x4m1pW+Fmo3aLqb5huRk1zP6/8egmzi/HiEaVxh8l2j7+YegW9rd0k22jS9Q9NcNxfG2SjMyefdnVhNP9HkVwNoraBxB+YI0ngLxXSN66gri7SNTTKhlpNajGoKXwq77XXy3XnURKMxdvGHQe7ZKl3M4opqu7mtlst2jySbYcyta7u1wdIrPWNSXMWOScc8ko1LDIzBsiEtGJCy5u4Wg3sWSr0lf6vG6GB4c3c9wWR6SpD2SRZNaTVKJb1xTKtRelKc92muDIM2e3AOhwaju6+fQLeCsshBwHiXpQdaPrCE8zCxmtOVudYtsTG8K5LdZVMGsUGYABQssklNTGKw6pO7X4P0yZpicDG9wkB6G6Tq39xvVrY2szagRXhdcqjDcbcc3F9JuL/kI7B+iAMTdQZT4WcXW0h7U+pNIZMkrrIoGKx1Ml3wv6U+InD9mayUSSVXSrzM7b74XtN8uacuC9+DYzCnhwjQTsSlLX5SA5o0iOx6SpcICLIg8plgMVvn1QTXF1N7xJEAU5CImC3MbmE3retk9Ye4vsOspqx5Y3JJGIH4DVrB1E3/YI4sLAbTfFBz98HTLFADhu6yMHqCcTRhJuTCxDVPxHgr7rhqEnsgA0zczTCkuMTyPoPasz660ib9AGZ6PhUDqK3mhtgpsEdY2LwWEFyHw1juidWCQpJM0jGLK05w2IRmwZt4JUy3lpcg8ebEYI9k98BKAaCgiE2owSaJ9ql3XzctwGzeC8lo+gFMGGDXD1rxZ3xNf0jsefbCrPUXmM5BaCH3PbwN7NKOOgRdRmaz7tZtkn5/XwWDtM9pIiyQ4FFbBkmAR1JIrZepHczWMGbV1QQTTgWqa8x7E+dgXiNuxGMQuaqMOuK73ziEa445bCR7YPxgVNzE2CM2e1IHxhgxwxzRh50tTGFWbWJ/YoMNff2VAQ8XBprSJgX9ga273vEx2PxmFYxsECXd0GXiRtgkm7B0ZbInStNisEKTaeL6BRNNcRsfe9cscw/2Z4PKfNBFWLr7tyn/HlrgGm0gERRpuujhtMGwIVxJnL/7unUuqGE/rFE3AgVDJLea1ROxuzmHMWXDXMNczxaTG/HbknYTm54HW3JvHJLuY6/wQIV6T7emgA1q7W7pe4+AQtMWVDzE6TJp0wm8r7v4Y4BNLJJMUtg6rRZM3BMf2CTpD4TiiiJ+dyKZ7N3KDRYR946XJnZrdR0CQaUxg5nWGpPsC7NsKC2tzSszoYD2W4r1WqR2NzQaDAJQU9KNeF32bN3VXfkT0Xqnv0Jw97XXhlgDaSEz5sHswixNwIwWVGib5t31FjbT8+Yq6Oz+kQuDZXaL9MC2OKS5Mszmar8eCEmNW8V9E3H3bPge2wc/G/FjUFPg7nu3rihcb6E3TWyQ6rCySl4Ti91NS3MwovvufQiHNu9ZK1LmrVPjLTUdJOssrtFGj+u4W78btz2c7JFJ97dxXYMRuSt+dIO6bnO7hcV89e5J5ArenVM18OqkWkpTTeb3i114Q9VEwmD8mIsYrW2+WxoYXLBZWKQ5IIqB5pnJ1Ym7ukTQCkm0frwHat/NOkp1mpUlud3cg5gwnXG1GERyGhfs7/rtNxfVIrPrvWBWF5dAa+OAZhQwi3AQLjDS3yu5uSiwrv27r373Kmy1CYSNJhAW7j9mY+jTuMHWZsBIDGlBA8m/KW3MQry93867RYGBxyyYDXZExBgoom7dVI8774ZRsKV9DgFIgunm03QRqKH5hBWSiD1aNFdhaSJWtgBz0Iqw3d3IT+DTI4XYDB21CA0DwQjOkuxWHHaB//5WbGtzi6F33zmcJaltj5pj5j26lfFHvFZkCgoJQJnT4zzEXYjfrdNoxUZy7bm295eK0IYwgtnuc38tYCAdrXWtWiKIoKoHrxSDdx/EwFTPIgaI8z5XsotZGNwIHbO93xOiOShgoBWEN71D2BDDWAub/S3d1nEhbg/iIQwNEvt7KOjXQ6GNoUH1K2x0p5QXds1zMJgu/tQb6uYVGN8scU9mo6oktyuJpBgMMoY9sLM/O4SR9XYQq5pa71D7JJumd82+cUI3jNZBoJkYeoXxBpE1C43rCMOTkk7W9UpO0w/F9JZ7NqUsykUsBLy/dFPJ7fWnBReIQcpE1CCqi1mteITZUvqFXdvW3KdZMF5Q3MUl93iTGFdvEQO6fwRzeKetGK3NeybcLQc9e0OEK0VMGq0/3MQihoIlnG/QdAcDtrqBszABFnrMX20GG3JzWeZCE9iAbiPjwbVQukVt7AAYYqRpHqiWrukWiBZ4mJ+l4cZFtamvMEASRdjiih700gj5HlYGxgye9DboFJRdg3+PLwchZS5VB3OtggdhYPYe/dogrpouCDRXmtI1/XpzXF/9S5xeGPM+bxU9wFRXFptVflxTA5auyHEYn1b4wfwSu/s7aI78fyVR22yO9hsh3xMbGnfQtLrGlUSubc+ex6DCTE85Aq0MtO96Utx1QAirtrmyHCL0xGiu9q2A7FGyr64eDOw2NZ0hbg+ml7Wkisozcb9+OxvSCkiST/qbAr9FcohF8mhGmd/0BubfoFNbKhAbNLbuirfIvljJpGUtXbpbCmgPhwlNPN/c3N2i8YqZBlM1Bl0i2C478hwQv3VbYAXzmogrTBrgPaWHWl/m9WwVhCWp3u1iFE3QnjmwIdXEu48es8EMSW/BgjGiD2E23sKesRivtnoK0TN4jSWi7K+jVTOupHbl7dMscXcSVRO02bqrpsBdg4nuzAKrLT2iafa3YABNaYEGzdU+YbiHCvDWyizrPwjMBkAKmgCKMNP4CrM0kSCJQ4qhNeBc37qyOr7bynpSHIOO8/x+6ZSmWxCr3klzUaS6Kf6WizYCFvfoo9UgiGGsJdY9ye7TQwC63sODwxzvNJclyO7vu0tMskuuLXM/Up991rdC0ODAFO67pnokt5LJ2NM0xq9qvw+YoxnVLNBXWJAYrJ/PG2TUGWyYT7jMUZAqTupOK+mPCzvszadLEK3Q7DY8Y6xNbujQmoXXknkTASuNG7iipPEayBYy//r/NodatkqdpDP4N9fUQutWHLIZ9abqkIhzJB+lPxCfN4NBqj1ue42jCFYX71zb3Wv+mIPAhKEFG61WIfzoo2LzNR+PuwbXiB3x+OmkXkSKmDC+3tT1+29hNxuC+dYX9NGKQ5O5JyK0ap032DVrUmg9pZje96/rz2a4RmxtVZjYNJrRZW6Mo1log37o/85JbAygzlqwYDBg6S5DMujNAt89hPWGmtKn+o0zSKpnP13JFFfInIKNVrETLJpTV5uDQrJF9Leqv8vY99BoEAW21Zjd9Z06NA2iS8/nZuuYekqPzuqK8rM13nJLKm+wIIHkSTczyIy75z2rP4xpbS7hEfFjNuIIMmkGg8wb7PoFe8FmVVPFVaCW696dXIT51lm1yNA14qMZYakwPo13ZxDvBPGrZmVG44Z7cH5/io9mCBhbRQ/mwBTJqw3pYWmVvLv1mtZgpmcb1N7cl4i8NlAQx4BbD3EtbqN5qmnMjTdJq9Cvy76twm+Q+X9NymhOJCTfOgAAAABJRU5ErkJggg==
<$list filter="[field:topic[Diary]]+[!sort[created]]">

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link> @@color:gray; <$view field="description"/>  - <$view field="caption"/> @@ - <$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/>  
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-60]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-60]]"> @@color:gray;^^有点久^^@@</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>

<$list filter="[has:field[doubt]][tag[Doubt]]+[!sort[created]]">

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; <$view field="doubt"/>  //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>

''False Consensus Effect''

It is defined as our tendency as individuals to overestimate the level at which other people share their beliefs, attitudes, and behaviors. 
False consensus effect is a type of bias in which we think that our own opinions, attitudes, beliefs, etc. are common and appropriate, so that others must also feel the same way

''Example''

If you believe a particular favorite TV show is funny, you will tend to overestimate the number of other people like you who also believe that program is funny relative to those who do not.
It is similar to we believing that everyone thinks the same which is not always the case

''Why do I need to know?''

False Consensus Effect can lead you to believe in certain ‘fake’ policies or conditions which you think everyone in your circle will agree with which will NOT be the case

''Takeaways:''

* It will NOT always be the case where everyone will think like you in certain situations. Take it as a positive way. Entertain their new perspectives.
* Don’t fall into the trap of thinking that just because they agreed on some mutual topic of interest, they’ll love something else as well because you do.

''References & Studies:''

* http://psychology.iresearchnet.com/social-psychology/social-cognition/false-consensus-effect/https://thedecisionlab.com/biases/halo-effect/
* https://www.verywellmind.com/what-is-the-false-consensus-effect-2795030


\define searchInField(field, for, ignore)

<$list filter="[!is[shadow]!is[system]regexp:$field$[$for$$ignore$]]">

<$link><$view field="title"/></$link>

</$list>

\end


<$edit-text tiddler="$:/temp/advancedsearch" type="search" tag="input"/> <$select field="fieldname" tiddler="$:/temp/advancedsearch">
<option value="Any">Any</option>
<$list filter="[!is[shadow]!is[system]fields[]sort[]]" variable="fieldname">
<option value=<<fieldname>>><<fieldname>></option>
</$list>
</$select> <$checkbox field="ignore" tiddler="$:/temp/advancedsearch" checked="(?i)"> ignore case</$checkbox>

<$reveal state="$:/temp/advancedsearch" type="nomatch" text="">
<$reveal state="$:/temp/advancedsearch!!fieldname" type="match" text="Any">
<$list filter="[!is[shadow]!is[system]fields[]]" variable="fieldname">


Searching in field: <<fieldname>>

<$macrocall $name="searchInField" field=<<fieldname>> for={{$:/temp/advancedsearch}} ignore={{$:/temp/advancedsearch!!ignore}}/>

</$list>
</$reveal>
<$reveal state="$:/temp/advancedsearch!!fieldname" type="nomatch" text="Any">

Searching in field: {{$:/temp/advancedsearch!!fieldname}}

<$macrocall $name="searchInField" field={{$:/temp/advancedsearch!!fieldname}} for={{$:/temp/advancedsearch}} ignore={{$:/temp/advancedsearch!!ignore}}/>

</$reveal>

</$reveal>
为了区别每本书的聚合和与书相关主题的聚合,利用`field`+ `变量`进行设置,这需要对`field`进行规范。 

!书籍聚合
!!常规项
主要包括field:
见:[[bookinfo]]

 <<alert primary "
`field`:book_title=书名、Author=作者、Series=系列   Genre=流派、Location=国别、douban=豆瓣书籍链接、 cover=书籍封面链接  relation=相关书籍">>

//注:cover地址://

```
http://one.rizi.me/Photos/bookcovers/+图片
```
//注:使用http以便在非https下兼容。//

!!书籍相关聚合
参见:[[bookinfo]]
主要包括field:`author`、`relation`

!内容/读书笔记聚合
!!内容/读书笔记常规项 
<<alert danger "
`field`:keywords=关键词、description=摘要、summary=综述、Doubt=存疑、relation=相关">>

!! 内容主题聚合

<<alert success "
`field`:topic=维摩诘=佛教、 topic=系统更新、 topic=大历史、topic=文言尽逮 、topic=Thought Framework=思维框架 、topic=Thinking Models=思维模式、topic=Laws of reading=关于阅读 、topic=Art and History=艺术历史、topic=Lifehack=生活艺术、topic=natural history=博物学、topic=Diary=私人日记 topic=statistics 统计学">>

!! 其它:备忘Note
 
<<alert warning "field:topic=note">>

```
<div style="background:#c8d4d7">
{{!!note}}
</div>
```
@@color:green;<i class="fa fa-tree fa-3x fa-pull-left fa-border" aria-hidden="true"></i>@@
这是一个图标宏FontAwesomeMacro 基于本地图标库$:/fonts/FontAwesome,调用http://fontawesome.io/icons/ 图标。用例:http://fontawesome.io/examples/ 

图标库和图标名字查询:http://fortawesome.github.io/Font-Awesome/icons/ 

https://fontawesome.com/v4.7.0/icons/

更多用法:https://fontawesome.com/how-to-use/svg-with-js

基本用法:

* html -  `<i class="fa fa-apple"></i>` for <i class="fa fa-apple"></i>
* macro - `<<fa fa-apple>>` for <<fa fa-apple>>

```
<<fa fa-tree>>
```
<<fa fa-tree>>   


```
<i class="fa fa-weixin"></i>
```
<i class="fa fa-weixin"></i>

```
 <<fa "fa-spinner fa-spin fa-2x">>
```

 <<fa "fa-spinner fa-spin fa-2x">>

```
5x size 
<<fa5x fa-apple>>
```
<<fa5x fa-apple>>

修改宽度:

*Html - `<i class="fa fa-at fa-fw"></i>` for <i class="fa fa-at fa-fw"></i>
*Macro - `<<fafw fa-at>>` for <<fafw fa-at>>
\define fa(iconName)
<i class="fa $iconName$"></i>
\end

\define falg(iconName)
<i class="fa $iconName$ fa-lg"></i>
\end

\define fa2x(iconName)
<i class="fa $iconName$ fa-2x"></i>
\end

\define fa3x(iconName)
<i class="fa $iconName$ fa-3x"></i>
\end

\define fa4x(iconName)
<i class="fa $iconName$ fa-4x"></i>
\end

\define fa5x(iconName)
<i class="fa $iconName$ fa-5x"></i>
\end

\define fafw(iconName)
<i class="fa $iconName$ fa-fw"></i>
\end
\define textSlider(label text)

<$reveal type="nomatch" state="$:/state/$label$" text="show">

<$button set="$:/state/$label$" setTo="show">$label$</$button> 

</$reveal>
<$reveal type="match" state="$:/state/$label$" text="show">

<$button set="$:/state/$label$" setTo="hide">$label$</$button>

$text$

</$reveal>

\end

\define textSliderNoButton(label text)

<$reveal type="nomatch" state="$:/state/$label$" text="show">

<$button set="$:/state/$label$" setTo="show" class="tc-btn-invisible">{{$:/core/images/right-arrow}}$label$</$button> 

</$reveal>
<$reveal type="match" state="$:/state/$label$" text="show">

<$button set="$:/state/$label$" setTo="hide" class="tc-btn-invisible">{{$:/core/images/down-arrow}}$label$</$button>

$text$

</$reveal>

\end

\define tiddlerSlider(tiddlerName)

<$tiddler tiddler="$tiddlerName$">

<$reveal type="nomatch" state="$:/state/$tiddlerName$" text="show">

<$button set="$:/state/$tiddlerName$" setTo="show">Show <<currentTiddler>></$button> 

</$reveal>
<$reveal type="match" state="$:/state/$tiddlerName$" text="show">

<$button set="$:/state/$tiddlerName$" setTo="hide">Hide <<currentTiddler>></$button>

<$transclude/>

</$reveal>

</$tiddler>

\end

\define tiddlerSliderNoButton(tiddlerName)

<$tiddler tiddler="$tiddlerName$">

<$reveal type="nomatch" state="$:/state/$tiddlerName$" text="show">

<$button set="$:/state/$tiddlerName$" setTo="show" class="tc-btn-invisible">{{$:/core/images/right-arrow}}<<currentTiddler>></$button> 

</$reveal>
<$reveal type="match" state="$:/state/$tiddlerName$" text="show">

<$button set="$:/state/$tiddlerName$" setTo="hide" class="tc-btn-invisible">{{$:/core/images/down-arrow}}<<currentTiddler>></$button>

<$transclude/>

</$reveal>

</$tiddler>

\end

\define imageSlider(tiddlerName caption)

<$reveal type="nomatch" state="$:/state/$tiddlerName$" text="show">

<$button set="$:/state/$tiddlerName$" setTo="show" class="tc-btn-invisible tc-tiddler-link"><<fa fa-plus>> $caption$</$button> 

</$reveal>
<$reveal type="match" state="$:/state/$tiddlerName$" text="show">

<$button set="$:/state/$tiddlerName$" setTo="hide" class="tc-btn-invisible"><<fa fa-minus>> $caption$</$button>

[img [$tiddlerName$]]

</$reveal>

\end

\define listSlider(filter closedCaption openCaption)

<$reveal type="nomatch" state="""$:/state/$filter$""" text="show">

<$button set="""$:/state/$filter$""" setTo="show" class="tc-btn-invisible tc-tiddler-link"><<fa fa-plus>> $closedCaption$</$button> 

</$reveal>
<$reveal type="match" state="""$:/state/$filter$""" text="show">

<$button set="""$:/state/$filter$""" setTo="hide" class="tc-btn-invisible"><<fa fa-minus>> $openCaption$</$button>

<$list filter='$filter$'>

</$list>

</$reveal>

\end

\define exampleSlider(text closedCaption openCaption name)

<$reveal type="nomatch" state="""$:/state/$name$""" text="show">

<$button set="""$:/state/$name$""" setTo="show" class="tc-btn-invisible tc-tiddler-link"><<fa fa-plus>> $closedCaption$</$button> 

</$reveal>
<$reveal type="match" state="""$:/state/$name$""" text="show">

<$button set="""$:/state/$name$""" setTo="hide" class="tc-btn-invisible"><<fa fa-minus>> $openCaption$</$button>

$text$

</$reveal>

\end
Google File Stream 默认緩存位置在C盘,而之所以要使用Google File Stream是因为你手里有一张Google Drive王牌 ---
 至少5T的网盘。如果你不修改其缓存位置,之后C盘会被撑爆。所以,必须修改其缓存位置,具体办法如下:

1. 先把默认的缓存位置全部移动到新位置。
默认位置一般在这里:

```
c:\Users\用户\AppData\Local\Google\DriveFS

```

新位置看自便,我的新位置:

```
f:\DriveFS
```
2. 退出Google File Stream;

3. 以管理员身份打开CMD输入以下命令;


```
mklink /d c:\Users\用户\AppData\Local\Google\DriveFS f:\DriveFS
```

4. 重新Google File Stream,搞定!
<<textSliderNoButton "书和读书" "
# [[三家村公开版权精品书籍]] 
# [[Kindle 商店免费电子书|http://t.cn/RINodvt]]
##  [[Lorefree|https://ebook2.lorefree.com/]]
##[[Electronic library. Download books free. Finding books|https://b-ok.cc/]]


# [[世界数字图书馆|https://www.wdl.org/zh/]]
##  [[早稻田大学图书馆古籍数据库|http://www.wul.waseda.ac.jp/kotenseki/index.html]]
##  [[哈佛燕京图书馆|http://guides.library.harvard.edu/Chinese?utm_source=Library+Staff&utm_campaign=9fca5a7bb3-EMAIL_CAMPAIGN_2017_06_28&utm_medium=email&utm_term=0_4bb25c0228-9fca5a7bb3-26352423#s-lg-box-6321879]]
## [[Europeana Collections|https://www.europeana.eu/portal/en]]
##[[Digital Silk Road - Digital Archives of Cultural Heritage|http://dsr.nii.ac.jp/]]
##  [[书格|https://shuge.org]] ^^[[1|https://drive.google.com/drive/u/0/folders/0B59W0kcOXxj6fjlEY3R6Qi1USjF3ekhRbENqc0tVTEM0dUcwakdfQ3plZG9INVFXWlllbHM]]^^

 # [[一些古籍PDF|https://drive.google.com/drive/u/0/folders/0B59W0kcOXxj6UUdYUzRYOHE0R1E]]
##  [[古代艳本|https://drive.google.com/drive/u/0/folders/0B59W0kcOXxj6fm52Zk9SdlFodVZxLVBLMjVQN3pBcjU3TEhOQmNmWFcwZkpOUE5yam5iUzA]]
##  [[中國哲學書電子化計劃|http://ctext.org/zh]]
##  [[世界历史|https://drive.google.com/drive/u/0/folders/0B1Ekqvcavks8fldZeURHVUk1NWpxaHBLeENMajlBT2xWb0xZVjlDQnlJYmx5VUMtaXpDYkE]]
## [[中国历史|https://drive.google.com/drive/u/0/folders/0B1Ekqvcavks8fmdVLVJvTzU2WGg5MVg5dlh5dUtrei13YTZIUWFuaFRlcDFvQlk0LVZwS2c]]
##  [[二十四史|https://drive.google.com/drive/u/0/folders/0B1Ekqvcavks8fm1iQnM0N0NQRkVCWTJHZVJfTjF4ZE12YU55VjMxTUUzcVJSU1JVY1pvVjQ]]
##  [[史记在线版|http://www.ziyexing.com/files-5/shiji/shiji_index.htm]]
##  [[诸子百家|http://www.ziyexing.com/files-5/zzbj_index.htm]]
##  [[中国连环画数字图书馆|http://223.100.155.234:8013/index.php?r=lhh/index]]
## [[南京图书馆藏清人文集全文影像数据库|http://www2.jslib.org.cn/was5/web/qrwj.htm]]
##[[碑帖菁华 - 中国国家数字图书馆|http://mylib.nlc.cn/web/guest/beitiejinghua]]
##[[中华古籍资源库 - 中国国家数字图书馆|http://mylib.nlc.cn/web/guest/shanbenjiaojuan]]

# [[自由之思想书库|https://github.com/programthink/books]]


#辅助阅读
## [[电子书管理 Calibre使用说明|https://cmmei.gitbooks.io/using-windows/content/Calibre.html]]
## [[世界历史时间轴|http://intuitionanalytics.com/other/histomap]]
## [[汉典|http://www.zdic.net/]]
##  [[异体字查询|http://www.fantizi5.com/yitizi/]]
##  [[中国历史地图集|http://www.ccamc.co/chinese_historical_map/index.php]]
## [[鸠摩搜书|https://www.jiumodiary.com/]]
## [[Clippings.io|https://my.clippings.io]]
##  [[电子书在线转化|http://cn.epubee.com/]]
## [[iData-知识检索|https://www.cn-ki.net/]]
## [[古典文献资源|https://www.waysto.work/wenxian/]]

# [[Rizi Box]] @@color:green;^^'' 自用网盘''^^@@

@@color:gray;本站提及的书目如有需要请[[联系|Coze]].@@
">>


<<textSliderNoButton "工具" "
# [[Syncthing|https://syncthing.net/]]
# [[爱资料在线工具|https://www.toolnb.com/]]
#[[文件转换器 — Convertio|https://convertio.co/zh/]]
# [[Ping, mtr, dig and TCP port check from multiple locations|http://ping.pe/]]
# [[NextDns|https://www.nextdns.io]]
# [[MikuTools - 一个轻量的工具集合|https://tools.imiku.me/]]
# [[免费SS账号|https://free-ss.site/]](镜像https://v2s.top)
# [[免费SS账号|https://5414.best/]]  [[镜像|https://github.com/ugvf2009/Miles/blob/master/README.md]]
# [[PDF转换工具|https://www.pdfpai.com/]]
">>

<<textSliderNoButton "影音" "
# [[古典音乐下载|https://www.notion.so/Telegram-5c482c6695eb49a0a33bf073bde39bdd]] ^^Telegram 频道^^
# [[低端影视|http://ddrk.me/category/movie/]]
# [[Kickass无损音乐|https://katcr.to]]
# [[古典音乐资源目录|https://www.notion.so/5c482c6695eb49a0a33bf073bde39bdd]]
">>

<<textSliderNoButton "论文" "
# [[Sci-Hub|https://scihub.wikicn.top/]]
# [[OSF Preprints|https://osf.io/preprints/]]
">>

<<textSliderNoButton "资料" "
# [[telegram频道搜索|http://www.sssoou.com/]]
# [[全历史|https://www.allhistory.com/]]
#[[历史学数据库及网站汇总|https://www.notion.so/f8503d564f0e42709e349d4ca9fbaf54]]
# [[交互式可视化哲学史在线时间表|https://www.denizcemonduygu.com/philo/browse/]]
# [[历史学数据库及网站汇总|https://psyarxiv.com/]]
">>

<<textSliderNoButton "设计" "
# [[Remove Background from Image – remove.bg|https://www.remove.bg/zh]]
# [[Color 配色|https://color.adobe.com/zh/explore]]
#[[中国传统颜色手册 Chinese Color Cheatsheet|https://works.yangerxiao.com/chinese-colors/]]
# [[Color Hunt - Color Palettes for Designers and Artists|https://colorhunt.co/]]
# [[Traditional Chinese Colors 中国传统颜色|http://boxingp.github.io/traditional-chinese-colors/]]
# [[在线PS|https://www.uupoop.com/]] Or [[photopea|https://www.photopea.com/]]
# [[Seeseed-无穷尽设计可能|https://www.seeseed.com/]]
#[[在线拼图|https://ok.daoing.com/he/dezoomify.html]]
">>

<<textSliderNoButton "图片" "
#[[Google 艺术与文化|https://artsandculture.google.com/?hl=zh-CN]]
#[[500px|https://web.500px.com/]]
#[[Flickr|https://www.flickr.com/]]
#[[Historical Photographs of China|https://www.hpcbristol.net/]]
">>

<<textSliderNoButton "植物学" "
#[[Plantae|https://plantae.org/]]
# [[PPBC中国植物图像库|http://ppbc.iplant.cn/]]
# [[《植物王国》2012年英国纪录片电影在线观看|https://www.dandanzan.com/dianying/44218.html]]
">>

<<textSliderNoButton "生物医学" "
# [[PubMed biomedical literature|https://pubmed.ncbi.nlm.nih.gov/]]
">>

<<textSliderNoButton "社区及论坛" "
# [[Λ-Reading]]
">>
!! What is it?
You believe that something will happen and after an event occurs, that thing happen. The first thing you tell yourself, “I knew it all along!”. That’s what Hindsigh bias is.

!! Example:
The fourth-quarter comeback to win the game. The tumor that appeared on a second scan. The guy in accounting who was secretly embezzling company funds. 

The situation may be different each time, but we hear ourselves say it over and over again: “I knew it all along.” 

!! Where does it occur?

This bias is something that every one of us experiences. There have been moments and scenarios in our lives which felt predictable to you and you guessed them right.
However, it is not a good practise. It can lead to overconfidence.

!! Why do I need to know?

The issue is that many times we actually didn’t know it all along, we only feel as though we did. 

The phenomenon, which researchers refer to as “hindsight bias,” is one of the most widely studied decision traps and has been documented in various domains, including medical diagnoses, accounting and auditing decisions, athletic competition, and political strategy. 

!! Takeaways:

* Take in account those things that might have happened but didn't.
* Don’t just bet on things just because you feel like it. It can a be dangerous.

!! References & Studies:

* https://www.verywellmind.com/what-is-a-hindsight-bias-2795236
* https://study.com/academy/lesson/hindsight-bias-in-psychology-definition-examples.html



!!! ''历史学相关书目:''

<$details summary="相关书目">
<ul>
<$list filter="[field:genre[历史研究]] +[!sort[created]]">
<li>
《<$link><$view tiddler=<<CurrentBook>> field='title'/></$link>》^^<$view field="author"/>^^ 
</li>
  </$list>
</ul>
</$details>


!!! ''相关阅读笔记:''
<<list-links "[tag[History]]">>
iVBORw0KGgoAAAANSUhEUgAAASwAAAEtCAAAAACXSgIMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAA+dpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMC1jMDYwIDYxLjEzNDc3NywgMjAxMC8wMi8xMi0xNzozMjowMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ1M1IE1hY2ludG9zaCIgeG1wOkNyZWF0ZURhdGU9IjIwMTItMDEtMDJUMjE6NDk6NDMrMDE6MDAiIHhtcDpNb2RpZnlEYXRlPSIyMDEyLTAxLTAyVDIwOjUxOjAyKzAxOjAwIiB4bXA6TWV0YWRhdGFEYXRlPSIyMDEyLTAxLTAyVDIwOjUxOjAyKzAxOjAwIiBkYzpmb3JtYXQ9ImltYWdlL3BuZyIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo4NUQzOTI4RTJEQTUxMUUxQTUxOUMxMjQxREQ3QTA3QSIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDo4NUQzOTI4RjJEQTUxMUUxQTUxOUMxMjQxREQ3QTA3QSI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjpp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
<div class="card" style="width: 80%;">
  <div class="card-body">
    <div class="h4 card-title">Jerry</div>
    <div class="h6 card-subtitle text-muted"></div>
    <p class="card-text">无名小卒。嗜读书,耽溺认知哲学、植物学、科普和古代笔记,热衷新技术和黑科技,常混迹于啁啾和电报。<$button message="tm-save-wiki" param={{$:/config/SaveWikiButton/Template}} tooltip={{$:/language/Buttons/SaveWiki/Hint}} aria-label={{$:/language/Buttons/SaveWiki/Caption}} class=<<tv-config-toolbar-class>>>
<span class="tc-dirty-indicator">
<$list filter="[<tv-config-toolbar-icons>prefix[yes]]">
{{$:/core/images/save-button}}
</$list>
<$list filter="[<tv-config-toolbar-text>prefix[yes]]">
<span class="tc-btn-text"><$text text={{$:/language/Buttons/SaveWiki/Caption}}/></span>
</$list>
</span>
</$button></p>
    <a href="mailto:my@boxs.eu.org" target="_blank" class="card-link btn-primary btn"><<fa fa-envelope>> Email</a>
    <a href="https://t.me/s/cozer" target="_blank" class="card-link btn btn-warning"> <<fa fa-telegram>> Telegram</a>
<a href="https://twitter.com/Coze" target="_blank" 
 class="card-link btn btn-info"> <<fa fa-twitter >> Twitter</a>
<a href="#Your Message" class="card-link btn btn-success"> <<fa fa-commenting >> 留言</a>
  </div>
</div>


<iframe allowtransparency="true" frameborder="0" scrolling="no" src="http://platform.twitter.com/widgets/follow_button.html?screen_name=coze"  style="width:300px; height:20px;"></iframe>
<$list filter="[tag[Journal]]+[!sort[created]limit[15]]"> 


<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray; <$view field="description"/> -《<$view field="book_title"/>》 //<$view field="created" format="date" template="YYYY年0MM月0DD日"/>//@@
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-20]!days[-11]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-21]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>
! EXPERT KNOWLEDGE
Research on expertise in areas such as chess, history, science, and mathematics demonstrate that experts’ abilities to think and solve problems depend strongly on a rich body of knowledge about subject matter (e.g., Chase and Simon, 1973; Chi et al., 1981; deGroot, 1965). However, the research also shows clearly that “usable knowledge” is not the same as a mere list of disconnected facts. Experts’ knowledge is connected and organized around important concepts (e.g., Newton’s second law of motion); it is “conditionalized” to specify the contexts in which it is applicable; it supports understanding and transfer (to other contexts) rather than only the ability to remember. (9)
!!! ''读书笔记五要素:''

#清晰地表现每一章的逻辑脉络;
#带走书中所有的亮点和核心思想,并用自己的话以最简单的语言进行概况一下;
#写下自己的看法和心得;
#发现这本书和以前读过的其他书或文章的联系;
#问题和疑问进一步的实证和挖掘。

''更新版'':[[读书笔记写作规范设计]]

!!! ''写作五要素:''

1.简练 ; 2.精准;3.优雅;4.兼具韵律与节奏; 5.同时营造氛围。

<<imageSlider [[http://i66.tinypic.com/noys77.jpg]] "读书流程图">>

!!! ''关于"书之书"书目:''

<$details summary="相关书目">
<ul>
<$list filter="[field:series[书之书]] +[!sort[created]]">
<li>
《<$link><$view tiddler=<<CurrentBook>> field='title'/></$link>》^^<$view field="author"/>^^ 
</li>
  </$list>
</ul>
</$details>


!!! ''相关阅读笔记:''

<$list filter="[field:topic[Laws of reading]!sort[created]]">

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link> @@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> @@ - <$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/>  
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-60]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-60]]"> @@color:gray;^^有点久^^@@</$list>


<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>

<<tabs tabsList:  "[[2020读书目录]] [[2019读书目录]] [[2018读书目录]] [[2017读书目录]] [[2016读书目录]] [[Book List]]  [[Add Books]] [[Manage Books]] [[Library Tracker Settings]] [[三家村公开版权精品书籍]] [[想读]] [[正读]] [[已读]]
 "default:Book List" "class:"tc-vertical">>


<$button message="tm-close-tiddler">Close Me!</$button>
\define thisRemoveAuthor()
Select Author: <$select tiddler='Library Tracker Settings' field='edit_author_list'><$list filter='[[$:/data/BookAuthors]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/BookAuthors##$(AuthorToRemove)$'>Remove Author</$button>
\end

\define thisRemoveSeries()
Select Series: <$select tiddler='Library Tracker Settings' field='edit_series_list'><$list filter='[[$:/data/SeriesTitles]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/SeriesTitles##$(SeriesToRemove)$'>Remove Series</$button>
\end

\define thisRemoveGenre()
Select Genre: <$select tiddler='Library Tracker Settings' field='edit_genre_list'><$list filter='[[$:/data/BookGenres]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/BookGenres##$(GenreToRemove)$'>Remove Genre</$button>
\end

\define thisRemoveLocation()
Select Location: <$select tiddler='Library Tracker Settings' field='edit_location_list'><$list filter='[[$:/data/BookLocations]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/BookLocations##$(LocationToRemove)$'>Remove Location</$button>
\end

\define thisRemoveTag()
Select Tag: <$select tiddler='Library Tracker Settings' field='edit_tag_list'><$list filter='[[$:/data/BookTags]indexes[]]'><option><<currentTiddler>></option></$list></$select> <$button set='$:/data/BookTags##$(TagToRemove)$'>Remove Tag</$button>
\end

<$checkbox tiddler='Library Tracker Settings' field='show_author' checked=true unchecked=false>Show Author</$checkbox><br>
<$checkbox tiddler='Library Tracker Settings' field='show_series' checked=true unchecked=false>Show Series</$checkbox><br>
<$checkbox tiddler='Library Tracker Settings' field='show_genre' checked=true unchecked=false>Show Genre</$checkbox><br>
<$checkbox tiddler='Library Tracker Settings' field='show_location' checked=true unchecked=false>Show Location</$checkbox><br>
<$checkbox tiddler='Library Tracker Settings' field='show_tags' checked=true unchecked=false>Show Tags</$checkbox><br>

!!Edit Author List
<$set name=AuthorToRemove value={{Library Tracker Settings!!edit_author_list}}>
<<thisRemoveAuthor>>
</$set>

!!Edit Series List
<$set name=SeriesToRemove value={{Library Tracker Settings!!edit_series_list}}>
<<thisRemoveSeries>>
</$set>

!!Edit Genre List
<$set name=GenreToRemove value={{Library Tracker Settings!!edit_genre_list}}>
<<thisRemoveGenre>>
</$set>

!!Edit Location List
<$set name=LocationToRemove value={{Library Tracker Settings!!edit_location_list}}>
<<thisRemoveLocation>>
</$set>

!!Edit Tag List
<$set name=TagToRemove value={{Library Tracker Settings!!edit_tag_list}}>
<<thisRemoveTag>>
</$set>
<<list-links "[tag[Life]]">>



The listSlider macro is contained in [[GeneralMacros]].

|!Input |!Description |
|filter |The filter that defines the list to display |
|closedCaption |The text to display when the list is hidden |
|openCaption |The text to display when the list is visible |

The listSlider macro is used like this:

```
<<listSlider filter closedCaption openCaption>>
```

The macro will display the `closedCaption`, when it is clicked on it will display the `openCaption` and display the output of the input `filter`.

The macro is defined like this:


```
\define listSlider(filter closedCaption openCaption)

<$reveal type="nomatch" state="""$:/state/$filter$""" text="show">

<$button set="""$:/state/$filter$""" setTo="show" class="tc-btn-invisible tc-tiddler-link"><<fa fa-plus>> $closedCaption$</$button> 

</$reveal>
<$reveal type="match" state="""$:/state/$filter$""" text="show">

<$button set="""$:/state/$filter$""" setTo="hide" class="tc-btn-invisible"><<fa fa-minus>> $openCaption$</$button>

<$list filter='$filter$'>

</$list>

</$reveal>

\end
```

<<bottomOfTiddler>>
\define thisSeriesSelect()
<$select tiddler={{!!book_title}} field='series' default='None'>
<$list filter='[[$:/data/SeriesTitles]indexes[]sort[title]regexp:[(?i)$(thisSeriesSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisGenreSelect()
<$select tiddler={{!!book_title}} field='genre' default='None'>
<$list filter='[[$:/data/BookGenres]indexes[]sort[title]regexp:[(?i)$(thisGenreSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisAuthorSelect()
<$select tiddler={{!!book_title}} field='author'>
<$list filter='[[$:/data/BookAuthors]indexes[]sort[title]regexp:[(?i)$(thisAuthorSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisLocationSelect()
<$select tiddler={{!!book_title}} field='location' default='None'>
<$list filter='[[$:/data/BookLocations]indexes[]sort[title]regexp:[(?i)$(thisLocationSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisTagSelect()
<$select tiddler='$:/state/booktag' field='selected_tag'>
<$list filter='[[$:/data/BookTags]indexes[]sort[title]regexp:[(?i)$(thisTagSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisBookSelect()
<$select field='book_title'>
<$list filter='[tag[Book]sort[title]regexp:[(?i)$(thisBookSearch)$]]'>
<option value=<<currentTiddler>>><$view field='title'/></option>
</$list>
</$select>
\end

\define thisRemoveBookButton()
<$button popup='$:/state/test'>Remove Book</$button>

<$reveal type="popup" state="$:/state/test">
<div class="tc-drop-down">

{{DeleteBookConfirmation}}

</div>
</$reveal>
\end

Book: 
<$set name=thisBookSearch value={{$:/state/newbook!!narrow_book_select}}>
<<thisBookSelect>></$set> <$edit-text tiddler='$:/state/newbook' field='narrow_book_select' placeholder='Narrow Book List'/> (<<thisRemoveBookButton>>)
<br>

<!--Author-->
<$reveal type=match text=true state='Library Tracker Settings!!show_author'>
Author: <$reveal state='$:/state/Library Tracker/add author' type=nomatch text='new'>
<$set name=thisAuthorSearch value={{$:/state/newbook!!narrow_author_select}}>
<<thisAuthorSelect>></$set> <$edit-text tiddler='$:/state/newbook' field='narrow_author_select' placeholder='Narrow Author List'/> (<$button set='$:/state/Library Tracker/add author' setTo='new'>New Author</$button>)
</$reveal>
<$reveal state='$:/state/Library Tracker/add author' type=match text='new'>
<$edit-text tiddler='$:/state/newbook' field='book_author' placeholder='Author'/><$button><$action-setfield $tiddler='$:/data/BookAuthors' $index={{$:/state/newbook!!book_author}} $value=1/><$action-setfield $tiddler='$:/state/newbook' $field='book_author' $value=''/>Add</$button><$button set='$:/state/Library Tracker/add author' setTo='notnew'>Done</$button>
</$reveal><br>
</$reveal>
<!--End Author-->
<!--Series-->
<$reveal type=match text=true state='Library Tracker Settings!!show_series'>
Series: <$reveal state='$:/state/Library Tracker/add series' type=nomatch text='new'>
<$set name=thisSeriesSearch value={{$:/state/newbook!!narrow_series_select}}>
<<thisSeriesSelect>></$set> <$edit-text tiddler='$:/state/newbook' field='narrow_series_select' placeholder='Narrow Series List'/>  (<$button set='$:/state/Library Tracker/add series' setTo='new'>New Series</$button>)
</$reveal>
<$reveal state='$:/state/Library Tracker/add series' type=match text='new'>
<$edit-text tiddler='$:/state/newbook' field='book_series' placeholder='Series Title'/><$button><$action-setfield $tiddler='$:/data/SeriesTitles' $index={{$:/state/newbook!!book_series}} $value=1/><$action-setfield $tiddler='$:/state/newbook' $field='book_series' $value=''/>Add</$button><$button set='$:/state/Library Tracker/add series' setTo='notnew'>Done</$button>
</$reveal><br>
</$reveal>
<!--End Series-->
<!--Genre-->
<$reveal type=match text=true state='Library Tracker Settings!!show_genre'>
Genre: <$reveal state='$:/state/Library Tracker/add genre' type=nomatch text='new'>
<$set name=thisGenreSearch value={{$:/state/newbook!!narrow_genre_select}}>
<<thisGenreSelect>></$set> <$edit-text tiddler='$:/state/newbook' field='narrow_genre_select' placeholder='Narrow Genre List'/> (<$button set='$:/state/Library Tracker/add genre' setTo='new'>New Genre</$button>)
</$reveal>
<$reveal state='$:/state/Library Tracker/add genre' type=match text='new'>
<$edit-text tiddler='$:/state/newbook' field='book_genre' placeholder='Genre'/><$button><$action-setfield $tiddler='$:/data/BookGenres' $index={{$:/state/newbook!!book_genre}} $value=1/><$action-setfield $tiddler='$:/state/newbook' $field='book_genre' $value=''/>Add</$button><$button set='$:/state/Library Tracker/add genre' setTo='notnew'>Done</$button>
</$reveal><br>
</$reveal>
<!--End Genre-->
<!--Location-->
<$reveal type=match text=true state='Library Tracker Settings!!show_location'>
Location: <$reveal state='$:/state/Library Tracker/add location' type=nomatch text='new'>
<$set name=thisLocationSearch value={{$:/state/newbook!!narrow_location_select}}>
<<thisLocationSelect>></$set> <$edit-text tiddler='$:/state/newbook' field='narrow_location_select' placeholder='Narrow Location List'/> (<$button set='$:/state/Library Tracker/add location' setTo='new'>New  Location</$button>)
</$reveal>
<$reveal state='$:/state/Library Tracker/add location' type=match text='new'>
<$edit-text tiddler='$:/state/newbook' field='book_location' placeholder='Location'/><$button><$action-setfield $tiddler='$:/data/BookLocations' $index={{$:/state/newbook!!book_location}} $value=1/><$action-setfield $tiddler='$:/state/newbook' $field='book_location' $value=''/>Add</$button><$button set='$:/state/Library Tracker/add location' setTo='notnew'>Done</$button>
</$reveal>
</$reveal><br><br>
<!--End Location-->

<!--Tags-->
<$reveal type=match text=true state='Library Tracker Settings!!show_tags'>
Tags (it will always be tagged with `Book` by default):<br>
<$reveal type=match state='$:/state/newbook!!add_or_create_tag' text='create'>
New Tag: <$edit-text tiddler='$:/state/booktag' field='tag_temp' placeholder='New Tag'/>
<$button>Create Tag
<$action-setfield $tiddler='$:/data/BookTags' $index={{$:/state/booktag!!tag_temp}} $value=1/>
<$action-setfield $tiddler='$:/state/booktag' $field='tag_temp' $value=''/>
</$button>
<$button set='$:/state/newbook!!add_or_create_tag' setTo='nocreate'>Done</$button><br>
</$reveal>
<$reveal type='nomatch' state='$:/state/newbook!!add_or_create_tag' text='create'>
Tag to add: 
<$set name=thisTagSearch value={{$:/state/newbook!!narrow_tag_select}}>
<<thisTagSelect>>
</$set>
<$fieldmangler tiddler={{!!book_title}}>
<$button>
<$action-sendmessage $message='tm-add-tag' $param={{$:/state/booktag!!selected_tag}}/>Add Tag
</$button>
<$edit-text tiddler='$:/state/newbook' field='narrow_tag_select' placeholder='Narrow Tag List'/>
(<$button set='$:/state/newbook!!add_or_create_tag' setTo='create'>New Tag</$button>)
</$fieldmangler>
<br>
</$reveal>
List of current tags:<br>
<$fieldmangler tiddler={{!!book_title}}>
<$list filter='[{!!book_title}tags[]]-Book'><$view field='title'/> <$button>Remove Tag<$action-sendmessage $message='tm-remove-tag' $param=<<currentTiddler>>/></$button><br> </$list>
</$fieldmangler>
</$reveal>
<!--End Tags-->
!! ''Books''
* 穷查理宝典 [[Poor Charlie’s Almanack: The Wit and Wisdom of Charles T. Munge|http://www.mymentalmodels.info/a/amazon-poor-charlies-almanack]]r by Peter Kaufman
*查理·芒格传  [[Damn Right: Behind the Scenes with Berkshire Hathaway Billionaire Charlie Munger|https://www.amazon.com/Damn-Right-Berkshire-Hathaway-Billionaire/dp/0471446912/ref=asap_bc?ie=UTF8]] by Janet Lowe
* [[Think Twice: Harnessing the Power of Counterintuition|https://www.amazon.com/Think-Twice-Harnessing-Power-Counterintuition/dp/1422187381/ref=asap_bc?ie=UTF8]] by Michael J. Mauboussin
* [[More More Than You Know: Finding Financial Wisdom in Unconventional Places|https://www.amazon.com/More-Than-You-Know-Unconventional/dp/0231143737/ref=asap_bc?ie=UTF8]] by Michael J. Mauboussin
* 寻求智慧 [[Seeking Wisdom: From Darwin to Munger|http://www.mymentalmodels.info/a/amazon-seeking-wisdom]] by Peter Bevelin
*投资的格栅理论 [[Investing: The Last Liberal Art |http://www.mymentalmodels.info/a/amazon-investing-last-liberal-art]]by Robert Hagstrom
* 影响力 [[Influence: The Psychology of Persuasion|http://www.mymentalmodels.info/a/amazon-influence-psychology-of-persuasion]] by Robert Cialdini
*清单革命  [[The Checklist Manifesto: How to Get Things Right|http://www.mymentalmodels.info/a/amazon-checklist-manifesto]] by Atul Gawande
* 巴菲特致股东的信 [[The Essays of Warren Buffett: Lessons for Corporate America|https://www.amazon.com/Essays-Warren-Buffett-Lessons-Corporate/dp/1611637589/ref=asap_bc?ie=UTF8]] by Warren E. Buffett and Lawrence A. Cunningham
*投资大家芒格  [[Charlie Munger: The Complete Investor|https://www.amazon.com/Charlie-Munger-Complete-Investor-Publishing/dp/023117098X]] by Tren Griffin
* [[Psychology of Intelligence Analysis|https://www.cia.gov/library/center-for-the-study-of-intelligence/csi-publications/books-and-monographs/psychology-of-intelligence-analysis/PsychofIntelNew.pdf]] by Richards J. Heuer, Jr. [Free Download]
!! ''Articles''
* [[An Introduction to Mental Models|https://www.farnamstreetblog.com/mental-models/]] by Farnam Street
* [[A Dozen Things I’ve Learned from Charlie Munger about Mental Models and Worldly Wisdom |http://25iq.com/2015/08/22/a-dozen-things-ive-learned-from-charlie-munger-about-mental-models-and-worldly-wisdom/]]by Tren Griffin
* [[An Investing Principles Checklist from Charlie Munger|https://hurricanecapital.wordpress.com/2014/06/10/an-investing-principles-checklist-from-charlie-munger/]] by Hurricane Capital
* I[[n the Footsteps of Charlie Munger: Accumulating Wordly Wisdom|https://hurricanecapital.wordpress.com/2016/01/06/in-the-footsteps-of-charlie-munger-accumulating-wordly-wisdom/]] by Hurricane Capital
* [[A List of Top 100 Mental Models for Business|http://robdkelly.com/blog/mental-models/a-list-of-top-100-mental-models-for-business/]] by Rob D. Kelly
* [[Latticework of Mental Models|http://www.safalniveshak.com/category/mental-models/]] by Safal Niveshak
* [[First Principles: Elon Musk and Bill Thurston on the Power of Thinking for Yourself|http://jamesclear.com/first-principles]]
* [[Mental Models: How Intelligent People Solve Unsolvable Problems|http://jamesclear.com/feynman-mental-models]]
* [[Two Powerful Mental Models: Network Effects and Critical Mass |http://a16z.com/2016/03/07/network-effects_critical-mass/]]by Tren Griffin
* [[Wordly Wisdom in an Equation|https://dl.dropboxusercontent.com/u/28494399/Blog%20Links/Worldly%20Wisdom%20in%20an%20Equation.pdf]] by Sanjay Bakshi
!! ''Speeches ''
* [[The Psychology of Human Misjudgment|https://hurricanecapital.wordpress.com/2014/06/02/the-psychology-of-human-misjudgment-by-charlie-munger/]] by Charles T. Munger
* [[A Lesson on Elementary, Worldly Wisdom As It Relates To Investment Management & Business |http://abinoda.com/clippings/Lesson-on-Elementary-Worldly-Wisdom.pdf]]by Charles T. Munger
* [[Academic Economics: Strengths and Faults After Considering Interdisciplinary Needs |http://www.tilsonfunds.com/MungerUCSBspeech.pdf]]by Charles T. Munger
!! ''Papers''
* [[New Mauboussin Paper: What’s Going On in Your Brain?|https://hurricanecapital.wordpress.com/2015/10/27/new-mauboussin-paper-whats-going-on-in-your-brain/]] by Michael J. Mauboussin
!! ''Video''
Charlie Munger’s “The Psychology of Human Misjudgement”:
<iframe width="560" height="315" src="https://www.youtube.com/embed/7-fe01CA3vc" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>

or read it [[here|https://cogly.org/wp-content/uploads/2017/01/psychology-misjudgement-munger.pdf]]
本网站域名已通过微软全球教育机构认证和备案(可选账户后缀:rizi.me 或 libr.eu.org),具备`Microsoft Office 365 教育版`  一些实用功能,如果您需要一个教育版账号,请填写下面表格索取。

@@.note
<<fa fa-exclamation-triangle>> ''特别说明:''请勿用作开车、海量文件外部分享等非正常用途,一经发现马上封号!长久不登录使用将被收回。只供工作、学习之用!
@@

如果您想长久安全高效使用请不吝打赏: <i class="fa fa-weixin"></i> <$appear type="popup"show="微信!"  keep="no" $state="sticky">

[img[https://one.rizi.me/Photos/Other/赞赏码小.png]]

</$appear> ,谢谢!



<iframe width="780px" height= "880px" src= "https://forms.office.com/Pages/ResponsePage.aspx?id=VIwy2_GOiEa-VdcIU10AJ_jKLTF5MW1JmqVdTmBOHW1URDFHWEo1UFo0VlJFV1pBQ0FETVlDMlk0NS4u&embed=true" frameborder= "0" marginwidth= "0" marginheight= "0" style= "border: none; max-width:100%; max-height:100vh" allowfullscreen webkitallowfullscreen mozallowfullscreen msallowfullscreen> </iframe>

如果上表不显示,请打[[开此链接|https://forms.office.com/Pages/ResponsePage.aspx?id=VIwy2_GOiEa-VdcIU10AJ_jKLTF5MW1JmqVdTmBOHW1URDFHWEo1UFo0VlJFV1pBQ0FETVlDMlk0NS4u]]。
<$list filter="[tag[Journal]!sort[created]first[]]">
<$link> ''<$view field="title"/>''</$link>  @@color:gray;  <$view field="caption"/> - 《<$view field="book_title"/>》- <$view field="description"/>  - <$view field="summary"/> - <$view field="relation"/>@@
<$transclude  mode="block"/>
</$list>

@@color:gray;  <<fa fa-tags>> @@ <<tag Album>>  <<tag Library>>  <<tag Reading>>  <<tag "Thought Framework">>  <<tag Tools>>  <<tag 想读>>  <<tag 正读>>  
Musk总是要求他手下的员工利用他从物理学研究中学会的一种方法,即[[第一原理]]来进行推理。Musk 在接受采访时说过:“我认为从第一原则来推理比类比推理更重要。”他说:


<<<
“我们在生活中通常会用类比的方式来推理,比如我们在做某件事的时候,经常会认为我们之所以这样做是因为其他一些事也是这样做成的,或者其他人也在这样做。但如果从第一原则来推理的话,你必须将事情或事物抽丝剥茧,分解成最基本的事实,然后再进行推理。虽然这样做要花费更多的精力,但是结果往往更有创新意义,因为你是从头开始,而非基于你之前已有的成就。”
<<<

关于第一原理的重要性[[见此|第一原理]].

 <<tabs "[[Task]] [[Project]] [[PKM]] [[Rizi Box]]  [[Tips]] [[Helpful Tips and Sites]] 
[[System update log]]">>

<<tabs "Wechtpay Alipay Wechtpay 小程序 Paypal">>



★ ''订阅方案和费用:''


<<alert success src:"20元/月、60元/季 、202.0元/年" class:"leftbar border-success" width:40%>>

''提示:''

# 选择微信或支付宝,扫描上面二维码;
# 在特殊促销或优惠时候可以选择小程序购买订阅;
# <<bc src:"支付时务必把订阅的邮箱写在备注里。">>
#  支付后,稍后您会收到一封人工开通邮件通知。

!<<badge info "allwell@gmail.com">>




!!! ''哲学相关书目:''

<$details summary="相关书目">
<ul>
<$list filter="[field:genre[宗教哲学]!sort[created]]">
<li>
《<$link><$view tiddler=<<CurrentBook>> field='title'/></$link>》^^<$view field="author"/>^^ 
</li>
  </$list>
</ul>
</$details>


!!! ''相关阅读笔记:''
<<list-links "[tag[Philosophy]]">>
终于把Web Store功能搞定了,升级到PHP7之后,一直是残废状态。在PHP7环境下,只要把`store.php`文件中的:

```
// get options
foreach($optionArr as $o) {
	list($key, $value) = split('=', $o);
	$options[$key] = $value;
}
```
` split`替换为` explode`即可。

[[Store.php下载|https://www.asuswebstorage.com/navigate/s/8566F4B3EBF041DEA3FBF28E6F47822D4]] (密码修改为自己的)
''PKM(个人知识管理)'':

* ''流程:''收集、整理、消化和输出    
* ''系统:''信息、知识和经验   
* ''结果:''显性知识 →隐性知识

!! GTD
 <<textSliderNoButton "GTD:" "
* [[Keep|https://keep.google.com]]
* [[Google calendar|https://calendar.google.com/]]
* [[Microsoft Office|https://www.office.com]]
">>

!! 个人知识管理工具:

<<textSliderNoButton "网络收藏夹:" "
* [[Google Bookmarks|https://www.google.com/bookmarks/?hl=zh-CN]]
* [[Raindrop.io|https://raindrop.io]]
* [[Google Save|https://www.google.com/save/]]
">>


<<textSliderNoButton "密码管理工具:" "
*[[Lastpass|https://lastpass.com]]
">>

<<textSliderNoButton "阅读和收集:" "
*[[Feedly|https://feedly.com/i/latest]]
*[[Poeket|https://getpocket.com]]  
*[[InstPaper|https://www.instapaper.com]]
*[[Kindle|https://www.amazon.cn/mn/dcw/myx.html/ref=kinw_myk_redirect#/home/content/booksAll/dateDsc/]]
">>

<<textSliderNoButton "笔记:" "
*收集和整理:[[OneNote|https://www.onenote.com]]@@color:Orange;^^''1''^^@@
*私人写作 :iA Writer+Onedrive
">>

<<textSliderNoButton "整理:" "
*[[OneNote|https://onedrive.live.com]]@@color:Orange;^^''1''^^@@
*Scapple 思维导图
*[[Cmd Markdown写作工具|https://www.zybuluo.com]]
*在线思维导图
**[[Mindmaps|https://www.mindmaps.app/]]
**[[MindManager|https://vision.mindjet.com/]]
**[[Draw.io|https://www.draw.io/]]
*[[Kindle笔记在线整理|https://my.clippings.io/]]
">>

<<textSliderNoButton "输出:" "
* [[Reading Logs|http://www.rizi.me]]
* [[事了拂剑去|https://mp.weixin.qq.com/s/ZrO7S4nP7CsDCRv-ULI_TA]]
*[[三家村|https://blog.rizi.me/]] 
*[[Telegram频道|https://telega.one/s/GoReading]] 
*[[Twitter|https://twitter.com/coze]]
">>

<<textSliderNoButton "存储分享:" "
*公共资料:[[百度网盘|http://pan.baidu.com/]] 
*同步网盘:[[OneDrive|http://onedrive.live.com/]] @@color:Orange;^^''商''^^@@
*终极存储:[[Google Drive|https://drive.google.com ]]@@color:Orange;^^''1''^^@@
**[[DropBox|https://www.dropbox.com]] @@color:Orange;^^''1''^^@@
*其他:
**[[BOX|https://www.box.com]]
* [[RiziBox|Rizi Box]] @@color:Orange;^^'' 自建自用''^^@@
">>

!!智能组合:
<<textSliderNoButton "自动化" "
*基于[[IFTTT|https://www.ifttt.com]] 的Smart Life
*[[Autohotkey|https://ahkcn.github.io/docs/AutoHotkey.htm]]
*[[MicrosoftFlow|https://asia.flow.microsoft.com/zh-cn/]]
">>
.tc-drop-down dd
{
max-width:300px;
word-break: break;
white-space:normal;
padding :0;
padding-left: 5px;}

.tc-drop-down dl
{
padding: 5px;
}

tc-drop-down a {display:inline;padding:0}
<ul>
  <$list filter="[tag[Project]!sort[modified]]">
    <li>
		<$link><$view field="title"/></$link>
        <$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
        <$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>
</li>
  </$list>
</ul>


<$list filter="[list[!!quote]]">
@@.quoteblock <<currentTiddler>>@@
</$list>



增加一个样式:[[Quote Block Stylesheet]]

Create a new tiddler. Add a field named "quote" and its content as "世界是一个垃圾场."

Finally to the text area of the same tiddler, add the following code.


```
<$list filter="[list[!!quote]]">
@@.quoteblock <<currentTiddler>>@@
</$list>
```

.quoteblock {
	color: #f2f2f2;
	background: #ff4a4a;
	font-size: 75px;
	line-height: 1.7;
	font-weight: 700;
	margin: 0 5px 24px;
	padding: 10px;
	margin: 0 5px 24px;
	font-family: 'Libre Baskerville', Georgia, serif;
}
<<list-links "[tag[Reading]]">>



<<<.tc-big-quote
 ''Reading isn't about the destination, it's about the journey.''
<<<

<<tabs "[[Most Recent Journal]] [[Journal]] [[2021年读书日志]] [[2020年读书日志]] [[2019年读书日志]] [[2018年读书日志]] [[2017's Journal]] [[Thought Framework]] [[文言津逮系列]] [[Laws of reading]] [[博物志]] [[System update log]] [[Λ-Reading]]" default:"Most Recent Journal" class:"tc-vertical">>

 


<$reveal type="nomatch" state="$:/state/CredReveal1" text="show">

<$button set="$:/state/CredReveal1" setTo="show">点击展开</$button>

</$reveal>
<$reveal type="match" state="$:/state/CredReveal1" text="show">

<$button set="$:/state/CredReveal1" setTo="hide">点击隐藏</$button>

<iframe src="https://rizibox.herokuapp.com" style="width: 100%; height: 600px;"></iframe> 

</$reveal>


新窗口打开<a href="https://rizibox.herokuapp.com" target="_blank">Λ-Reading
 Box</a> @@color:Grey;^^'' 自用,请勿外链''^^@@
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
''Serial-position Effect''

It is defined as our tendency to remember first and last thing well, forgetting all the middle items.

''Example:''

Researchers have shown that when participants are presented with a list of words, they tend to remember the first few and last few words and are more likely to forget those in the middle of the list。

''Takeaways:''

* In Marketing, Place your most important messages either first or last.
* If the prospect has to decide within more than a minute after exposure to information, place the most important information first. 
* If they have to decide as soon as possible, place the most important information last.

''References & Studies:''

* https://sempioneer.com/the-serial-position-effect/#Your_List_Information_Order_Matters
* https://www.simplypsychology.org/primacy-recency.html

! 脚本
1、一键安装 Shadowsocks-Python, ShadowsocksR, Shadowsocks-Go, Shadowsocks-libev 版(四选一)服务端;

2、各版本的启动脚本及配置文件名不再重合;

3、每次运行可安装一种版本;

4、支持以多次运行来安装多个版本,且各个版本可以共存(注意端口号需设成不同);

5、若已安装多个版本,则卸载时也需多次运行(每次卸载一种);

! 配置

服务器端口:自己设定(如不设定,默认从 9000-19999 之间随机生成);

密码:自己设定(如不设定,默认为 teddysun.com);

加密方式:自己设定(如不设定,Python 和 libev 版默认为 aes-256-gcm,R 和 Go 版默认为 aes-256-cfb);

协议(protocol):自己设定(如不设定,默认为 origin)(仅限 ShadowsocksR 版);

混淆(obfs):自己设定(如不设定,默认为 plain)(仅限 ShadowsocksR 版);

备注: 脚本默认创建单用户配置文件,如需配置多用户,请手动修改相应的配置文件后重启即可

! 服务器安装方法

使用root用户登录,运行以下命令:

```
[root@localhost ~]# wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh

[root@localhost ~]# chmod +x shadowsocks-all.sh


[root@localhost ~]# ./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log
```
([[此脚本|https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh]]基于秋水之脚本,如果失效请[[告知|Jerry]],逗比脚本请索取)

!! 安装完成后,脚本提示如下


```
Congratulations, your_shadowsocks_version install completed!
Your Server IP        :your_server_ip
Your Server Port      :your_server_port
Your Password         :your_password
Your Encryption Method:your_encryption_method

Your QR Code: (For Shadowsocks Windows, OSX, Android and iOS clients)
 ss://your_encryption_method:your_password@your_server_ip:your_server_port
Your QR Code has been saved as a PNG file path:
 your_path.png

Welcome to visit:https://teddysun.com/486.html
Enjoy it!
```
! 卸载方法

若已安装多个版本,则卸载时也需多次运行(每次卸载一种),使用root用户登录,运行以下命令:


```
./shadowsocks-all.sh uninstall
```

! 启动脚本

启动脚本后面的参数含义,从左至右依次为:启动,停止,重启,查看状态。

Shadowsocks-Python 版:

```
/etc/init.d/shadowsocks-python start | stop | restart | status
```
Shadowsocks-libev 版:

```
/etc/init.d/shadowsocks-libev start | stop | restart | status
```


! 各版本默认配置文件
Shadowsocks-Python 版:
/etc/shadowsocks-python/config.json

ShadowsocksR 版:
/etc/shadowsocks-r/config.json

Shadowsocks-Go 版:
/etc/shadowsocks-go/config.json

Shadowsocks-libev 版:
/etc/shadowsocks-libev/config.json
\define slider(label)
<$button popup="$:/state/$label$" class="btn-invisible tw-slider"><$reveal type="match" text="" default="" state="$:/state/$label$">&#x229E;</$reveal><$reveal type="nomatch" text="" default="" state="$:/state/$label$">&#x229F;</$reveal> {{$label$||unwikified}}</$button>
<$reveal type="nomatch" text="" default="" state="$:/state/$label$" animate="yes">
<br>
<$transclude/>
</$reveal>
\end

<$macrocall $name="slider" label={{!!title}}/>
<<<
''重在道而不再术!''
<<<

<$list filter="[field:topic[系统更新]]+[!sort[created]]">

<$link> <$view tiddler=<<currentTiddler>> field=title/> </$link>  
@@color:gray;  <$view field="description"/> - //<$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM0hh12:0mm:0ss"/> // @@
<$list filter="[<currentTiddler>days[-3]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-10]!days[-3]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:gray;^^近期^^@@</$list>

<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>




"""
<<fa fa-file-text-o>> [[读书日志|Reading Logs]]
<<fa fa-book>> [[书籍管理|Library]]
<<fa fa-cube>> [[认知哲学|Thought Framework]]
<<fa fa-cogs>> [[工具其它|Others]]
<<fa fa-tags>> [[标签云集|TagCloud]]
<<fa fa-info-circle>> [[使用说明|About]]
<<fa fa-envelope>> [[Λ-Reading]]

[img width=8% [RIZI-black.png]]
\define link(showcount: none) <span style="display: inline-block">@@font-size: calc(0.6em + $(count)$px / 2); <$link><$text text=<<title>> /></$link>@@ @@font-size: 0.6em;display: $showcount$; (<<count>>)@@</span>

<$edit-text tag=input type=range tiddler="$:/temp/cloud/range"/> {{$:/temp/cloud/range}} &nbsp;
<$checkbox
  tiddler="$:/state/tag-cloud-count"
  field=text
  checked=inline
  unchecked=none
> show count</$checkbox>

@@text-align: center;
<$list filter="[tags[]!is[system]]">
<$list filter="[all[current]tagging[]rest{$:/temp/cloud/range}first[]]" variable=_>
<$vars
    title={{{ [all[current]] }}}
    count=
{{{ [all[current]tagging[]count[]] }}}
>
<$macrocall $name=link showcount={{$:/state/tag-cloud-count}} />
</$vars>
</$list>
</$list>
@@
Outstanding & Due
<$macrocall $name=table-dynamic filter="[tag[Task]!tag[Done]!tag[已读]]" fields="tbl-checkbox tbl-expand title author genre created due" class="w-100" stateTiddler="your-state-tid"/>


<$button message="tm-close-tiddler">Close Me!</$button>


<ul>
  <$list filter="[tag[Temp]!<currentTiddler>!sort[created]]">
    <li>
		<$link><$view field="title"/></$link>
     <$list filter="[<currentTiddler>days[-7]]"> @@color:red;^^新^^@@</$list>
        <$list filter="[<currentTiddler>days[-30]!days[-8]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-31]]"> @@color:gray;^^近期^^@@</$list>
<$list filter="[<currentTiddler>days[-730]!days[-365]]"> @@color:gray;^^去年^^@@</$list>
</li>
  </$list>
</ul>


<<list-links "[tag[Thinking]]">>
以下是[[Hurricane Capital|https://hurricanecapital.wordpress.com/]] 所总结的查理·芒格 <<footnote "注" "美国投资家,沃伦·巴菲特的黄金搭档。波克夏·哈萨威公司的副董事长,董事长由沃伦·巴菲特担任。">> 的思维模型。


<<<
“你必须知道所有重要学科的重要理论,并经常使用它们。要全部都用上,而不是几种,大多数人都只学过一个学科的思维模型,比如说经济学,试图用一种方法来解决所有问题。你知道谚语所说:在拿着铁锤的人看来,世界就是一颗钉子。这是处理问题的一个笨方法。”  ---查理·芒格《穷查理宝典》
<<<

芒格在多次的演讲中谈及“基础的处世智慧”的概念。芒格的处世智慧包括了一系列的思维模型,每个模型之间相互联系,彷如悬挂在格栅的每个交点上,用以解决关键的商业问题。

<<<
你若想要成为拥有普世智慧的人,只要80或90个重要模型就能承担起这一重担的90%左右。并且,其中至关重要的模型屈指可数。 ——查理·芒格,南加州大学商学院,1994年
<<<


!! 思维模型:定律或效应
<<textSliderNoButton "定律或效应" 
"* [[决策过程|Decision theory]]
* [[经济学]]
* [[管理科学]]
* [[心理学]]
* [[物理学]]
* [[数学]]
* [[统计学]]
*[[博弈论]]
* [[其它|其它思维模型]]
" >>




返回:[[Thought Framework]] 

<$button message="tm-close-tiddler">Close Me!</$button>

!! 定律或效应相关阅读笔记:
<$list filter="[field:topic[Thinking Models]] +[!sort[created]]">

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  @@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> @@  - <$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/>  
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-60]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-60]]"> @@color:gray;^^有点久了^^@@
</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>


<<<.tc-big-quote
思维模式建立的目的是为了更接近事物的本质,并提出正确的解决方案。
<<<

* [[思维科学|Thought Framework Management]]
**个人思维
***思维模型
***# 思维学:逻辑思维、形象思维和创造思维
***# [[科学思维模型|Thinking Models]]
***# 思维模型的建立
***##[[信息收集和学习|PKM]]
***##科学分析问题的方法:定律和方法论
***##思考--综合并思维模型初步的建立
***##检验--完整性和逻辑性
***##实践
***##修正和再学习
***思维盲区
**#[[认知错觉|建立自己的思维框架,避免认知错误陷阱]]
**#知识缺陷
***固有思维(非实证性的因素,系统1)
**#成见
**#偏激
**#利我性筛选
**社会思维
**思维的生理机制
***思维规律
***#人工智能
***[[思维系统|思考快与慢]]
***#快思考--- 系统1
***##本能性思考
***##输出:印象、直觉、意向、联想和感觉等
***##无法强行关闭(系统性缺陷)
***#慢思考--- 系统2
***##自我控制能力
***##输出:按照[[思维框架|Thinking Models]]运行
***##身体参与并消耗体能
**[[决策论|Decision theory]]

* [[Cognitive science]]

!! 关于认知科学的阅读书目:

<$details summary="相关书目">

<$list filter="[field:genre[认知哲学]] +[!sort[created]]">

《<$link><$view tiddler=<<CurrentBook>> field='title'/></$link>》</$list>
</$details>


!!思维模型:

[[Thinking Models]] 

!! 认知科学阅读笔记:

<$list filter="[field:topic[Thought Framework]] [tag[Thought Framework]] +[!sort[created]]">

<$link><$view tiddler=<<currentTiddler>> field=title/> </$link>  @@color:gray; <$view field="book_title"/> - <$view field="description"/>  - <$view field="caption"/> @@  - <$view field="created" format="date" template="YYYY年0MM月0DD日DDDPM 0hh12:0mm:0ss"/>  
<$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
<$list filter="[<currentTiddler>days[-60]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-60]]"> @@color:gray;^^有点久了^^@@
</$list>
<$details tiddler="DetailsWidget" open="no">

<$transclude/>

</$details>
<<<@@background-color:yellow;
思维模式建立的目的是为了更接近事物的本质,并提出正确的解决方案。@@
<<<

!!思维科学

思维框架管理(Thought Framework Management)之于“思维科学”(noetic science),南叶青最早提出来,他把自然、社会和思维三种现象放在同一层面上进行了严格的界定,然后指出,自然、科学和思维的根本区别就在于''“自然现象是不经过人的行为就已经存在的,社会现象是要经过人的行为才能够存在的。思维现象是未经过人的行为,因而未外化成事实的观念作用和观念形态”''。在国外,思维科学也叫
认知科学(cognitive sciences)。

!! 思维科学研究主要内容
1.思维的生理机制。2.个人思维、社会思维;抽象思维,形象思维及灵感思维的具体规律及其关系。3.思维规律的具体应用。思维科学理论体系包括基础科学、技术科学和应用科学3个部分,涉及哲学,逻辑学、心理学、思维生理学、脑科学、人工智能、计算机软件工程等广泛学科和领域。

总之,''思维科学是关于人脑对信息处理的研究'',从信息处理的角度看,人脑与电脑相结合是非常自然的,它们都是作信息处理的。

!! 思维模型的建立
我们对一件事物的处理指令主要来自于我们大脑对事物的分析判断结果,而这个判断关键性数据又来自于我们对外部数据的采集,换句话说,就是我们看问题的角度,看问题的角度主观、客观或者多重角度,这些输入大脑数据原始数据决定了输出结果最终又多接近事务的本质。所以,建立自我自我思维模型,要从正确的原始数据来源、数据之间的逻辑关系、(还有什么那?待研究)几方面进行综合分析,一旦形成这样的思考方法,就逐渐建立起来了自己独有的思维模式。

不同科学领域有不同的科学实践模型,换句话说是不同的思维模型,一些模型是被验证过的,被称之为原则、法则、定律等。

见:{{Thinking Models||slider}}

!!!看问题的角度:
主观思维、对立面思维、客观思维(第三方思维)和上地视角思维。(还有什么角度吗?)

!!!事物和外界的逻辑关系:
万物和外界的逻辑关系都可以分为:不可改变、可以改变和动态变化。
所以,我们在做出解决办法时候,就要从后两者下手,企图达到改变事务的目的。

!!!思维盲区解决办法
知识量愈大,盲区愈大。对待超出自我认知能力的事务判断力所能及的是做到最大可能接触到事务本质。''假设和穷举''未尝不是一个好办法。假设,准确的说假设是一直思维机制。(人做判断的时候有两种机制:一种是“科学家机制”,先有证据再下结论;一种是“律师机制”,先有了结论再去找证据),世界上科学机制的人很少,每个人都爱看能印证自己已有观念的东西。我们不但不爱看,而且还会直接忽略那些不符合我们已有观念的证据。所以对于未知探究,假设就是一种很好的办法。穷举,则是尽量可能的罗列,然后核对检查。


<<<
''认为凡事都有目的,是普通人思维区别于科学思维的根本之一。''

<<<

待续
<<list-links "[tag[Tips]]">>
<ul>
  <$list filter="[tag[Tools]!sort[created]]">
    <li>
		<$link><$view field="title"/></$link>
        <$list filter="[<currentTiddler>days[-10]]"> @@color:red;^^新^^@@</$list>
        <$list filter="[<currentTiddler>days[-30]!days[-10]]"> @@color:orange;^^最近^^@@</$list>
<$list filter="[<currentTiddler>days[-365]!days[-30]]"> @@color:gray;^^近期^^@@</$list>
</li>
  </$list>
</ul>

* [[Tiddlywiki 资源收集|https://dynalist.io/d/zUP-nIWu2FFoXH-oM7L7d9DM]]
* 实验性:[[Demo|https://rizi.me/demo.html]] 或 [[Demo|http://one.rizi.me/TiddlyWiki Demo/]] 


<$button message="tm-close-tiddler">Close Me!</$button>
\rules except list  加在$:/tags/Stylesheet标签下生效

.tc-editor-toolbar{ position:fixed; top:0; left:0; right:0; padding:5px; background-color: black; }

Code

```
<$wikify name=nottransclude text={{{[[Discover TiddlyWiki]get[text]split[! ]nth[3]]}}} >

<<nottransclude>>
</$wikify>
```
 For example:


<$wikify name=nottransclude text={{{[[Λ-Reading]get[text]split[! ]nth[2]]}}} >

<<nottransclude>>
</$wikify>

The Text form:[[Λ-Reading]]
新增查看和修改`fields`插件,包含文件:

$:/plugins/.mr/shiraz/pagecontrol/view-fields

$:/plugins/.mr/shiraz/images/view-fields.svg

$:/plugins/.mr/shiraz/viewtemplate/view-fields

主要功能:
点击页面工具栏的{{$:/plugins/.mr/shiraz/pagecontrol/view-fields}}图标,即可快速显示和修改`fields`。


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AUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUAFJtGc0tFACYHWloooAKKKKAP/U8nooor/O8/wnCiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooA//9Xyeiiiv87z/CcKKKKACiiigAooooAKKKKACiiigAooooAKKKKaAKKKKv2YBRSDvS1DAKKQ9qWqjG4BRRSDqaJRsAtFFFQAUUUUAFFFFABRRRQAUUUUAFFFFABRRRQAUUUUGigFFIelLQTJWCiiigkKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKCoq4UUUUFezCiiigPZhRSDqaWghhRRRQIKKKavf60FRVx1FFFBXswooooD2YUUUVooEMKKKKmSsVGNwoopB1NSEo2FooooICiiigAooooAKKKKACiiigAooooA//W8nooor/O8/wnCiiigAooooAKKKKACiiigAooooAKKKKACiiimtwCiiitwEHU0tIOppawe4BRRRSAKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooM3NhRRRQVF3CiiigoKKKKACiiigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKCZOwUUUUEe0YUUUUB7RhRRRQaIKKKKBhS4J6UlSp0oAjw1GGqeigCDDUlWKr0EylYKKKKBoKKKKDaGwUg6mlpB1NAT2FooooMgooooAKKKKACiiigAooooAKKKKAP//Z
<div class="card text-white bg-success mb-3 shadow-lg" style="max-width: 18rem;">
  <div class="card-header">Wechat pay</div>
  <div class="card-body">
    <span class="h5 card-title"></span>
    <p class="card-text">[img[WeChatpay.jpg]]</p>
  </div>
</div>
<$transclude mode="block" tiddler=bookinfo/>
<iframe width="780px" height= "700px" src= "https://forms.office.com/Pages/ResponsePage.aspx?id=VIwy2_GOiEa-VdcIU10AJ_jKLTF5MW1JmqVdTmBOHW1UODI3QjAySE1JN1JONkM5TzdYVkI0VEZDUy4u&embed=true" frameborder= "0" marginwidth= "0" marginheight= "0" style= "border: none; max-width:100%; max-height:100vh" allowfullscreen webkitallowfullscreen mozallowfullscreen msallowfullscreen> </iframe>
<$transclude mode="block" tiddler=bookinfo/>
!! ''Λ-Reading Newsletter''

[img[https://rizibox.herokuapp.com/TEMP/Λ-Reading.png]]

“''Λ-Reading'' ”是一份阅读通讯,每周 1-2 期。主要内容包括但不限于书和阅读、好书提纯阅读、认知科学、科技哲学、新科技以及其它给生活带来一丝美好的事物。

!! ''话题选择标准:''

☑ 引发思考一点点;

☑ 拓展认知边界一点点;

☑ 增加快乐多一点点。



!! ''订阅:''
<center>
<iframe src="https://rizime.substack.com/embed" width="480" height="320" style="border:1px solid #EEE; background:white;" frameborder="0" scrolling="no"></iframe></center>

//在上面输入您的 Email即可。如果上面输入框内容不显示(因墙),请前往<a href="https://forms.office.com/Pages/ResponsePage.aspx?id=VIwy2_GOiEa-VdcIU10AJ_jKLTF5MW1JmqVdTmBOHW1UMkQwMThXODlHSkhBN1pKN0w2UjlLVlUySy4u" target="_blank">这里免翻墙</a>订阅。// 

如果您觉得不错,请支持[[收费订阅|Payment]]。

---
!! ''往期回顾:''

* [[#72 圣诞节快乐之是非信仰|https://rizime.substack.com/p/72]]
* [[#71 让人吃惊的可视化力量和“年度感悟”|https://rizime.substack.com/p/71]]
* [[#70 相关与因果及纠缠认知和“年度感悟”|https://rizime.substack.com/p/70]]
*[[ #69 “吹哨者”科学和伦理分析与“年度感悟”|https://rizime.substack.com/p/69]]
* [[#68 “困境”与”年度感悟“|https://rizime.substack.com/p/68]]
*  [[#67 人生诡局和努力并不能让您达到巅峰|https://rizime.substack.com/p/67]]
*  [[#66 那个推石上山的傻蛋 — 悖论和人生|https://rizime.substack.com/p/66]]
*  [[#65 认清它,可以少犯80%的错误|https://rizime.substack.com/p/65]]
*  [[#64 三个案例和一个段子|https://rizime.substack.com/p/64]]
*  [[#63 色情,别说!(二)|https://rizime.substack.com/p/63]]
*  [[#62 色情,别说!(一)|https://rizime.substack.com/p/62]]
*  [[#61 认知随笔之思维框架|https://rizime.substack.com/p/61]]
*  [[#60 一本书,一种极致体验:极度恐惧|https://rizime.substack.com/p/60]]
*  [[#59 一本书,一种极致体验:极度疲惫|https://rizime.substack.com/p/59]]
*  [[#58 马云们。这些亿万富翁到底做了些什么?|https://rizime.substack.com/p/58]]
*  [[#57 从系统动力学到深度思考|https://rizime.substack.com/p/57]]
*  [[#56 由蜜蜂的民主看美国的选举|https://rizime.substack.com/p/fe1]]
*  [[#55 彩票的规律以及混沌创造随机|https://rizime.substack.com/p/fca]]
*  [[#54 两个故事,技术和运气以及不确定之美|https://rizime.substack.com/p/f2b]]
*  [[#53 记忆力终极手册|https://rizime.substack.com/p/f2e]]  
**  [[完整版|https://rizime.substack.com/p/ce4]]
*  [[#52 为什么感觉时间会过的快?|https://rizime.substack.com/p/--7ed]]
*  [[#51 一本好书|https://rizime.substack.com/p/--3aa]]
*  [[#50 毒物兴奋效应和密码破解|https://rizime.substack.com/p/--dc4]]
*  [[#49 大漠悲歌 艽野尘梦|https://rizime.substack.com/p/--bae]]
*  [[#48 Λ-Reading 前50期内容分类目录|https://rizime.substack.com/p/-reading-50]]
* [[#47 未来我们都会生活在系统中,受其驱使、控制和奴役|https://rizime.substack.com/p/--3eb]]
* [[#46 我因为长得不漂亮所以结不了婚|https://rizime.substack.com/p/8ca]]
* [[#45 延续百年的智识方案已经全部玩完了|https://rizime.substack.com/p/c52]]
* [[#44 要想提高你的开放性,请尝试花时间凝视星空吧!|https://rizime.substack.com/p/5bf]]
* [[#43 开门,放世界进来|https://rizime.substack.com/p/--0d8]]
* [[#42 怎么阅读更多的书?|https://rizime.substack.com/p/--c41]]
* [[#41 怎么一目十行读书|https://rizime.substack.com/p/--5d7]]
* [[#40 如何怼杠精和键盘侠? |https://rizime.substack.com/p/cb9]]
* [[#39 人类思维中最致命的错误|https://rizime.substack.com/p/e7b]]
* [[#38 横跨数百万年惊天动地的力量|https://rizime.substack.com/p/4a1]]
* [[#37 “新鸦片战争”和为什么人类喜欢对称?|https://rizime.substack.com/p/1b8]]
* [[#36 “神书”和让我们用墒来解释一下世界|https://rizime.substack.com/p/95a]]
**  [[#36.1 墒理论与应用|https://rizime.substack.com/p/86e]]
* [[#35  内循环和您会给国家领导人推荐什么书?|https://rizime.substack.com/p/2fe]]
**  [[#35.1 什么书是你自愧还没读过的?|https://rizime.substack.com/p/--a85]]
* [[#34  洪灾和打破大数据的魔法|https://rizime.substack.com/p/ba4]]
* [[#33  “315”和应对信息过载的办法|https://rizime.substack.com/p/315]]
* [[#32 知识付费和哪些科学观点必须去死|https://rizime.substack.com/p/14d]]
**  [[#33.1  哪些科学观点必须去死-二|https://rizime.substack.com/p/-]]
* [[#31 读书笔记和两个著名实验|https://rizime.substack.com/p/897]]
* [[#30 魔幻现实和再谈随机性|https://rizime.substack.com/p/f8e]]
* [[#29 科技道德、权利以及即随机性三法则|https://rizime.substack.com/p/42e]]
* [[#28 世界运行的超然力量和荒谬权利|https://rizime.substack.com/p/5fe]]
* [[#27 路径依赖、信息过载和信息茧房|https://rizime.substack.com/p/140]]
* [[#26 号外:知识管理工具|https://rizime.substack.com/p/d28]]
* [[#25 这里蕴涵着世界和灵魂的救赎|https://rizime.substack.com/p/beb]]
* [[#24 离婚率和指涉性悖论|https://rizime.substack.com/p/6e3]]
*[[#23 一场思维实验|https://rizime.substack.com/p/ef7]]
*[[#22 逮捕率上升130%和未知的焦虑|https://rizime.substack.com/p/130]]
*[[#21 人脑思维缓冲区溢出攻击|https://rizime.substack.com/p/700]]
*[[#20  一勺钻石和苍蝇王|https://rizime.substack.com/p/12a]]
*[[#19 路径依赖和困扰计算机的简单问题|https://rizime.substack.com/p/f08]]
*[[#18 从巴菲特讲话中你应该知道的|https://rizime.substack.com/p/-reading-265]]
*[[#17 2 部电影和 1 本书|https://rizime.substack.com/p/-reading2-1-]]
*[[#16 3本书和1 首冥想曲|https://rizime.substack.com/p/-reading31-]]
*[[#15 为什么大多数独裁者最后都自我毁灭|https://rizime.substack.com/p/-reading-581]]
*[[#14 一本正经的胡说八道|https://rizime.substack.com/p/-reading-8df]]
*[[#13 杀死我们的将是饥饿,而不是新冠病毒|https://rizime.substack.com/p/-reading-d5f]]
*[[#11 大者愈大!|https://rizime.substack.com/p/-reading-ad8]]
*[[#10 微信图片过滤审查功能的分析|https://rizime.substack.com/p/-reading-132]]
*[[#9 后疫情时代的常态|https://rizime.substack.com/p/-reading-ce5]]
*[[#8 从民族主义到个体信息论|https://rizime.substack.com/p/-reading-9e6]]
*[[#7 中国对刺激经济复苏计划犹豫不决|https://rizime.substack.com/p/-reading-8be]]
*[[#6 六大科技定律|https://rizime.substack.com/p/-reading-cfb]]
*[[#5 活着这一长期的习惯使我们不愿死亡|https://rizime.substack.com/p/-reading-736]]
*[[#4 Λ-Reading:谁来支撑中国经济|https://rizime.substack.com/p/-reading-567]]
*[[#3 世界变化的趋同性|https://rizime.substack.com/p/-reading-745]]
* [[#2 中国今年的经济增长率预计仅为2%|https://rizime.substack.com/p/-reading2]]
* [[#1 没有谁是一座孤岛|https://rizime.substack.com/p/-reading-8be]]



\rules except list  首页展示

<span title="Read the Word,Read the World."><a href="#Λ-Reading"><img style="float: none; margin-left: auto;align:center;display:block; margin-right: auto" src={{!!url}}  width=100%></a>
</span>

<center>My website @@color:red;^^Λ^^@@ is a shifting house next to a river of knowledge.

<div style="font-size:0.7em;text-align:center;margin-top:3em;margin-bottom:3em;">
<a href="#Reading Logs" class="tc-btn-big-green" style="background-color:#37112f;" rel="noopener noreferrer">
<<fa  "fa-book">> Reading Journal</a>

<a href="#Library" class="tc-btn-big-green" style="background-color:#5f0031;" rel="noopener noreferrer">
<<fa "fa-university">> Library Tracker
</a>
<a href="#Thought Framework" class="tc-btn-big-green" style="background-color:#91002e;" rel="noopener noreferrer">
<<fa "fa-spin fa-snowflake-o">> Cognitive Philosophy 
 </a>
<a href="#Others" class="tc-btn-big-green" style="background-color:#e21231;" rel="noopener noreferrer">
<<fa "fa-free-code-camp">> Tools & Tips
</a>
<a href="#Λ-Reading" class="tc-btn-big-green" style="background-color:#ff3125;"  rel="noopener noreferrer">
<<fa "fa-comment-o">> Λ-Reading Newsletter
</a> 
</div>